台湾大学林轩田机器学习基石课程学习笔记10 -- Logistic Regression
紅色石頭的個人網站:redstonewill.com
上一節課,我們介紹了Linear Regression線性回歸,以及用平方錯誤來尋找最佳的權重向量w,獲得最好的線性預測。本節課將介紹Logistic Regression邏輯回歸問題。
一、Logistic Regression Problem
一個心臟病預測的問題:根據患者的年齡、血壓、體重等信息,來預測患者是否會有心臟病。很明顯這是一個二分類問題,其輸出y只有{-1,1}兩種情況。
二元分類,一般情況下,理想的目標函數f(x)>0.5,則判斷為正類1;若f(x)<0.5,則判斷為負類-1。
但是,如果我們想知道的不是患者有沒有心臟病,而是到底患者有多大的幾率是心臟病。這表示,我們更關心的是目標函數的值(分布在0,1之間),表示是正類的概率(正類表示是心臟病)。這跟我們原來討論的二分類問題不太一樣,我們把這個問題稱為軟性二分類問題(’soft’ binary classification)。這個值越接近1,表示正類的可能性越大;越接近0,表示負類的可能性越大。
對于軟性二分類問題,理想的數據是分布在[0,1]之間的具體值,但是實際中的數據只可能是0或者1,我們可以把實際中的數據看成是理想數據加上了噪聲的影響。
如果目標函數是f(x)=P(+1|x)∈[0,1]f(x)=P(+1|x)∈[0,1]的話,我們如何找到一個好的Hypothesis跟這個目標函數很接近呢?
首先,根據我們之前的做法,對所有的特征值進行加權處理。計算的結果s,我們稱之為’risk score’:
但是特征加權和s∈(?∞,+∞)s∈(?∞,+∞),如何將s值限定在[0,1]之間呢?一個方法是使用sigmoid Function,記為θ(s)θ(s)。那么我們的目標就是找到一個hypothesis:h(x)=θ(wTx)h(x)=θ(wTx)。
Sigmoid Function函數記為θ(s)=11+e?sθ(s)=11+e?s,滿足θ(?∞)=0θ(?∞)=0,θ(0)=12θ(0)=12,θ(+∞)=1θ(+∞)=1。這個函數是平滑的、單調的S型函數。則對于邏輯回歸問題,hypothesis就是這樣的形式:
h(x)=11+e?wTxh(x)=11+e?wTx
那我們的目標就是求出這個預測函數h(x),使它接近目標函數f(x)。
二、Logistic Regression Error
現在我們將Logistic Regression與之前講的Linear Classification、Linear Regression做個比較:
這三個線性模型都會用到線性scoring function s=wTxs=wTx。linear classification的誤差使用的是0/1 err;linear regression的誤差使用的是squared err。那么logistic regression的誤差該如何定義呢?
先介紹一下“似然性”的概念。目標函數f(x)=P(+1|x)f(x)=P(+1|x),如果我們找到了hypothesis很接近target function。也就是說,在所有的Hypothesis集合中找到一個hypothesis與target function最接近,能產生同樣的數據集D,包含y輸出label,則稱這個hypothesis是最大似然likelihood。
logistic function: h(x)=θ(wTx)h(x)=θ(wTx)滿足一個性質:1?h(x)=h(?x)1?h(x)=h(?x)。那么,似然性h:
likelihood(h)=P(x1)h(+x1)×P(x2)h(?x2)×?P(xN)h(?xN)likelihood(h)=P(x1)h(+x1)×P(x2)h(?x2)×?P(xN)h(?xN)
因為P(xn)P(xn)對所有的h來說,都是一樣的,所以我們可以忽略它。那么我們可以得到logistic h正比于所有的h(ynx)h(ynx)乘積。我們的目標就是讓乘積值最大化。
如果將w代入的話:
為了把連乘問題簡化計算,我們可以引入ln操作,讓連乘轉化為連加:
接著,我們將maximize問題轉化為minimize問題,添加一個負號就行,并引入平均數操作1N1N:
將logistic function的表達式帶入,那么minimize問題就會轉化為如下形式:
至此,我們得到了logistic regression的err function,稱之為cross-entropy error交叉熵誤差:
三、Gradient of Logistic Regression Error
我們已經推導了EinEin的表達式,那接下來的問題就是如何找到合適的向量w,讓EinEin最小。
Logistic Regression的EinEin是連續、可微、二次可微的凸曲線(開口向上),根據之前Linear Regression的思路,我們只要計算EinEin的梯度為零時的w,即為最優解。
對EinEin計算梯度,學過微積分的都應該很容易計算出來:
最終得到的梯度表達式為:
為了計算EinEin最小值,我們就要找到讓?Ein(w)?Ein(w)等于0的位置。
上式可以看成θ(?ynwTxn)θ(?ynwTxn)是?ynxn?ynxn的線性加權。要求θ(?ynwTxn)θ(?ynwTxn)與?ynxn?ynxn的線性加權和為0,那么一種情況是線性可分,如果所有的權重θ(?ynwTxn)θ(?ynwTxn)為0,那就能保證?Ein(w)?Ein(w)為0。θ(?ynwTxn)θ(?ynwTxn)是sigmoid function,根據其特性,只要讓?ynwTxn?0?ynwTxn?0,即ynwTxn?0ynwTxn?0。ynwTxn?0ynwTxn?0表示對于所有的點,ynyn與wTxnwTxn都是同號的,這表示數據集D必須是全部線性可分的才能成立。
然而,保證所有的權重θ(?ynwTxn)θ(?ynwTxn)為0是不太現實的,總有不等于0的時候,那么另一種常見的情況是非線性可分,只能通過使加權和為零,來求解w。這種情況沒有closed-form解,與Linear Regression不同,只能用迭代方法求解。
之前所說的Linear Regression有closed-form解,可以說是“一步登天”的;但是PLA算法是一步一步修正迭代進行的,每次對錯誤點進行修正,不斷更新w值。PLA的迭代優化過程表示如下:
w每次更新包含兩個內容:一個是每次更新的方向ynxnynxn,用vv表示,另一個是每次更新的步長ηη。參數(v,η)(v,η)和終止條件決定了我們的迭代優化算法。
四、Gradient Descent
根據上一小節PLA的思想,迭代優化讓每次w都有更新:
我們把Ein(w)Ein(w)曲線看做是一個山谷的話,要求Ein(w)Ein(w)最小,即可比作下山的過程。整個下山過程由兩個因素影響:一個是下山的單位方向vv;另外一個是下山的步長ηη。
利用微分思想和線性近似,假設每次下山我們只前進一小步,即ηη很小,那么根據泰勒Taylor一階展開,可以得到:
關于Taylor展開的介紹,可參考我另一篇博客:
多元函數的泰勒(Taylor)展開式
迭代的目的是讓EinEin越來越小,即讓Ein(wt+ηv)<Ein(wt)Ein(wt+ηv)<Ein(wt)。ηη是標量,因為如果兩個向量方向相反的話,那么他們的內積最小(為負),也就是說如果方向vv與梯度?Ein(wt)?Ein(wt)反向的話,那么就能保證每次迭代Ein(wt+ηv)<Ein(wt)Ein(wt+ηv)<Ein(wt)都成立。則,我們令下降方向vv為:
v=??Ein(wt)||?Ein(wt)||v=??Ein(wt)||?Ein(wt)||
vv是單位向量,vv每次都是沿著梯度的反方向走,這種方法稱為梯度下降(gradient descent)算法。那么每次迭代公式就可以寫成:
下面討論一下ηη的大小對迭代優化的影響:ηη如果太小的話,那么下降的速度就會很慢;ηη如果太大的話,那么之前利用Taylor展開的方法就不準了,造成下降很不穩定,甚至會上升。因此,ηη應該選擇合適的值,一種方法是在梯度較小的時候,選擇小的ηη,梯度較大的時候,選擇大的ηη,即ηη正比于||?Ein(wt)||||?Ein(wt)||。這樣保證了能夠快速、穩定地得到最小值Ein(w)Ein(w)。
對學習速率ηη做個更修正,梯度下降算法的迭代公式可以寫成:
其中:
η′=η||?Ein(wt)||η′=η||?Ein(wt)||
總結一下基于梯度下降的Logistic Regression算法步驟如下:
- 初始化w0w0
- 計算梯度?Ein(wt)=1N∑Nn=1θ(?ynwTtxn)(?ynxn)?Ein(wt)=1N∑n=1Nθ(?ynwtTxn)(?ynxn)
- 迭代跟新wt+1←wt?η?Ein(wt)wt+1←wt?η?Ein(wt)
- 滿足?Ein(wt+1)≈0?Ein(wt+1)≈0或者達到迭代次數,迭代結束
五、總結
我們今天介紹了Logistic Regression。首先,從邏輯回歸的問題出發,將P(+1|x)P(+1|x)作為目標函數,將θ(wTx)θ(wTx)作為hypothesis。接著,我們定義了logistic regression的err function,稱之為cross-entropy error交叉熵誤差。然后,我們計算logistic regression error的梯度,最后,通過梯度下降算法,計算?Ein(wt)≈0?Ein(wt)≈0時對應的wtwt值。
注明:
文章中所有的圖片均來自臺灣大學林軒田《機器學習基石》課程
關注公眾號并輸入關鍵字“jspdf”獲得該筆記的pdf文件哦~
更多AI資源請關注公眾號:紅色石頭的機器學習之路(ID:redstonewill)
總結
以上是生活随笔為你收集整理的台湾大学林轩田机器学习基石课程学习笔记10 -- Logistic Regression的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Widnwos 2000 命令集合
- 下一篇: 再谈用MFC实现文件拖放到编辑框