統計學知識6:邏輯迴歸的極大似然求解(梯度下降實現)
邏輯迴歸的極大似然推導:
由於似然函式是樣本的函式,需要知道其分佈,並且假設相互獨立。
上述公式就推匯出梯度下降更新的方向
梯度更新的方法:
邏輯迴歸程式設計實現(按步驟手工程式設計)
假設我們有一個數據,共有100個樣本,含兩個x變數,x1、x2,一個目標變數y。資料如下:
我們的目標是求出引數θ0、θ1、θ2。
步驟1:定義sigmoid函式
logistic轉化成預測概率。
步驟2:定義線性迴歸函式z的表示式
步驟3:定義初始值θ
步驟4:根據對數似然函式,寫出J(θ),並寫出損失函式
當θ初始值為0時,此時的損失函式的值為ln(0.5)
步驟5:計算每個引數的梯度下降方向
步驟6:定義樣本資料的重新整理重排
每次迭代後需要重新重新整理資料:
步驟7:梯度下降演算法模組
1)設定不同的迭代停止策略,共有三種策略:根據迭代次數、根據兩次迭代目標值的變化、根據梯度值。
2)定義梯度下降公式。
3)定義梯度下降的方法
梯度下降有三種方法:
批量梯度下降法:在更新引數時使用所有樣本來進行更新.
隨機梯度下降法:批量梯度下降法原理類似,區別在與求梯度時沒有用所有的n個樣本的資料,而是僅僅選取1個樣本來求梯度。和批量梯度下降法是兩個極端值
小批量梯度下降法:是批量梯度下降法和隨機梯度下降法的折中,也就是對於n個樣本,我們採用m個樣子來迭代,1<m<n。一般可以取m=10,當然根據樣本的資料,可以調整這個m的值。
步驟8:梯度下降演算法實施案例。可嘗試不同的方法和策略
1、對比不同的停止策略,採用批量梯度下降法
1)策略1:採用限制迭代次數停止法。迭代策略設定為5000次。最後損失值為0.63
2)策略2:採用目標值變化的限制,兩次目標值的變動小於0.000001時則停止。大約迭代了109901次,最後的損失值為0.38.
3)停止策略3:採用梯度值的方法限制,梯度值的限制為0.05。大約迭代了140045次,最後的損失值為0.49.
也可以看出迭代次數越多效果越好。
2、對比不同梯度下降法
1)採用隨機梯度下降法:取1個樣本來求梯度
可以看出模型不穩定。嘗試調小學習率,增加迭代次數
2)採用小批量梯度下降法:取10個樣本來求梯度
結果仍然不太穩定。
3、資料標準化之後的處理
嘗試下對資料進行標準化 將資料按其屬性(按列進行)減去其均值,然後除以其方差。最後得到的結果是,對每個屬性/每列來說所有資料都聚集在0附近,方差值為1。
1)批量梯度下降法,迭代5000次,求解目標值為0.38.資料預處理非常重要,可以提高迭代效率。
2)批量梯度下降法,迭代次數增加,可以使損失函式降的更多
更多的迭代次數會使得損失下降的更多。
3)小批量梯度下降法,增加迭代次數,下降效果更好
步驟10:定義精確度,並求解優化前及優化後的精度對比。
計算精度
當theta=array([[ 0., 0., 0.]])時,計算精度為:
當theta為梯度優化後的值時,求出的精度為89%
Theta: [[ 1.49844241 3.5261332 3.27347064]]