本系列文章允許轉載,轉載請保留全文!
【請先閱讀】【說明&總目錄】http://www.cnblogs.com/tbcaaa8/p/4415055.html
1. 梯度下降法 (Gradient Descent)
梯度下降法是一種用來尋找函數最小值的算法。算法的思想非常簡單:每次沿與當前梯度方向相反的方向走一小步,並不斷重復這一過程。舉例如下:
[例]使用梯度下降法,求z=0.3x2+0.4y2+2的最小值。
第一步:求解迭代格式。根據“每次沿與當前梯度方向相反的方向走一小步”的思想,可知x(k+1)=x(k)-0.6x(k), y(k+1)=y(k)-0.8y(k)
第二步:選擇迭代的初始值。初始值一般可以隨意選擇,但恰當的初始值有助於提升收斂速度。本例中選擇x(0)=1, y(0)=1
第三步:根據迭代格式和初始值進行迭代求解。迭代過程如下:
k | x(k) | y(k) | z(x(k),y(k)) |
0 | 1.00 | 1.00 | 2.7000 |
1 | 0.40 | 0.20 | 2.0640 |
2 | 0.16 | 0.04 | 2.0083 |
3 | 0.06 | 0.01 | 2.0013 |
4 | 0.03 | 0.00 | 2.0002 |
5 | 0.01 | 0.00 | 2.0000 |
6 | 0.00 | 0.00 | 2.0000 |
結論:可以發現,第6次迭代后,算法收斂。所求最小值為2。
梯度下降算法如何進行收斂判定呢?一個通用的方法是判斷相鄰兩次迭代中,目標值變化量的絕對值是否足夠小。具體到上述例題,就是判斷|z(x(k+1),y(k+1))-z(x(k),y(k))|<eps是否成立。eps是一個足夠小的正實數,可以根據所需要的精度進行選取,本例中eps=10-4。
需要注意的是,梯度下降法有可能陷入局部最優解。可以通過多次隨機選取初始值以及增加沖量項等方法加以改善,本系列后續文章中可能涉及。
2. 線性回歸 (Linear Regression)
線性回歸是對自變量和因變量之間關系進行建模的回歸分析,回歸函數滿足如下形式:
我們使用表示數據組數,使用
表示數據的維數;使用
和
表示第
組數據的自變量和因變量,使用
表示第
組數據自變量的第
個分量。推導過程基於如下假設:
即每一組數據的誤差項相互獨立,且均服從均值為0,方差為的正態分布。進而,我們可以得到似然函數:
對數似然函數:
化簡,可得:
定義損失函數:
要使似然函數最大,只需使損失函數最小。我們使用損失函數的極小值代替最小值,只需對每一個求偏導數:
最后,使用梯度下降法迭代求解:
其中,為學習率,是一個大於0的常數。學習率應當慎重選擇,過大會導致算法不收斂,過小會導致收斂速度緩慢。在實際應用中,可以根據具體情況對學習率進行調節。有資料表明,當
時,上述算法收斂。由於
難以高效計算,因此往往使用
來代替。
3. 邏輯回歸 (Logistic Regression)
當因變量只能在{0,1}中取值時,線性回歸模型不再適合,因為極端數據的存在會使閥值的選擇變得困難。我們可以使用邏輯回歸對數據進行建模。回歸函數滿足如下形式:
其中:
sigmoid函數具有如下性質:
推導過程基於如下假設:(其實就是假設y(i)~Bernoulli(hθ(x(i))))
考慮到取值的特殊性,上述假設等價於以下形式:
進而得到似然函數:
對數似然函數:
化簡,得:
定義損失函數:
要使似然函數最大,只需使損失函數最小。我們使用損失函數的極小值代替最小值,只需對每一個求偏導數:
化簡,得:
最后,使用梯度下降法迭代求解:
含義同上。