Logistic 回歸

??Logistic回歸 為概率型非線性回歸模型,它是一個(gè) 分類算法,它可以處理二元分類以及多元分類。雖然它名字里面有 回歸 兩個(gè)字,卻不是一個(gè)回歸算法。

1. 從線性回歸到邏輯回歸

??線性回歸的模型可簡寫為:
y = \omega^Tx + b此時(shí)y是連續(xù)的,所以是回歸模型。假如樣本所對應(yīng)的輸出是在指數(shù)尺度上變化,那我們可以將真實(shí)值的對數(shù)作為我們回歸模型逼近的目標(biāo),即:
lny = \omega^Tx + b這就是對數(shù)線性回歸,其本質(zhì)上是求解輸入空間到輸出空間的非線性函數(shù)映射,這里的對數(shù)函數(shù)只是起到了將線性回歸模型的預(yù)測值跟真實(shí)標(biāo)簽聯(lián)系起來的作用。更一般性,考慮單調(diào)可微函數(shù)g(\cdot),令y = g^{-1}( \omega^Tx + b)這樣得到的模型稱為廣義線性模型,很顯然對數(shù)線性回歸廣義線性模型g(\cdot) = ln(\cdot)的特例。

2. 二元邏輯回歸模型

??上面提到對線性回歸的結(jié)果做一個(gè)在函數(shù)g上的轉(zhuǎn)換,如果令g(y)的值在某個(gè)實(shí)數(shù)區(qū)間的時(shí)候是類別A,在另一個(gè)實(shí)數(shù)區(qū)間的時(shí)候是類別B,以此類推,就得到了一個(gè)分類模型。如果結(jié)果的類別只有兩種,那么就是一個(gè)二元分類模型了。邏輯回歸的出發(fā)點(diǎn)就是從這來的。
??這個(gè)函數(shù)g在邏輯回歸中我們一般取為sigmoid函數(shù),形式如下:g(z) = \frac{1}{1+e^{-z}}


它有一個(gè)非常好的性質(zhì),即當(dāng)z趨于正無窮時(shí),??(??)趨于1,而當(dāng)z趨于負(fù)無窮時(shí),??(??)趨于0,并且在點(diǎn)時(shí)斜率最大,梯度更新最快,這非常適合于我們的分類概率模型。另外,它還有一個(gè)很好的導(dǎo)數(shù)性質(zhì):
如果我們令??(??)中的z為:,這樣就得到了二元邏輯回歸模型的一般形式:其中為樣本輸入,為模型輸出,可以理解為某一分類的概率大小。而為分類模型的要求出的模型參數(shù)。對于模型輸出,讓它和我們的二元樣本輸出(假設(shè)為0和1)有這樣的對應(yīng)關(guān)系,如果 ,即, 則為1。如果,即, 則為0。是臨界情況,此時(shí)為, 從邏輯回歸模型本身無法確定分類。

3. 二元邏輯回歸的損失函數(shù)

??線性回歸的損失函數(shù)使用 MSE 來定義損失函數(shù)。但是邏輯回歸不是連續(xù)的,自然MSE就用不上了。不過我們可以用 最大似然法 來推導(dǎo)出我們的損失函數(shù)。
假設(shè)我們的樣本輸出是0或者1兩類。那么對于一個(gè)樣本有:p(y=1|x,\theta) = h_\theta(x)則,p(y=0|x,\theta) = 1 - h_\theta(x) 把這兩個(gè)式子寫成一個(gè)式子,就是:p(y|x,\theta) = h_\theta(x)^y(1- h_\theta(x))^{(1-y)}其中y的取值只能是0或者1。
得到了y的概率分布函數(shù)表達(dá)式,因?yàn)楦鱾€(gè)觀測樣本之間 相互獨(dú)立,那么它們的聯(lián)合分布為各邊緣分布的乘積。得到似然函數(shù)為:
L(\theta) = \prod_{i=1}^mh_\theta(x^{(i)})^{y^{(i)}}(1- h_\theta(x^{(i)}))^{(1-y^{(i)})}其中m為樣本的個(gè)數(shù)。
我們就可以用似然函數(shù)最大化來求解我們需要的模型系數(shù)\theta。為了方便求解,這里我們用對數(shù)似然函數(shù)最大化,對數(shù)似然函數(shù)取反即為我們的損失函數(shù)l(\theta)。對似然函數(shù)對數(shù)化取反的表達(dá)式,即損失函數(shù)表達(dá)式為:l(\theta) = -ln(L(\theta)) = -\sum_{i=1}^m(y^{(i)}log(h_\theta(x^{(i)})) + (1-y^{(i)})log(1-h_\theta(x^{(i)})))

