1. 程式人生 > >Spark MLlib中分類和回歸算法

Spark MLlib中分類和回歸算法

決策樹 隨機 函數 fit ges sgd 集中 eba 字段類型

Spark MLlib中分類和回歸算法:

  • -分類算法:

pyspark.mllib.classification

-樸素貝葉斯 NaiveBayes

-支持向量機(優化:隨機梯度下降)SVMWithSGD

-邏輯回歸 LogisticRegressionWithSGD

// 從Spark 2.0開始,官方推薦使用BFGS方式優化LR算法

LogisticRegressionWithBFGS

// 針對流式數據實時模型訓練算法

StreamingLogisticRegressionWithSGD

  • -樹Tree相關分類算法:

pyspark.mllib.tree

  -決策樹 DecisionTree

  -隨機森林算法 –集成學習算法-Bagging方式 RandomForest

  -梯度提升決策樹算法 –集成學習算法 –Boosting方式 GradientBoostedTrees

    Spark MLlib中從底層源碼來看,無論是DT 還是RF還是GBT算法,底層都是RF算法實現的。

  • -分類算法的類別:

  樹相關的算法,既可以做二分類,又可以做多分類算法:

  numClass: Number of classes for classification

  -二分類

  NB、SVM、LR

  -多分類

   NB、LR

監督學習算法:

數據集RDD[LabeledPoint]

標簽向量 LabelPoint = feature: Vector + label: Float

類比:

RDD 類似 矩陣

數組 類比 Vector

無論是矩陣還是向量分為兩種類型:

-稀疏類型

稀疏矩陣,稀疏向量

-稠密類型

稠密矩陣,稠密向量

Spark MLlib中回歸算法(基於RDD 實現算法庫):

-a. 線性回歸算法相關:

LinerRegressionWithSGD

LassoWithSGD

L1-regularization

RidgeRegressionWithSGD

L2-regularization

-b. 樹算法相關

    -決策樹 DecisionTree

    -隨機森林算法 –集成學習算法-Bagging方式 RandomForest

    -梯度提升決策樹算法 –集成學習算法 –Boosting方式 GradientBoostedTrees

基於DataFrame實現機器學習庫,幾個重要的概念:

-a. DataFrame

類似Pandas中dataframe,將算法所有的數據集存儲在DataFrame數據結構中。

DataFrame = RDD + Schema(字段名稱、字段類型)

-b. Estimator

模型學習器,就是算法,比如ALS,DecisionTree,將數據應用到模型學習器中會得到一個模型Model。

每個模型學習器中有個一個方法(訓練模型):

fit(dataframe) -> Model

-c. Transformer

轉換器,就是模型Model或者算法,比如ALSModel,將針對數據集中某一列或某幾列數據生成預測另外一列新數據。

ALSModel.transform(dataframe)

userId,itemId -> predictRating

-d. Parameters

封裝算法訓練時參數或者模型預測時參數,底層是字典Dic(Map集合),其中字典的Key就是參數名稱,字典的Value就是參數的值。

比如:使用ALS模型學習器訓練模型,設置參數:特征數rank和叠代次數iterations,可以使用Parameters組合封裝設置。

-e. Pipeline

管道,Spark ML機器學習庫從SK-Learn中借鑒

由很多Stage組成:

一個序列的Stages組成,每個Stage要麽是轉換器Estimator(模型),要麽是模型學習器Estimator(算法)

本身來說:

Pipeline就是一個模型學習器,相當於算法,所以裏面有一個fit函數,應用數據訓練以後得到PipelineModel轉換器,可以進行預測數據。

功能:

將某個機器學習應用中整個流程進行串聯起來,方便部署測試使用。

Spark MLlib中分類和回歸算法