機器學習基石筆記10:邏輯斯蒂(Logistic)回歸 上

題目:輸入訓練集是病人的信息,標記是得病與否,要求目標函數判斷得病的概率

首先根據要求設計假設函數如下:

  • 目標函數: f(x)=P(+1|x)inleft[ 0,1 
ight]
  • 求各屬性的加權總分 w^Tx
  • 將分數轉化為0-1的值,利用邏輯斯蒂函數 	heta(s)=frac{e^s}{1+e^s}=frac{1}{1+e^{-s}} (該函數是一個平滑(處處可微分),單調遞增的S形(sigmoid)函數,因此又被稱為sigmoid函數)

  • h=	heta(w^tx)=frac{1}{1+e^{-w^tx}}
  • 求最小誤差函數(損失函數)

pla 線性分類 邏輯斯蒂回歸

轉換一下目標函數的表現形式:

假設有訓練集 D=left{ (x_1,circ),(x_2,	imes) ...(x_n,	imes)
ight} ,則通過目標函數產生此樣本的概率是(g=likelihood(h)~f :g取h的最大似然 => g= argmax likelihood(h)):

P(D)=P(x_1)P(circ|x_1)*P(x_2)P(	imes|x_2)...*P(x_n)P(	imes|x_n)\ =P(x_1)f(x_1)*P(x_2)(1-f(x_2))...*P(x_n)(1-f(x_n))\ approx P(x_1)h(x_1)*P(x_2)(1-h(x_2))...*P(x_n)(1-h(x_n))\ = P(x_1)h(x_1)*P(x_2)h(-x_2)...*P(x_n)h(-x_n)quad (對稱性:1-h(x)=h(-x))\

注意:其中上式中P(xn)對h的選擇沒有影響,所有的h都是一樣的

則有: likelihood(logisticquad h)proptoprod_{n=1}^{N}h(y_nx_n) =>找到一個h,讓這個可能性最大(最大似然)

因為我們已經有 h=	heta(w^tx)=frac{1}{1+e^{-w^tx}} ,所以我們要求最大值時的w,如下:

max(w)quad likelihood(logisticquad w)proptoprod_{n=1}^{N}	heta(y_nw^Tx)

max prod_{n=1}^{N}	heta(y_nw^Tx_n)\ Rightarrow maxquad ln(prod_{n=1}^{N}	heta(y_nw^Tx_n))(連加轉連乘)\ Rightarrow maxquad sum_{n=1}^{N}{ln	heta(y_nw^Tx_n)}\ Rightarrow minquad sum_{n=1}^{N}{-ln	heta(y_nw^Tx_n)}(最大轉最小)\ Rightarrow minquad frac{1}{N}sum_{n=1}^{N}{-ln	heta(y_nw^Tx_n)}(方便下面操作)\Rightarrow minquad frac{1}{N}sum_{n=1}^{N}{-ln(frac{1}{1+exp(-y_nw^Tx_n)})}(代入	heta 表達式)\ Rightarrow minquad frac{1}{N}sum_{n=1}^{N}{ln({1+exp(-y_nw^Tx_n)})}\ Rightarrow E_{in}(w)=frac{1}{N}sum_{n=1}^{N}err(w,x_n,y_n)\ Rightarrow 找到一個w讓E_{in}最小

接下來,求解方程

該函數為連續、可微、凹函數,因此其最小值在梯度為零時取得。

對權值向量w的各個分量求解偏微分:

Wi分量的梯度(偏微分)為:

Ein整個梯度統一表示為:

再觀察此函數,發現該函數是以 	heta 函數為權值,對 -y_nx_n 加權求和函數

聯想到PLA演算法,並將PLA的求解步驟改寫成如: w_{i+1}=w_i+left[ sign(w_t^Tx_n)
e y_n 
ight]y_nx_n Rightarrow \ w_{i+1}=w_i+etavec vquad (eta: 步長,vec v:更新方向)(迭代優化)

對於邏輯斯蒂回歸來說,v是梯度下降的方向, eta 是每次下降的步長

為了簡單計算,將步長 eta 固定,將v作為單位向量僅代表方向,找出使得Ein(w)最小的w,即有: mathop{min}limits_{|v|=1}E_{in}(w_t+eta v) (非線性帶約束),將曲線看做很小的線段(泰勒展開(只對很小的線段步長適用)),則有:

E_{in}(w_t+eta v)approx E_{in}(w_t)+eta v^T
abla E_{in}(w_t)(求v的線性式)

因為 E_{in}(w_t)是已知值,eta 為給定的大於0的值,所以可以轉換為一下求最小問題:

mathop{min}limits_{|v|=1}quad v^T
abla E_{in}(w_t)\

因為兩個向量最小的情況為其方向相反,即乘積為負值,則v如下:

v=-frac{
abla E_{in}(w_t)}{||
abla E_{in}(w_t)||} (v是單位向量)

將v代入 w_{t+1} 公式有:

w_{t+1}=w_t-eta frac{
abla E_{in}(w_t)}{||
abla E_{in}(w_t)||}\

更新公式表示權值向量w每次向著梯度的反方向移動一小步,按照此種方式更新可以儘快速度找到Ein最小的w,此種方式稱作梯度下降。接下來討論 步長eta 對梯度下降的影響:

根據上面的w更新公式, 不同eta對w更新的結果可以如上圖一二所示,較小的步長更新正確但較慢,較大的步長容易出錯(不適用於泰勒展開) ,圖三表示步長可變,與梯度大小成正比,以此我們有新的公式 eta_{new} =frac{eta_{old}}{|
abla E_{in}(w_t)|} ,再代入上面公式有:

w_{t+1}=w_t-eta 
abla E_{in}(w_t)\

此時 eta 固定,被稱為學習速率。

邏輯斯蒂回歸演算法總結如下:

  • w初始值w0,迭代次數為t
  • 計算梯度

  • 更新 w_{t+1}=w_t-eta 
abla E_{in}(w_t)
  • 直到 
abla E_{in}(w_t)approx 0 或者達到迭代次數

題圖:實在不知道找啥圖了,隨手怒上一張二次元少女。 2017年11月6日11:09:48

推薦閱讀:

面壁者系列:Logistic回歸

TAG:機器學習 | Logistic回歸 | logisticregression |