標籤:

機器學習總結-Logistic 回歸

引言

最近又重新看了一遍李航老師的《統計學習方法》這本書,想來之前一直沒有對書中的內容做一些總結記錄,因此藉此機會對其中涉及的演算法進行一些總結,同時用代碼實現其中的一些演算法,以便以後翻閱。下面先從簡單的Logistic回歸模型說起。

Logistic分布

Logistic回歸模型是統計學習中一個經典分類方法,Logistic分布的定義如下:

定義 1:設X為連續隨機變數, X服從Logistic分布是指X具有如下的分布函數和概率密度函數

F(x) = P(Xleq x) = frac{1}{1+e^{-(x-mu )/gamma } } .................累積分布函數

f(x) = F(x)=frac{e^{-(x-mu )/gamma } }{gamma (1+e^{-(x-mu)/gamma})^{2}} .................... 概率密度函數

其中mu稱為位置參數,而gamma>0稱為形狀參數,gamma越小,曲線在中心附近的增長速度越快。

Logistic分布的累積分布函數的圖形如下圖1所示,可看出分布函數的圖形是S形曲線(sigmoid curve),曲線關於點(mu,1/2)中心對稱,即:

F(-x+mu) - frac{1}{2} = -F(x-mu)+frac{1}{2}

二項Logistic回歸模型

二項Logistic回歸模型是一種分類模型,由條件概率分布P(Y|X)表示,形式為參數化的Logistic分布。

定義 2:二項Logistic回歸模型由如下條件概率分布確定

P(Y=1|x) = frac{e^{-w^Tcdot x+b}}{1+e^{-w^Tcdot x+b}} P(Y=0|x) = frac{1}{1+e^{-w^Tcdot x+b}}

其中xin R^{n}為輸入向量,Yin left{ 0,1 
ight}  為輸出, win R^{n}(權重向量)和b in R(偏置項)為參數(參數化模型)。其中可對權重向量和輸入向量進行擴充,簡化上述條件概率公式如下:

P(Y=1|x) = frac{e^{-w^Tcdot x}}{1+e^{-w^Tcdot x}}

P(Y=1|x) = frac{1}{1+e^{-w^Tcdot x}}

其中w = (w^{(1)},w^{(2)},w^{(3)},...,w^{(n),b} )^{T}x = (x^{(1)},x^{(2)},x^{(3)},...,x^{(n)},1)^{T}

二項Logistic回歸模型的參數估計方法

給定訓練集T = left{ (x_{1},y_{1} ),(x_{2},y_{2}),...,(x_{n},y_{n}) 
ight}  , x_{i}in R^{n}  , y_{i} in left{ 0,1 
ight} ,採用極大似然估計法估計模型參數,即:

P(Y=1|x) =  frac{e^{-w^Tcdot x}}{1+e^{-w^Tcdot x}} = pi(x), P(Y=0|x) = frac{1}{1+e^{-w^Tcdot x}} =1- pi(x)

則相應的似然函數和對數似然函數如下

prod_{i=1}^{N}[pi(x_{i})]^{y_{i}}[1-pi(x_i)]^{1-y_{i}} .............似然函數

L(w) = sum_{i=1}^{N}[{y_i logpi(x_i)+(1-y_i) log(1-pi(x_i))}]..................對數似然函數

=sum_{i=1}^{N}[{y_ilogfrac{pi(x_i)}{1-pi(x_i)}+log(1-pi(x_i)) } ]

=sum_{i=1}^{N}[{y_i(wcdot x_i)-log(1+e^{(w cdot x_i)})}]

隨後可採用梯度上升法或擬牛頓法求L(w)的極大值,得到參數w的估計值,假設參數w的極大似然估計值為x^*,則所得到的二項Logistic模型為

P(Y=1|x) = frac{e^{-w^{*T}cdot x}}{1+e^{-w^{*T}cdot x}} P(Y=0|x) = frac{1}{1+e^{-w^{*T}cdot x}}

在對測試數據所屬類別進行推斷時,一般是將測試數據的輸入向量x以及求得的最優參數值w^*代入sigmoid函數frac{1}{1+e^{-w^{*T}cdot x}} ,如果所得結果大於0.5,則將其歸為類別1(正類),否則歸為類別0(負類)。

附1:利用梯度上升法(極大化極大似然估計函數)訓練Logistic回歸模型

尋找某函數的最大值,其中常用的方法是沿著該函數的梯度方向進行搜索。以函數f(x,y)為例,則函數f(x,y)的梯度為
abla f(x,y) = egin{pmatrix} frac{partial f(x,y)}{partial x} \* \* frac{partial f(x,y)}{partial y}  end{pmatrix}。梯度運算元總是指向函數值增長最快的方向。而每次迭代的增長量的大小由步長決定,記為alpha。因此,logistic模型的權值更新公式如下:

w := w + alpha 
abla_wf(w)..........(1)

logistic模型的梯度上升法更新即是不斷迭代公式(1),直到滿足某個停止條件為止(如迭代次數達到指定值,演算法的w的更新值很小或演算法達到某個允許誤差範圍),該迭代計算公式與常見的梯度下降法的迭代計算公式的區別僅在於符號,即梯度下降法的迭代計算公式為:

w := w - alpha 
abla_wf(w)............(2)

對於Logistic回歸模型而言(此處利用向量化,即vectorization的思想),其對數似然函數的偏導數為


abla_wf(w) = 
abla_wL(w)=x^T * e = x^T * ( y - frac{1}{1+e^{-w^Tcdot x}} )

因此基於梯度上升法的logistic模型的迭代更新,可採用如下兩種演算法實現。

Logistic模型迭代更新演算法(batch gradient ascent):

Logistic模型迭代更新演算法( stochastic gradient ascent):

採用梯度上升法迭代求解Logistic回歸模型的代碼實現(參考《機器學習實戰》)。


推薦閱讀:

機器學習基礎與實踐(一)----數據清洗
準備應對 AI 的惡意使用
深入機器學習系列21-最大熵模型
Perceptual loss for Real time Style Transfer and Super-Resolution 論文閱讀
基於NLP的股價預測

TAG:機器學習 |