天天看點

Spark-ML-資料擷取/處理/準備

注意:

Spark 1.2.0引入了一個實驗性質的新MLlib API,位于ml包下(現有的接口 則位于mllib包下)。新API旨在加強原有的API和接口的設計,進而更容易銜接 資料流程的各個環節。這些環節包括特征提取、正則化、資料集轉化、模型訓練 和交叉驗證。

新API仍處于實作階段,在後續的版本中可能會出現重大的變更。是以,後 續的章節将隻關注相對更成熟的現有MLlib API。随着版本的更新,本書所提到 的各種特征提取方法和模型将會簡單地橋接到新API中。但新API的核心思路和 大部分底層代碼仍會保持原樣。

使用者資料

電影資料

評級資料

過濾掉或删除非規整或有值缺失的資料:這通常是必須的,但的确會損失這些資料裡那 些好的資訊。

填充非規整或缺失的資料:可以根據其他的資料來填充非規整或缺失的資料。方法包括 用零值、全局期望或中值來填充,或是根據相鄰或類似的資料點來做插值(通常針對時 序資料)等。選擇正确的方式并不容易,它會因資料、應用場景和個人經驗而不同。

對異常值做魯棒處理:異常值的主要問題在于即使它們是極值也不一定就是錯的。到底 是對是錯通常很難分辨。異常值可被移除或是填充,但的确存在某些統計技術(如魯棒 回歸)可用于處理異常值或是極值。

對可能的異常值進行轉換:另一種處理異常值或極值的方法是進行轉換。對那些可能存 在異常值或值域覆寫過大的特征,利用如對數或高斯核對其轉換。這類轉換有助于降低 變量存在的值跳躍的影響,并将非線性關系變為線性的。

數值特征(numerical feature):這些特征通常為實數或整數,比如之前例子中提到的年齡。

 類别特征(categorical feature):它們的取值隻能是可能狀态集合中的某一種。我們資料 集中的使用者性别、職業或電影類别便是這類。

 文本特征(text feature):它們派生自資料中的文本内容,比如電影名、描述或是評論。

注意:

 其他特征:大部分其他特征都最終表示為數值。比如圖像、視訊和音頻可被表示為數值 資料的集合。地理位置則可由經緯度或地理散列(geohash)表示。

Spark支援Scala、Java和Python的綁定。我們可以通過這些語言所開發的軟體包,借助其中完 善的工具箱來實作特征的處理和提取,以及向量表示。特征提取可借助的軟體包有scikit-learn、gensim、scikit-image、matplotlib、Python的NLTK、Java編寫的OpenNLP以及用Scala編寫的Breeze和Chalk。實際上,Breeze自Spark 1.0開始就成為Spark的一部分了。後幾章也會介紹如何使用Breeze

的線性代數功能。

MovieLens 100k資料集