Spark Mllib邏輯回歸算法分析


原創文章,轉載請注明: 轉載自http://www.cnblogs.com/tovin/p/3816289.html

 

 

本文以spark 1.0.0版本MLlib算法為准進行分析

一、代碼結構

邏輯回歸代碼主要包含三個部分

1classfication:邏輯回歸分類器

2optimization:優化方法,包含了隨機梯度、LBFGS兩種算法

3evaluation:算法效果評估計算

  

 

二、邏輯回歸分類器

1LogisticRegressionModel

 (1) 根據訓練數據集得到的weights來預測新的數據點的分類

  

 

 (2)預測新數據分類

  采用   這個公式來進行預測。

其中w為權重向量weightMatrix,X表示預測數據dataMatrix,a表示intercept,intercept默認為0.0

threshold變量用來控制分類的閾值,默認值為0.5。表示如果預測值<threshold則為分類0.0,否則為1.0

  如果threshold設置為空,這會輸出實際值  

2、LogisticRegressionWithSGD類

  此類主要接收外部數據集、算法參數等輸入進行訓練得到一個邏輯回歸模型LogisticRegressionModel

  接收的輸入參數包括:

    input:輸入數據集合,分類標簽lable只能是1.0和0.0兩種,feature為double類型

    numIterations:迭代次數,默認為100

    stepSize:迭代步伐大小,默認為1.0

    miniBatchFraction:每次迭代參與計算的樣本比例,默認為1.0

    initialWeights:weight向量初始值,默認為0向量

    regParam:regularization正則化控制參數,默認值為0.0

  

   在LogisticRegressionWithSGD中可以看出它使用了GradientDescent(梯度下降)來優化weight參數的

  

 

 3、GeneralizedLinearModel類

  LogisticRegressionWithSGD中的run方法會調用GeneralizedLinearModel中的run方法來訓練訓練數據

  在run方法中最關鍵的就是optimize方法,正是通過它來求得weightMatrix的最優解

  

 

三、優化方法

  邏輯回歸采用了梯度下降算法來尋找weight的最優解

  邏輯回歸cost function

     

  其中:

    

  對J(Θ)求導數后得到梯度為:

        

 

  1、GradientDescent類

    負責梯度下降算法的執行,分為Gradient梯度計算與weight update兩個步驟來計算   

    

  2、Gradient類

    負責算法梯度計算,包含了LogisticGradient、LeastSquaresGradient、HingeGradient三種梯度計算實現,本文主要介紹LogisticGradient的實現:

    

    其中data為公式中的x,label為公式中的y,weights為公式中的Θ

        gradient就是對J(Θ)求導的計算結果, loss為J(Θ)的計算結果

 

  3、Updater類

    負責weight的迭代更新計算,包含了SimpleUpdater、L1Updater、SquaredL2Updater三種更新策略

    (1)SimpleUpdater

      沒有使用regularization,weights更新規則為:

      

      其中:iter表示這是執行的第幾次迭代

      

    (2)L1Updater

      使用了L1 regularization(R(w) = ||w||),利用soft-thresholding方法求解,weight更新規則為:

      

      

      signum是符號函數,它的取值如下:

      

      

    

    (3)SquaredL2Updater

      使用了L2 regularization(R(w) = 1/2 ||w||^2),weights更新規則為:

      

      

      

  注意:Mllib中的邏輯回歸算法默認使用的SimpleUpdater

 

四、算法效果評估

  BinaryClassificationMetrics類中包含了多種算法算法效果評估計算方法:

 

  相關 不相關
檢索到 true positives (tp) false positives(fp)
未檢索到
false negatives(fn) true negatives (tn)

  

   1、ROC(receiver operating characteristic接收者操作特征)    

   

 

    

   調整分類器threshold取值,以FPR為橫坐標,TPR為縱坐標做ROC曲線

   Area Under roc Curve(AUC):處於ROC curve下方的那部分面積的大小

   通常,AUC的值介於0.5到1.0之間,較大的AUC代表了較好的性能

 

   

 

 

   2、precision-recall(准確率-召回率)

    

    准確率和召回率是互相影響的,理想情況下肯定是做到兩者都高,

    但是一般情況下准確率高、召回率就低,召回率低、准確率高,

           當然如果兩者都低,那是什么地方出問題了

 

   3、F-Measure

   

   在precision與recall都要求高的情況下,可以用F來衡量   

 

 

原創文章,轉載請注明: 轉載自http://www.cnblogs.com/tovin/p/3816289.html

  

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM