[分類] 邏輯回歸-Logistic Regression

終于到了大名鼎鼎的邏輯回歸,在學(xué)邏輯回歸的時(shí)候,從偏傳統(tǒng)的統(tǒng)計(jì)那邊學(xué)過(guò)一次,然后又從機(jī)器學(xué)習(xí)這邊學(xué)過(guò)一次,感覺(jué)還是挺不一樣的。

從傳統(tǒng)那邊,老師說(shuō)之所以要進(jìn)行l(wèi)ogit變換的原因是在生物統(tǒng)計(jì)方面覺(jué)得這個(gè)transformation比較合理,但從機(jī)器學(xué)習(xí)上看,這個(gè)transformation跟LDA(Linear Discriminant Analysis)有關(guān),在了解了LDA之后,有Logistic這個(gè)想法還是蠻直接。

在傳統(tǒng)上會(huì)有對(duì)Group Data做邏輯回歸的情況,但是在機(jī)器學(xué)習(xí)上,好像很少會(huì)有這種問(wèn)題出現(xiàn)。不過(guò)個(gè)人以為,從Logistics Regression這個(gè)名字來(lái)看,最開始應(yīng)該還是傳統(tǒng)統(tǒng)計(jì)這邊有了成果,然后之后才算到了ML算法中。

話不多說(shuō),既然整理的是ML算法,那就從ML這邊說(shuō)起。剛才講了,logistic的想法與LDA有關(guān)。在LDA判別某一個(gè)點(diǎn)屬于哪一類時(shí),需要計(jì)算這個(gè)式子log(P(G=k|X=x))=log(\frac{f_k(x)\pi_k}{\sum_{l=1}^K f_l(x)\pi_l})=C1+log(f_k(x)\pi_k)=C+x^T\Sigma^{-1}\mu_k-\frac{1}{2}\mu_k^T\Sigma^{-1}\mu_k+log(\pi_k)=\beta'_0+\beta' X,為了使所有的\sum \delta_k(x)=1,做一個(gè)系數(shù)的變換:
log\frac{P(G=1|X=x)}{P(G=K|X=x)}=\beta_{10}+\beta_1X
... ... ....
log\frac{P(G=K-1|X=x)}{P(G=K|X=x)}=\beta_{(K-1)0}+\beta_{(K-1)}X
由上式,可以導(dǎo)出:
P(G=k|X=x)=\frac{exp(\beta_{k0}+\beta_k x)}{1+\sum_{l=1}^{K-1}exp(\beta_{k0}+\beta_k x)},k=1,2,...,K-1
P(G=K|X=x)=\frac{1}{1+\sum_{l=1}^{K-1}exp(\beta_{k0}+\beta_k x)}
這也叫做Softmax函數(shù)。因?yàn)槭怯蒐DA導(dǎo)出的,所以就直接處理了一個(gè)多分類的問(wèn)題。

那如果從傳統(tǒng)統(tǒng)計(jì)這邊導(dǎo),Logistic最開始不完全是為了處理分類問(wèn)題存在的,他可以看做是對(duì)占比的一個(gè)預(yù)測(cè),這也就是邏輯回歸為什么有回歸這兩個(gè)字。


Lecture Notes-Burhman

就像上面這個(gè)例子,我們要擬合percent和Age的關(guān)系。那在一開始畫percent和Age的散點(diǎn)圖的時(shí)候,我們會(huì)發(fā)現(xiàn)他們的關(guān)系并不是完全線性的,反而呈現(xiàn)一種S-shape(類似Sigmoid Function),那對(duì)于這種問(wèn)題,我們還是會(huì)想要把他轉(zhuǎn)化為一個(gè)線性關(guān)系來(lái)處理嘛,所以就對(duì)percent做一個(gè)logit transformation,這是為什么算法叫l(wèi)ogistic的原因。\pi'=logit(\pi)=log(\frac{\pi}{1-\pi}),這樣轉(zhuǎn)換以后話散點(diǎn)圖,發(fā)現(xiàn)pi'和X有成性關(guān)系,于是\pi'=\beta_0+\beta X。這樣一來(lái),\pi =P(K=1|X)= \frac{exp(\beta_0+\beta X)}{1+exp(\beta_0+\beta X)},P(K=0|X)= \frac{1}{1+exp(\beta_0+\beta X)},這也叫做Sigmoid Function

仔細(xì)觀察從LDA導(dǎo)出的式子和剛才的式子,可以發(fā)現(xiàn)其實(shí)他們是一樣的,softmax可以看做是Sigmoid的一個(gè)拓展,但本質(zhì)相同。

所以在做參數(shù)估計(jì)的時(shí)候,我們可以先從統(tǒng)計(jì)這邊來(lái)看。由于統(tǒng)計(jì)上一開始處理的是一個(gè)估計(jì)percentage的問(wèn)題,那其實(shí)這就很明顯可以看做一個(gè)二項(xiàng)分布,類似的,多分類可以看做是一個(gè)Multinomial的分布。為了簡(jiǎn)單處理,以下只考慮二分類問(wèn)題,并且將\beta_0一并歸到\beta中。那從統(tǒng)計(jì)上來(lái)說(shuō),參數(shù)估計(jì)一般是用最大似然估計(jì),二項(xiàng)分布可以看做是多個(gè)伯努利分布,所以:

L(\beta)=\prod_{i=1}^N p(x_i;\beta)^{y_i}(1-p(x_i;\beta))^{1-y_i}
l=In(L)=\sum_{i=1}^N[y_ilog(p(x_i;\beta))+(1-y_i)log((1-p(x_i;\beta)))]
=\sum_{i=1}^N[y_i log(p(x_i;\beta)/(1-p(x_i;\beta))+log((1-p(x_i;\beta))]=\sum_{i=1}^N[y_i\beta x_i-log(1+exp(\beta x_i))]
\frac{\partial l}{\partial \beta}=\sum_{i=1}^Nx_i(y_i-p(x_i;\beta))=0

因?yàn)檫@個(gè)式子不能得到顯式的答案,所以需要用牛頓法/最優(yōu)化方法來(lái)數(shù)值逼近方程根。然后因?yàn)槌蕇igmoid的形態(tài),所以模型在兩端的導(dǎo)數(shù)很小,所以迭代起來(lái)會(huì)很慢。所以一般初始值可以另\beta=0或一些0附近比較小的值,然后learning rate需要很小,我自己試下來(lái)有時(shí)候需要<0.000001才能讓算法收斂。如果自己寫logistic算法的話,處置選取和learning rate需要謹(jǐn)慎選擇,然后最好是對(duì)數(shù)據(jù)先進(jìn)行標(biāo)準(zhǔn)化再做擬合。

Sigmoid

那對(duì)于logistic,我們一般選取的損失函數(shù)式Cross-Entrophy:
?(ylog(p)+(1?y)log(1?p)),如果是多分類問(wèn)題:?\sum_ky_klog(p_k),可以發(fā)現(xiàn),其實(shí)和最大似然估計(jì)的式子是一樣的。

模型選擇時(shí),如果是subset selection的話一個(gè)個(gè)擬合很耗時(shí)間,所以一般會(huì)用Rao score test 去test是否要加feature,用Wald test決定是否要去變量 ->bi direction stepwise

或者是直接加入一個(gè)L1正則項(xiàng),來(lái)剔除一些變量

TBC

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

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

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