MLlib是spark的機器學習庫,其目的是使得機器學習算法更容易使用和擴展。MLlib包含分類、迴歸、聚類、協同濾波、降維,以及更低層級的優化原語和更高層級的管道API。MLlib分紅兩個包:spark.mllib包含創建在RDD之上的原始API,spark.ml提供了創建在DataFrames之上的更高層級的機器學習管道API。推薦使用spark.ml,由於DataFrames使得API更加通用和靈活。 算法
下面連接是本人作的一個關於半監督式學習的ppt
半監督學習ppt 數組
MLlib數據類型
- MLlib支持保存在本地的,或者由RDD所表示的分佈式向量和矩陣。代數運算由Breeze和jblas庫支持。在監督式學習中,一個訓練樣本稱爲:a labeled point
- 本地向量:元素爲double類型,向量下標索引從0開始的int整數;支持dense和sparse兩種類型。dense 向量由一個double數組保存向量中全部的值;sparse向量由兩個並行的數組支持,分別保存索引和值。類繼承關係:Vector -> (DenseVector, SparseVector)
- LabeledPoint:包括一個本地向量(能夠是dense vector或者sparse vector),和給該向量打上的標籤。標籤採用double類型保存,因此LabeledPoint可用於分類和迴歸問題中。對於二值分類問題,標籤要麼爲0,要麼爲1;對於多類問題,標籤爲從0開始的整數:0,1,2,...。實際問題中常常遇到訓練數據稀疏的狀況,MLlib支持從LIBSVM文件加載數據,構造LabeledPoint
- 本地矩陣:元素值爲double類型,行列索引爲int類型;支持dense和sparse矩陣。dense矩陣採用一個double數組,按照列主序保存數組;sparse矩陣採用CSC(Compressed sparse column)格式,以列主序保存矩陣中非零元素。Matrix -> (DenseMatrix, SparseMatrix)
- 分佈式矩陣:採用long類型保存行列索引,元素值依然是double類型,分佈式保存在一個或者多個RDD之中。選擇正確的保存格式對分佈式矩陣很是重要,由於轉換分佈式矩陣的格式極可能會牽涉到大量的shuffle IO操做,目前支持3種類型的分佈式矩陣:RowMatrix, IndexedRowMatrix, CoordinateMatrix。最基本的類型RowMatrix,是一個以行爲主的矩陣,每一行能夠當作是一個特徵向量,以向量的形式存儲在本地。IndexedRowMatrix是特殊的RowMatrix,其還保存了每一行的索引,用於定位特定的行和執行join操做。CoordinateMatrix以座標序列的形式保存數組中的元素。BlockMatrix是爲分塊矩陣設計的數據結構,矩陣被分割成一個個矩陣塊,保存到本地。
MLlib數據統計
- 在RDD[Vector]上,Statistics類提供了基於列的統計函數colStats,colStats返回每一列的最大值,最小值,均值,方差,非零元素個數,以及全部元素數量
- 計算兩個序列的相關性是一項很經常使用的操做,使用corr函數能夠很容易的計算兩個或者多個向量的相關係數,corr函數支持Pearson和Spearman相關係數。
- 在RDD[(K,V)],採用分層抽樣函數sampleByKey,需指定每個key抽樣的比例
- 假設檢驗,支持皮爾遜卡方檢驗
- 隨機數生成,支持均勻分佈、標準正態分佈、泊松分佈
- kernel density estimation:容許在不知道被觀察樣本機率分佈的狀況下,對其經驗機率分佈進行可視化。經過評估給定的樣本,估計隨機變量的分佈。在評估隨機變量的分佈時,假設隨機變量的經驗機率分佈函數,能夠表示爲以全部採樣點爲中心的正態分佈的均值。