逻辑回归算法原理
http://ihoge.cn/2018/LR.html
邏輯回歸模型
邏輯回歸也被稱為對數幾率回歸,算法名雖然叫做邏輯回歸,但是該算法是分類算法,個人認為這是因為邏輯回歸用了和回歸類似的方法來解決了分類問題。
邏輯回歸模型是一種分類模型,用條件概率分布的形式表示 P(Y|X)P(Y|X),這里隨機變量 X 取值為 n 維實數向量,例如x=(x(1),x(2),...,x(n))x=(x(1),x(2),...,x(n)),Y 取值為 0 或 1。即:
P(Y=0|0)=11+exp(w?x+b)P(Y=0|0)=11+exp?(w?x+b)
或:
?(x)=11+e?wTx?b?(x)=11+e?wTx?b
假設有一個二分類問題,輸出為y∈{0,1}y∈{0,1},二線性回歸模型z=wTx+bz=wTx+b是個實數值,我們希望有一個理想的階躍函數來幫我什么實現z值到0/1值的轉化,于是找到了Sigmoid函數來代替:
有了 Sigmoid 函數之后,由于其值取值范圍在[0,1]。就可以將其視為類 1 的后驗概率估計 p(y=1|X)p(y=1|X)。說白了,就是如果有了一個測試點 x,那么就可以用Sigmoid函數算出來的結果當作該點 x 屬于類別 1 的概率大小。
于是,非常自然地,我們把 Sigmoid 函數計算得到的值大于等于0.5的歸為類別1,小于0.5的歸為類別0:
邏輯函數的損失函數
接下來要做的就是根據給定的訓練集,把參數 w 給求出來了。要找參數 w,首先就得把代價函數(Cost Function)給定義出來,也就是目標函數。
我們第一個想到的自然是模仿線性回歸的做法,利用誤差平方和來當代價函數:
這時將預測函數 g(z(i))=11+e?x(i)g(z(i))=11+e?x(i)代入損失函數的話,會發現這是一個非凸函數,這意味著代價函數有著許多的局部最小值,這不利于我們求解:
那么我們不妨來換一個思路解決這個問題。前面,我們提到了 ?(z) 可以視為類1的后驗估計,所以我們有:
其中 p(y=1|x;w)p(y=1|x;w) 表示給定 w,那么 x 點 y=1 的概率大小。于是上面兩式可以寫成一般形式:
注:以上的過程說明,最大似然估計與誤差平方和等價!這就是為什么邏輯回歸的損失函數可以用最大似然函數進行估計的原因。
接下來我們就要用極大似然估計來根據給定的訓練集估計出參數 w:
為了簡化運算,我們對上面這個等式的兩邊都取一個對數:
我們現在要求的是使得 l(w) 最大的 w。沒錯,我們的代價函數出現了,我們在 l(w) 前面加個負號不就變成就最小了嗎?不就變成我們代價函數了嗎?
為了更好地理解這個代價函數,我們不妨拿一個例子的來看看:
也就是說:
下面是函數圖:
從圖中不難看出,如果樣本的值是1的話,估計值 ?(z) 越接近1付出的代價就越小,反之越大;同理,如果樣本的值是0的話,估計值 ?(z) 越接近0付出的代價就越小,反之越大。
邏輯回歸的模型求解
在開始梯度下降之前,要這里插一句,Sigmoid function 有一個很好的性質就是 :
這個后續會用到。
還有,我們要明確一點,梯度的負方向就是代價函數下降最快的方向:這里來解釋下。借助泰勒公式展開,有:
其中,f′(x) 和 δ 為向量,那么這兩者的內積就等于:
當 θ=π 時,也就是 δ 在 f′(x) 的負方向上時,取得最小值,也就是下降的最快的方向了。
于是有:
即:
其中,wjwj 表示第 j 個特征的權重;η 為學習率,用來控制步長。 重點來了:
所以,在使用梯度下降法更新權重時,只要根據下式即可:
此式與線性回歸時更新權重用的式子極為相似,也許這也是邏輯回歸要在后面加上回歸兩個字的原因吧。當然,在樣本量極大的時候,每次更新權重會非常耗費時間,這時可以采用隨機梯度下降法,這時每次迭代時需要將樣本重新打亂,然后用下式不斷更新權重:
也就是去掉了求和,而是針對每個樣本點都進行更新。
總結
- 上一篇: Spark ML - 聚类算法
- 下一篇: 梯度下降法、随机梯度下降法、批量梯度下降