52ML系列(1)--Logistic Regression邏輯回歸

現(xiàn)在前面

希望對(duì)這段時(shí)間的機(jī)器學(xué)習(xí)做一個(gè)溫故與總結(jié),于是有了寫(xiě)52ML系列博客的想法

邏輯回歸解決什么問(wèn)題

邏輯回歸是一個(gè)分類(lèi)模型,輸出樣本屬于某個(gè)類(lèi)別的概率,但個(gè)人認(rèn)為它也是一個(gè)回歸問(wèn)題,因?yàn)檫@個(gè)概率需要一個(gè)基于回歸產(chǎn)生的分?jǐn)?shù)。

什么意思呢?比如現(xiàn)在要做一個(gè)模型:根據(jù)毛發(fā)、耳朵長(zhǎng)短、抓不抓老鼠,可不可愛(ài)等信息判斷一個(gè)動(dòng)物是不是貓,這看上去是一個(gè)二分類(lèi)問(wèn)題,要么是要么不是,輸出為:1 or -1。但是我們換一個(gè)問(wèn)法,判斷這個(gè)動(dòng)物是貓的概率?那么輸出應(yīng)該是一個(gè)[0,1]之間的值。這就跟我們一般的二分類(lèi)問(wèn)題有些不一樣了,學(xué)術(shù)上稱(chēng)作軟二分類(lèi)問(wèn)題('soft' binary classification),這種問(wèn)題交給邏輯回歸來(lái)處理就對(duì)了。


邏輯回歸模型思路

那么邏輯回歸是如何解決這種問(wèn)題呢?思路是我們可以利用毛發(fā)、耳朵長(zhǎng)短、抓不抓老鼠,可不可愛(ài)等特征算出某種類(lèi)似得分的東西,得分越高越有可能是貓對(duì)不對(duì)?那么接下來(lái),再將得分按某種操作轉(zhuǎn)化為百分比,就得到了概率。

那么問(wèn)題就變成了兩部分:算得分,求概率。

算得分,最直接的想法就是利用線性回歸模型
s=\sum_{i=0}^{N}\omega_{i}x_{i}
s就是我們的得分。當(dāng)然\omega是待求的模型參數(shù),我們先放在那里,下面考慮第二部分。

如何將得分轉(zhuǎn)化為概率?注意到得分的取值可能是(-\infty,+\infty),而結(jié)果是[0,1]之間的概率值,這是一種映射關(guān)系,那么怎么找到這種映射關(guān)系呢?不用找了,前輩們告訴你sigmoid函數(shù)天然的完成了這種映射,函數(shù)長(zhǎng)這樣:\theta(z)=\frac{1}{1+e^{-z}}

函數(shù)圖形長(zhǎng)圖1這樣:


圖1

sigmoid函數(shù)很好的將(-\infty,+\infty)限制映射在[0,1]之間,得分越高,概率越高;相反得分越低,概率越低。

ok,現(xiàn)在我們有了邏輯回歸的基本模型思路了,下面開(kāi)始建立模型。


模型建立

考慮用平方誤差做代價(jià)函數(shù)
J(W)=\frac{1}{N}\sum_{i=0}^N(\theta(W^Tx_i )- y_i)^2
但是這個(gè)函數(shù)并不是凸函數(shù),無(wú)法用梯度下降找到最優(yōu)解。

最大似然

換一種考慮方式:

考慮數(shù)據(jù)集D=\{(x_1,-1),(x_2,1),(x_3,-1)...(x_n, 1)\},想象上帝創(chuàng)造了這么一個(gè)函數(shù)f(x)提供一種概率分布能夠產(chǎn)生這個(gè)數(shù)據(jù)集:
P(y|x) = \{\ _{1-f(x)\ \ \ \ for\ y = -1}^{f(x)\ \ \ \ \ \ \ for \ y = +1}
那么這個(gè)數(shù)據(jù)集的產(chǎn)生概率可以表示為:
P_f(D) = P(x_1)f(1-x_1)\cdot P(x_2)f(x_2)\cdot P(x_3)f(1-x_3)\cdots P(x_n)f(x_n)
如果我們找到了一個(gè)跟f(x)很像的函數(shù)h(x),那么也就代表我們求出了邏輯回歸的模型。這個(gè)函數(shù)h(x)稱(chēng)作似然函數(shù) (likelihood)。

如何找到函數(shù)h(x)呢?

如果h(x)≈f(x),那么
P_h(D) ≈ P_f(D)
其中
P_h(D) = P(x_1)h(1-x_1)\cdot P(x_2)h(x_2)\cdot P(x_3)h(1-x_3)\cdots P(x_n)h(x_n)
P_f(D)是上帝創(chuàng)造的,概率通常是很大,因此我們只要找到能讓P_h(D)最大的那個(gè)h(x)就可以了,這就是所謂的最大似然。

用數(shù)學(xué)的方法表示就是這樣:
\max_h\prod_{i=0}^Nh(y_ix_i)

tips:
根據(jù)
sigmoid
函數(shù)的特殊性:1-\theta(z) = \theta(-z),因此當(dāng)y_i=-1時(shí),h(y_ix_i) = 1-h(-x_i)
。

接下來(lái)將放置已久的\omega帶入:
\max_h\prod_{i=0}^N\theta(y_iW^Tx_i)
采用log變換將連乘改成連加,并添加負(fù)號(hào)轉(zhuǎn)化為求最小值問(wèn)題,再引入一個(gè)求平均的操作:
\min_h\frac{1}{N}\sum_{i=0}^N-ln\theta(y_iW^Tx_i)
帶入sigmoid函數(shù):
\min_h\sum_{i=0}^Nln(1+exp(-y_iW^Tx_i))
ok, 這是一個(gè)凸函數(shù),稱(chēng)作交叉熵誤差函數(shù)。
下面的操作不說(shuō)也知道,梯度下降擼起吧。。。


PS

這個(gè)ps挺大的。。。因?yàn)閮?nèi)容還有點(diǎn)多
上面的模型用的標(biāo)簽是(+1,-1),那么對(duì)于(0,1)這種情況呢?
只需將概率模型修改下:
\{_{P(0|x;\omega) = 1- \theta(z)}^{P(1|x;\omega) = \theta(z)}\\
合并后得到:
p(y|x) = \theta(z)^y(1-\theta(z))^{1-y}
依然用極大似然:
\max_{\theta}\prod_{i=0}^N\theta(z_i)^y(1-\theta(z_i))^{1-y}
依然取對(duì)數(shù)將連乘轉(zhuǎn)連加,并添加符號(hào)轉(zhuǎn)化為求最小值,再引入平均:
\min_h\frac{1}{N}\sum_{i=0}^N-[yln\frac{\theta(z_i)}{1-\theta(z_i)}+ln(1-\theta(z_i)]
帶入sigmoid函數(shù)之后依舊梯度下降開(kāi)擼吧。。。


參考引用:

  • 臺(tái)灣大學(xué)林軒田《機(jī)器學(xué)習(xí)基石》課程
  • 《統(tǒng)計(jì)學(xué)習(xí)方法》——李航
  • 七月在線課程
最后編輯于
?著作權(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)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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