4. l(\theta)損失函數(shù)的優(yōu)化方法

??對于二元邏輯回歸的損失函數(shù)極小化,有比較多的方法,最常見的有梯度下降法,坐標(biāo)軸下降法,牛頓法等。這里推導(dǎo)出梯度下降法中??每次迭代的公式。
求邏輯回歸模型f(θ),等價(jià)于:\theta^* = argmin_{\theta}l(\theta)采用梯度下降法:\frac{\partial(l(\theta))}{\partial\theta_{i}} = (\frac{y^{(i)}}{h_\theta(x^{(i)})}-\frac{1-y^{(i)}}{1-h_\theta(x^{(i)})})\frac{\partial h_\theta(x^{(i)})}{\theta_i} = \frac{y^{(i)}-y^{(i)}h_\theta(x^{(i)})-h_\theta(x^{(i)})+y^{(i)}h_\theta(x^{(i)})}{h_\theta(x^{(i)})(1-h_\theta(x^{(i)}))}\frac{\partial h_\theta(x^{(i)})}{\partial(\theta^Tx^(i)+b)}\frac{\partial(\theta^Tx^(i)+b)}{\partial \theta_i}
\frac{\partial(l(\theta))}{\partial\theta_{i}} = \frac{y^{(i)}-h_\theta(x^{(i)})}{h_\theta(x^{(i)})(1-h_\theta(x^{(i)}))}{h_\theta(x^{(i)})(1-h_\theta(x^{(i)}))}\frac{\partial(\theta^Tx^{(i)}+b)}{\partial \theta_i} = (y^{(i)}-h_\theta(x^{(i)}))x^{x(i)}
中間用到了g^\prime(z) = g(z)*(1-g(z))
從而迭代θ至收斂即可:\theta_i := \theta_i + \alpha(y^{(i)}-h_\theta(x^{(i)}))x^{(i)}其中,??為梯度下降法的步長。實(shí)踐中,我們一般不用操心優(yōu)化方法,大部分機(jī)器學(xué)習(xí)庫都內(nèi)置了各種邏輯回歸的優(yōu)化方法,不過了解至少一種優(yōu)化方法還是有必要的。

5. 二元邏輯回歸的正則化

??邏輯回歸也會(huì)面臨過擬合問題,所以我們也要考慮正則化。常見的有L1正則化和L2正則化。
邏輯回歸的L1正則化的損失函數(shù)表達(dá)式相比普通的邏輯回歸損失函數(shù),增加了L1的范數(shù)做作為懲罰,超參數(shù)??作為懲罰系數(shù),調(diào)節(jié)懲罰項(xiàng)的大小。
二元邏輯回歸的L1正則化損失函數(shù)表達(dá)式如下:
l(\theta) = -\sum_{i=1}^m(y^{(i)}log(h_\theta(x^{(i)})) + (1-y^{(i)})log(1-h_\theta(x^{(i)}))) + \alpha||\theta||_1其中||??||1為??的L1范數(shù)。
邏輯回歸的L1正則化損失函數(shù)的優(yōu)化方法常用的有坐標(biāo)軸下降法和最小角回歸法。
L1正則相當(dāng)于加入拉普拉斯先驗(yàn)
L2正則相當(dāng)于加入高斯先驗(yàn)。
二元邏輯回歸的L2正則化損失函數(shù)表達(dá)式如下:
l(\theta) = -\sum_{i=1}^m(y^{(i)}log(h_\theta(x^{(i)})) + (1-y^{(i)})log(1-h_\theta(x^{(i)}))) + \frac{1}{2}\alpha||\theta||_2^2其中||??||2為??的L2范數(shù)。
邏輯回歸的L2正則化損失函數(shù)的優(yōu)化方法和普通的邏輯回歸類似。

