統計學習方法——邏輯迴歸和最大熵模型

今天我們介紹兩個對數線性模型:邏輯迴歸和最大熵模型。邏輯迴歸是一種由條件概率P(Y|X)表示的分類模型,形式爲參數化的邏輯斯諦分佈。最大熵模型基於最大熵原理,認爲學習概率分佈模型時,在條件概率不確定的情況下,熵最大的模型即爲最好的模型。

邏輯迴歸

邏輯斯諦分佈

在《統計學習方法》這本書中,邏輯斯諦迴歸模型是目標是最大化條件概率分佈P(Y|X),條件概率爲參數化的邏輯斯諦分佈。所以在介紹邏輯迴歸前,先來看一下邏輯斯諦分佈。設X服從邏輯斯諦分佈,其分佈函數和密度函數如下:

F(x)=P(X\leqslant x)=\frac{1}{1+e^{-\frac{x-\mu}{\gamma }}}

f(x)=F^{'}(x)=\frac{e^{-\frac{x-\mu }{\gamma }}}{\gamma \left ( 1+ e^{-\frac{x-\mu }{\gamma }}\right )^2}

\gamma =1, \mu=0時,爲標準邏輯斯諦分佈。標準邏輯斯諦分佈的分佈函數和密度函數的圖形如圖所示:

F(x)是以(\mu ,\frac{1}{2})爲中心的中心對稱圖形。\gamma越小,F(x)在中心附近的梯度越大。對於任意邏輯斯諦分佈,有下式成立:

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

瞭解了邏輯斯諦分佈,現在來看看邏輯迴歸。

邏輯迴歸

邏輯斯諦迴歸假設標籤Y服從參數p爲邏輯斯諦分佈的伯努利分佈:

P(y=1|x)=\frac{e^{\omega x+b}}{1+e^{\omega x+b}}\\\\ P(y=0|x)=1-P(y=1|x)=\frac{1}{1+e^{\omega x+b}}

其中x=\left \{ x^{(1)}, x^{(2)}, ...,x^{(m)}\right \}表示輸入特徵;y\in \left \{ 0,1 \right \}代表標籤;\omega =\left \{ \omega_1,\omega_2,...,\omega_m \right \}和b爲待求參數。對於新的輸入數據,我們比較P(Y=1|x)和P(y=0|x)的大小,將實例分到取值大的組內。

爲了簡化後面的計算,令x=\left \{ x^{(1)}, x^{(2)}, ...,x^{(m)},1\right \},\omega =\left \{ \omega_1,\omega_2,...,\omega_m,b \right \},條件概率可以表示爲:

P(y=1|x)=\frac{e^{\omega x}}{1+e^{\omega x}}\\\\ P(y=0|x)=1-P(y=1|x)=\frac{1}{1+e^{\omega x}}

最後通過極大化對數似然函數優化參數:

L(w)\\ =log\prod_{i=1}^n p(y_i)^{y_i}(1-p(y_i))^{1-y_i}\\ =\sum_{i=1}^n y_ilogp(y_i)+(1-y_i)log(1-p(y_i))\\ =\sum_{i=1}^n y_ilog\frac{e^{\omega x_i+b}}{1+e^{\omega x_i+b}}+(1-y_i)log\frac{1}{1+e^{\omega x_i+b}}\\ =\sum_{i=1}^ny_i(\omega x_i+b)+log(1+e^{\omega x_i+b})

通過梯度下降法或者擬牛頓法求解最佳參數。

多標籤分類任務

邏輯迴歸只能用於二分類任務中,面對多標籤分類任務,我們可以對邏輯迴歸適當的調整,讓它可以解決多分類問題。多標籤分類問題有兩種:一對一和一對多,即一個數據對應一個標籤和一個數據對應多個標籤7。

對於一個數據對應一個標籤的問題:

P(y=i|x)=\frac{e^{\omega_ix+b_i}}{1+\sum_{k=1}^{K-1}e^{\omega_kx+b_k}}, i\in \left \{ 1,2,...,K-1 \right \}\\ P(y=K|x)=\frac{1}{{1+\sum_{k=1}^{K-1}e^{\omega_kx+b_k}}}

將x歸入條件概率最大的類別。

對於一個數據對應多個標籤的問題,需要對每一類分別訓練一個模型,對於每個模型,標籤爲是k類和非k類,比較P_k(y=1|x)P_k(y=0|x)的大小。若P_k(y=1|x)> P_k(y=0|x),則認爲x屬於第k類。

不過,對比這種講解方式,我感覺“邏輯迴歸是在線性迴歸的基礎上,引入sigmoid函數將標籤映射到(0,1)區間作爲y=1的概率,最後通過最大化對數似然函數求解最佳參數”這種解釋方式更容易理解一些。

最大熵模型

最大熵模型是基於最大熵原理提出的,它認爲在滿足所有鮮豔條件的情況下,熵最大的模型就是最好的模型。最大熵模型爲判別式模型,對於給定的輸入x,以條件概率P(y|x)輸出y。熵的概念在《統計學習方法——決策樹》這篇博客中已經介紹過了,我們再稍微複習一下。熵是衡量數據不確定的指標:

H(p)=-\sum_{i=1}^ip_ilogp_i

熵的大小和標籤取值大小無關,只和每個取值的概率有關;熵越大,數據的不確定性越大,均勻分佈數據的熵最大。最大熵模型目標就是在滿足所有約束條件的情況下,找出條件熵最大的模型:arg\max_{p(y|x)}-\sum_{x,y}p(x)p(y|x)logp(y|x)

我們來舉個小例子簡單說明一下最大熵模型的思想:一組數據,取值可能爲A, B, C, D, E,請問每個取值對應的概率爲多少?現在我們只知道它有五個取值,其它的條件一概不知,根據最大熵模型可以認爲它們服從均勻分佈,及每個取值對應的概率都是1/5;現在我們再引入一個條件P(A)+P(B)=1/3,根據這個條件我們可以知道P(C)+P(D)+P(E)=2/3,但是P(A)、P(B)如何分配這1/3我們不清楚,那我們就認爲是均勻分佈:P(A)=P(B)=1/6;同理,P(C)=P(D)=P(E)=2/9。

對於給定的訓練集D=\left \{ (x_1,y_1), (x_2,y_2),...,(x_n,y_n)\right \},我們可以確定聯合概率分佈和先驗概率的經驗分佈:

\tilde{P}(X=x, Y=y)=\frac{v(X=x, Y=y)}{N}

\tilde{P}(X=x)=\frac{v(X=x)}{N}

其中v(X=x, Y=y)表示訓練集中X=x, Y=y的樣本個數,v(X=x)表示X=x的樣本量,N表示總樣本量。

特徵函數

我們引入特徵函數來表示模型的一些約束條件:

這個公式看起來讓人有些盲目,我們來看個例子:

這樣是不是就很好理解了。我們可以求出基於聯合概率分佈的特徵函數期望值:E_{\tilde{P}}(f)=\sum_{x,y}\tilde{P}(x,y)f(x,y)

基於條件概率模型和先驗概率分佈的特徵函數期望值:E_p(f)=\sum_{x,y}\tilde{P}(x)P(y|x)f(x,y)

我們希望從數據集裏得出的特徵函數期望值與基於模型的期望值是相等的,有約束條件:E_p(f)=E_{\tilde{p}}(f)

至此,可以得到我們的優化目標爲:

\\arg\max_{p(y|x)}-\sum_{x,y}p(x)p(y|x)logp(y|x)\\ s.t. \\E_p(f_i)=E_{\tilde{p}} (f_i)\\ \ \sum_y(y|x)=1

將最大轉爲最小:

\\arg\min_{p(y|x)}\sum_{x,y}p(x)p(y|x)logp(y|x)\\ s.t. \\E_p(f_i)=E_{\tilde{p}} (f_i)\\ \ \sum_y(y|x)=1

將有約束條件的目標函數轉爲無約束最優化的對偶函數:

\min_p \max_\omega L(p,\omega )\\ =\min_p \max_\omega\sum_{x,y}p(x)p(y|x)logp(y|x)+\omega_0(1-\sum_yp(y|x))+\sum_{i=1}^n\omega_i(E_p(f_i)-E_{\tilde{p}}(f_i))\\ =\max_\omega \min_p \sum_{x,y}p(x)p(y|x)logp(y|x)+\omega_0(1-\sum_yp(y|x))+\sum_{i=1}^n\omega_i(E_p(f_i)-E_{\tilde{p}}(f_i))

然後求導,令導數爲0,進行求解。在求導這裏,參考一些其他博客,個人認爲《統計學習方法》裏求導這裏可能存在一些錯誤,我認爲這裏的求導應該是對p(Y=y|X=x)求的,這裏的y和x都是指定的值,而非X和Y可以取的任意值,所以在求導過程中對於左邊第一個求和項,只有{X=x,Y=y}對應的式子求導結果不爲0,即:

\frac{\partial \sum_{x,y}p(x)p(y|x)logp(y|x)}{\partial p(Y=y|X=x)}\\ =\frac{\partial p(X=x)p(Y=y|X=x)logp(Y=y|X=x)}{\partial p(Y=y|X=x)}

所以在L(p,w)對p求導結果爲:

\frac{\partial L}{\partial p}\\ =\tilde{p}(X=x)\left [logp(Y=y|X=x)+1 \right ]-\omega_0-\sum_{i=1}^{n}\omega_if_i\tilde{p}(X=x)\\

\frac{\partial L}{\partial p}=0,得:

\tilde{p}(X=x)\left [ logp(Y=y|X=x)+1 \right ]-\omega _0-\sum_{i=1}^{n}\omega _if_i\tilde{p}(X=x)=0\\ \tilde{p}(X=x)\left [ logp(Y=y|X=x)+1 \right ] = \omega _0+\sum_{i=1}^{n}\omega _if_i\tilde{p}(X=x)\\ logp(Y=y|X=x) = \frac{\omega _0}{\tilde{p}(X=x)}+\sum_{i=1}^{n}\omega _if_i-1\\ p(Y=y|X=x) = exp( \frac{\omega _0}{\tilde{p}(X=x)}-1)\cdot exp(\sum_{i=1}^{n}\omega _if_i)\\ p(Y=y|X=x) = \frac{exp\sum_{i=1}^{n}\omega _if_i}{exp(1-\frac{\omega_0}{\tilde{p}(X=x)})}

由於\sum_yp(y|x)=1,有

p_\omega (y|x)=\frac{exp(\sum_{i=1}^{n})\omega_if_i}{\sum_{y}exp(\sum_{i=1}^n)\omega_if_i}

求出p(y|x),接下來通過優化算法(迭代尺度法、牛頓法、擬牛頓法...)就是求出\omega就歐克了。

 

參考:

https://blog.csdn.net/yutao03081/article/details/78812014  特徵函數的例子就是參考這篇伯克利

https://www.cnblogs.com/hexinuaa/p/3353479.html,這個博客的最大熵模型講的非常詳細,值得學習。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章