邏輯回歸:使用SGD(Stochastic Gradient Descent)進行大規模機器學習


 

Mahout學習算法訓練模型

 

mahout提供了許多分類算法,但許多被設計來處理非常大的數據集,因此可能會有點麻煩。另一方面,有些很容易上手,因為,雖然依然可擴展性,它們具有低開銷小的數據集。這樣一個低開銷的方法是隨機梯度下降(SGD)算法,Logistic回歸。該算法是一個連續的(非平行)的算法,但它的速度快,因為在概念圖中圖13.9所示。最重要的處理大型數據,SGD算法采用恆定的內存量不管輸入的大小。
 
這里的輸出包含特別感興趣的兩個值。首先,AUC值(一種廣泛使用的模型的質量度量)曲線下面積的縮寫有一個值0.57。 AUC的范圍可以從一個完全不正當的模型總是完全0錯誤的一個模型,1.0這是一個完美的模型,該模型比隨機更好。這里的值0.57表示了一個模型,幾乎沒有比隨機更好。
 
要明白為什么這個模型如此糟糕的表現,你可以看一下一片混亂矩陣線索。混淆矩陣是一個比較實際的結果與表期望的結果。所有的例子在默認得分閾值0.5被列為被填補。這允許分類器是正確的三分之二的時間(27/40),但它只能管理是正確的標記一切填補。這模型多的時間得到正確的答案,但唯一的方式,停止的時鍾是正確的,一天兩次。注意與其它測量工具,混淆矩陣在第15章中更詳細地描述。
 
發展在上一節的例子,你已經投入使用,你學到了什么本章中對前兩個階段的分類:如何培養模型,以及如何對其進行評估和調整性能。如果這是一個真正的系統,模型現在分類為第三階段:准備部署到生產在現實世界中的設置。現在將分類的基本術語熟悉你,你應該有一個堅實的理解什么是分類 它是如何工作的。
請記住,一個重要的關鍵是建立一個成功的分類要仔細構成具體和簡單的術語,因此,它可以由一個有限的回答你的問題預定的類別的列表中的目標變量。請注意,並非所有的功能輸入的數據也同樣有用,你必須選擇的功能被用來作為預測指標變量仔細,你可能需要嘗試多種組合,以發現哪些是 有用的分類表現良好。記住,務實是非常重要的。有了這些想法,回想起到品酒的例子的目標 你的機器的分類應該是幫助你到晚餐時間,不是為了幫助你做微妙的審美判斷生活中的美好事物。
 

 

參考:http://en.wikipedia.org/wiki/Stochastic_gradient_descent

1 線性回歸

了解邏輯回歸之前先了解下線性回歸:因變量和自變量之間存在線性關系。一般模型如下:


從一般模型可以看出Y和X(X1,X2,X3...)之間存在線性關系。線性回歸的目的就是為了確定因變量和自變量的關系程度,換言之,就是求回歸模型的參數。

2 邏輯回歸

(1) why need it?

要說邏輯回歸的優點,自然要先說下線性回歸的缺點,主要有難以處理以下兩個問題

a. 因變量Y如果不是數值型

b. 因變量與自變量不存在線性關系

 

(2) 邏輯回歸的一般形式

P是概率,是某個事件發生的概率,處理類別屬性,例如是否是男性,是否是色狼?

而且進行了logit變換。也就是說logit(P)與自變量之間存在線性關系,而p顯然和X不存在線性關系。

那為什么是logit變換,不是XXX其他的變換,這里有一個前提假設:概率與自變量的關系往往是 S 型的曲線

 

(3)參數估計

    模型有了,需要利用已知的樣本來進行參數估計,最大似然估計用的比較多。mahout中用的是隨機梯度下降法(SGD)。此處介紹下隨機梯度下降法。

    a. 梯度下降法

        搜索尋優的一個過程,假定一個初始狀態,然后不斷更新,知道達到目標函數的極小值。其中 稱為學習率,他決定梯度下降搜索的步長。算法流程如下:

其中W表示權重。

b. 隨機梯度下降

    sgd解決了梯度下降的兩個問題: 收斂速度慢和陷入局部最優。修正部分是權值更新的方法有些許不同。

 

3 基於梯度下降的學習

對於一個簡單的機器學習算法,每一個樣例包含了一個(x,y)對,其中一個輸入x和一個數值輸出y。我們考慮損失函數,它描述了預測值和實際值y之間的損失。預測值是我們選擇從一函數族F中選擇一個以w為參數的函數的到的預測結果。
我們的目標是尋找這樣的函數,能夠在訓練集中最小化平均損失函數

由於我們不知道數據的真實分布,所以我們通常使用

來代替

經驗風險用來衡量訓練集合的效果。期望風險E(f)描述了泛化(generation)的效果,預測未知樣例的能力。
如果函數族F進行足夠的限制(sufficiently restrictive),統計機器學習理論使用經驗風險來代替期望風險。

3.1 梯度下降
我們經常使用梯度下降(GD)的方式來最小化期望風險,每一次迭代,基於更新權重w:
,為學習率,如果選擇恰當,初始值選擇合適,這個算法能夠滿足線性的收斂。也就是:,其中表示殘余誤差(residual error)。

基於二階梯度的比較出名的算法是牛頓法,牛頓法可以達到二次函數的收斂。如果代價函數是二次的,矩陣是確定的,那么這個算法可以一次迭代達到最優值。如果足夠平滑的話,。但是計算需要計算偏導hession矩陣,對於高維,時間和空間消耗都是非常大的,所以通常采用近似的算法,來避免直接計算hession矩陣,比如BFGS,L-BFGS。

 

3.2 隨機梯度下降

SGD是一個重要的簡化,每一次迭代中,梯度的估計並不是精確的計算,而是基於隨機選取的一個樣例:



隨機過程 依賴於每次迭代時隨機選擇的樣例,盡管這個簡化的過程引入了一些噪音,但是我們希望他的表現能夠和GD的方式一樣。

隨機算法不需要記錄哪些樣例已經在前面的迭代過程中被訪問過,有時候隨機梯度下降能夠直接優化期望風險,因為樣例可能是隨機從真正的分布中選取的。

隨機梯度算法的收斂性要滿足:
並且

二階隨機梯度下降:

這種方法並沒有減少噪音,也不會對計算有太大改進。

 

3.3 隨機梯度的一些例子
下面列了一些比較經典的機器學習算法的隨機梯度:

 


免責聲明!

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



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