Spark MLlib---邏輯迴歸與決策樹

1、Spark MLlib的簡介

機器學習可以看做是一門人工智能的科學,該領域的主要研究對象是人工智能。機器學習利用數據或以往的經驗,以此優化計算機程序的性能標準。

機器學習強調三個關鍵詞:算法、經驗、性能

用算法對數據進行訓練以後得到的才叫模型。

傳統的機器學習算法,由於技術和單機存儲的限制,只能在少數數據上使用,依賴於數據的抽樣。由於大數據技術的出現,現在有了海量的存儲空間,以及非常豐富的計算能力,就不需要進行抽樣,完全可以在全量數據上進行機器學習。

機器學習算法涉及大量的迭代計算,可以使用MapReduce進行機器學習,但MapReduce有很個大的缺陷,它是基於磁盤的計算框架,會經常發生讀寫磁盤,每個MapReduce結束之後,都會寫入磁盤。若遇到迭代計算,每次迭代都會寫入磁盤,從而造成磁盤讀寫開銷非常大。而Spark是基於內存的計算框架,它使用有向無環圖的機制,讓我們的操作數據儘量不落入磁盤中,儘量在內存中完成數據的握手,一個操作的輸出,馬上作爲另一個操作的輸入。這樣Spark就避免了頻繁的讀寫磁盤開銷,故Spark非常適合機器學習。

Spark提供了一個基於海量數據的機器學習庫,提供了常用的機器學習算法的分佈式實現。這些算法之前都是單機版的,Spark實現了分佈式的算法,這樣可以集羣的方式,幫助大大提升運行的能力。對於使用者來說,只需要基本的Spark編程基礎,並且能夠簡單地理解機器學習算法的原理,以及相關參數的含義,就能相應輕鬆地調用Spark提供的相應API,實現基於海量數據的機器學習過程。同時pyspark的即席查詢也是一個關鍵,使用者可以編寫代碼邊觀察結果,從而提高開發能力。

但是需要注意的是並不是所有機器學習算法都能用在Spark當中,只有那些能夠被改造成集羣式算法,或能夠在集羣中分佈式並行計算的算法,才能拿來進行改造,得到Spark。有些算法是不能改造的,只能有單機版,沒辦法進行並行的。

MLlib包含以下幾大部分:

算法工具:分類、迴歸、聚類、協同過濾

特徵化工具:特徵提取、特徵轉化、特徵降維、特徵選擇工具

流水線工具:pipeline(用來構建、評估機器學習工作流)

持久性:保存算法、加載算法、模型、管道

實用性工具:線性代數、統計、數據處理等等

不同版本的Spark裏面所包含的庫是不一樣的,現有spark.mllib和spark.ml包

現spark已實現的算法:

 

2、機器學習流水線

在學習機器學習流水線之前,我們先了解下DataFrame。較之RDD,DataFrame包含schema信息,更類似傳統數據庫的二維表格使用spark SQL中的DataFrame作爲數據集,它可以容納各種數據類型。它被ML Pipeline用來存儲源數據。例如,DataFrame中的列可以是存儲的文本,特徵向量,真實標籤和預測的標籤等。

轉換器:將一個DataFrame轉換爲另一個DataFrame

評估器:可以理解爲算法

參數:

PipeLine:流水線,將多個工作流階段連接到一起形成機器學習工作流,並獲得輸出結果。多個階段即指我們定義好的轉換器和評估器。

構建流水線

值得注意的是:流水線本身也可以看着是一個估計器。在流水線的fit()方法運行之後,它產生一個PipeLineModel,它是一個Transformer。這個管道模型將在測試數據的時候使用,用來預測從數據。

 

3、特徵提取:TF-IDF

TF-IDF:詞頻-逆向文件頻率,詞語由t表示,文檔由d表示,語料庫由D表示。詞頻TF(t,d)是詞語t在文檔d中出現的次數。文件頻率DF(t,D)是包含詞語t的文檔個數。

TF:HashingTF是一個轉換器Transformer,在文本處理中,接收詞條的集合然後把這些集合轉換爲固定長度的特徵向量。這個算法在哈希的同時會統計各個詞條的詞頻。

IDF:IDF是一個估計器Estimator,在一個數據集上應用它的fit()方法,產生一個IDFModel。該IDFModel接收特徵向量(由HashingTF產生),然後計算每一個詞在文檔中出現的頻次。IDF會減少那些在語料庫中出現頻率較高的詞的權重。

2000個哈希桶,[240,333,1105,1329,1357,1777]分別表示每個單詞被哈希後放入號碼爲240、333等的哈希桶裏,後面的1,2等分別表示單詞的詞頻。

4、特徵抽取:Word2Vec

在機器學習處理過程中,爲了方便相關算法的實現,經常需要把標籤數據(一般是字符串)轉化成整數索引,或是在計算結束後將整數索引還原爲相應的標籤。

Spark ML包中提供了幾個相關的轉換器,例如:StringIndexer、IndexToString、OneHotEncoder、VectorIndexer,它們提供了十分方便的特徵轉換功能,這些轉換器類都位於org.apache.spark.ml.feature包下。

值得注意的是,用於特徵轉換的轉換器和其他的機器學習算法一樣,也屬於ML Pipeline模型的一部分,可以用來構成機器學習流水線,以StringIndex爲例,其存儲着進行標籤數值化過程的相關超參數,是一個Estimator,對其調用fit(...)方法即可生成相應的模型StringIndexModeler類,很顯然,它存儲了用於DataFrame進行相關處理的參數,是一個Transformer(其他轉換器也是同一個原理)

5、Logistic Regression

Logistic Regression是統計學中的經典分類算法,屬於對數線性模型。其因變量可以是二分類的也可以是多分類的。

實例:

6、決策樹分類器

實例:

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章