邏輯迴歸(LR)算法推導分析

邏輯迴歸

邏輯迴歸是一個簡單的分類算法。

之前介紹過線性迴歸:https://blog.csdn.net/sxf1061926959/article/details/66976356

線性迴歸是最基本的迴歸模型,建議瞭解邏輯迴歸前可以先了解下線性迴歸。

其實如果只是想單純的解決問題,線性迴歸也可以用於解決二分類問題,只需要對輸出的值設定一個閾值即可實現

但是線性迴歸在計算誤差的時候,起數據域內的所有數,包括異常值,對模型的的影響是一樣的,數據對模型的敏感度不會應數據的偏離程度發生變化。但是在分類問題中,其實最難區分的是邊界附近的數據,而那些可以肯定是正類或者負類的數據並不是那麼重要。

而且爲了讓算法的目標和建模的目的一致,需要對模型輸出的結果進行映射到不同類目上,即線性迴歸的實數域映射到[0,1]兩個值上。有個躍階函數是這樣的: H(x)=\begin{Bmatrix} H(x)=0, x>0 & \\ H(x)=1, x<=0 & \end{Bmatrix},從目的的角度來說可以解決問題了,但是這個並不是連續可導函數,並不能解決我們上面提出的異常值對模型敏感度一致的問題,我們需要一個可導函數,將這個函數直接應用到模型優化過程中去。這裏就要引出sigmoid函數了,該函數滿足了該要求。

sigmoid推導

這裏我們假設樣本點爲x = \left \{ x_0,x_1,...,x_n \right \} ,我們知道線性迴歸其實是將每個特徵x_i加上一個對應的權值w_i來獲得最後的輸出結果。那麼這個思想其實可以擴展到分類問題上。

定義一個最簡單的假設,假設現在需要做的是二分類,類別分別爲0和1,並且樣本點x針對x屬於類別0和1的權值爲w_ow_1,權值對應到每個特徵爲w_0= \left \{ x_00,x_01,...,x_0n \right \}w_1= \left \{ x_10,x_11,...,x_1n \right \}

線性迴歸模型的公式是這樣的y = w*x+b,我們把b作爲w_0就可以簡化爲y=w*x,這樣我們如果y只有0和1兩個值的時候,其實就是一個分類任務。我們先對公式做一個恆等變換,加上一個指數函數,可以得到exp(y) = exp(w*x),這樣的話我們就開始計算樣本點x屬於,如下,我們可以分別計算出樣本點屬於0和1的輸出值:

y_0 = w_0 * x

y_1 = w_1 * x

加上我們上面定義的恆等變換,就是

exp(y_0) = exp(w_0 * x)

exp(y_1) = exp(w_1 * x)

對於分類問題,我們期待的不是輸出一個實數域的值,最好的是希望得到輸出值屬於某個類的概率,並且他們的概率和應該等於1.

所以我們可以得出如下的概率:

P(y=0|x) = exp(w_0 *x)/(exp(w_1 *x)+exp(w_0 *x))

P(y=1|x) = exp(w_1 *x)/(exp(w_1 *x)+exp(w_0 *x))

因爲他們兩的概率和爲1,所以P(y=0|x)可以簡化爲P(y=0|x) = 1- P(y=1|x)

P(y=1|x) = exp(w_1 *x)/(exp(w_1 *x)+exp(w_0 *x))可以進一步化簡,分子分母同除以exp(w_1 *x)就可以得到:

P(y=1|x) = 1/(1+exp((w_0 - w_1) *x)),我們再把(w_0 - w_1)定義爲w,就能得到

P(y=1|x) = 1/(1+exp(w*x))看見了嗎?sigmoid函數出來了

交叉熵

現在經過sigmoid函數,模型有了輸出,然後就可以定義優化函數進行優化了,首先還是按之前線性迴歸的推導思路,需要定義一個最大似然函數

公式比較難寫,直接上網複製了一個。然後就是正常的似然函數解法,加log轉換,再最大化轉最小化:

而這個函數其實就是交叉熵損失函數,神經網絡的早期,在用梯度下降優化神經網絡的時候,一直用的是求平方誤差MSE,但是平方誤差存在一個嚴重的問題,因爲求導後的函數裏存在sigmoid(x)(1-sigmoid(x))這一項,這一項是sigmoid以及其導數的乘積。正是因爲這個,導致了嚴重了梯度消失問題,但是交叉熵並沒有解決梯度消失問題,而是緩解。好了扯遠了。

在實際編程中交叉熵的定義有時候會出現一些小bug,我在這裏做了簡單的介紹https://blog.csdn.net/sxf1061926959/article/details/83821733

優化函數有了,就可以直接利用梯度下降算法進行優化了,我在https://blog.csdn.net/sxf1061926959/article/details/72728244介紹了詳細的梯度下降推導,可以參考學習。當然具體的優化方法不止梯度下降算法,還可以使用擬牛頓法來高效訓練,如LBFGS。

本部分是個人對邏輯迴歸的理解。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章