6. 二元邏輯回歸的推廣:多元邏輯回歸

??前面幾節(jié)我們的邏輯回歸的模型和損失函數(shù)都局限于二元邏輯回歸,實(shí)際上二元邏輯回歸的模型和損失函數(shù)很容易推廣到多元邏輯回歸。比如總是認(rèn)為某種類型為正值,其余為0值,這種方法為最常用的one-vs-rest,簡稱OvR.
??另一種多元邏輯回歸的方法是Many-vs-Many(MvM),它會(huì)選擇一部分類別的樣本和另一部分類別的樣本來做邏輯回歸二分類。最常用的是One-Vs-One(OvO)。OvO是MvM的特例。每次我們選擇兩類樣本來做二元邏輯回歸。
這里只介紹多元邏輯回歸的softmax回歸的一種特例推導(dǎo):
首先回顧下二元邏輯回歸。
p(y=1|x,\theta) = h_\theta(x) = \frac{1}{1+e^{-(\theta^Tx+b)}} = \frac{e^{(\theta^Tx+b)}}{1+e^{\theta^Tx+b}}
p(y=0|x,\theta) = 1 - h_\theta(x) = \frac{1}{1+e^{\theta^Tx+b}}其中y只能取到0和1。則有:ln\frac{p(y=1|x,\theta)}{p(y=0|x,\theta)} = \theta^Tx+b如果我們要推廣到多元邏輯回歸,則模型要稍微做下擴(kuò)展。
我們假設(shè)是K元分類模型,即樣本輸出y的取值為1,2,...,K.

根據(jù)二元邏輯回歸的經(jīng)驗(yàn),我們有:
ln\frac{p(y=1|x,\theta)}{p(y=K|x,\theta)} = \theta_1^Tx+b_1
ln\frac{p(y=2|x,\theta)}{p(y=K|x,\theta)} = \theta_2^Tx+b_2
....
ln\frac{p(y=K-1|x,\theta)}{p(y=K|x,\theta)} = \theta_{K-1}^Tx+b_{K-1}
上面有K-1個(gè)方程。
加上概率之和為1的方程如下:
\sum_{i=1}^Kp(y=i|x,\theta) = 1
從而得到K個(gè)方程,里面有K個(gè)邏輯回歸的概率分布。

解出這個(gè)K元一次方程組,得到K元邏輯回歸的概率分布如下:
p(y=k|x,\theta) = \frac{e^{\theta_{k}^Tx+b_k}}{1+\sum_{i=1}^{K-1}e^{\theta_{k}^Tx+b_k}}, k=1,2,3,...,K-1
p(y=K|x,\theta) = \frac{1}{1+\sum_{i=1}^{K-1}e^{\theta_{k}^Tx+b_k}}
多元邏輯回歸的損失函數(shù)推導(dǎo)以及優(yōu)化方法和二元邏輯回歸類似。

小結(jié):Logistic回歸尤其是二元Logistic回歸是非常常見的模型,訓(xùn)練速度很快,雖然使用起來沒有SVM那么占主流,但是解決普通的分類問題是足夠了,訓(xùn)練速度也比起SVM要快不少,適合分布式訓(xùn)練,適用于離散特征。如果想要理解機(jī)器學(xué)習(xí)的所有分類算法,那么第一個(gè)應(yīng)該學(xué)習(xí)的分類算法個(gè)人覺得應(yīng)該是邏輯回歸。理解了邏輯回歸,其他的分類算法再學(xué)習(xí)起來應(yīng)該沒有那么難了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容