邏輯(斯諦)迴歸(Logistic Regression)


GitHub
簡書
CSDN

在我們學習機器學習的過程中,我們所需解決的問題,大致可以分爲兩部分:分類和迴歸.其中,分類是指模型用來預測一個有限的離散值集合中的一個,比如貓狗分類,腫瘤的惡性或良性; 迴歸是指模型的輸出是一個連續變量,比如預測房價、身高等.本篇內容講解的是機器學習中經典的邏輯(斯諦)迴歸(Logistic Regression),從名字上看,大家誤以爲該方法是一種迴歸方法,其實不然,它是分類方法的一種,常用於二元分類,但是爲什麼會取名迴歸,我個人理解大致有如下幾點原因:

1. 利用迴歸的思想來解決分類問題;
2. 它的輸出也是一個連續值,通過設定閾值來實現分類 

1. 邏輯斯諦分佈

定義:設X是連續隨機變量,X服從邏輯斯諦分佈是指X具有下列分佈函數和密度函數:

(1)F(x)=P(Xx)=11+e(xu)/γ F(x)=P(X \leq x)=\frac{1}{1+e^{-(x-u)/\gamma}} \tag{1}

(2)f(x)=F(x)=e(xμ)γγ(1+e(xu)/γ)2 f(x)=F^{'}(x)=\frac{e^{-(x-\mu)\gamma}}{\gamma(1+e^{-(x-u)/\gamma})^2} \tag{2}

其中,μ\mu爲位置參數,γ>0\gamma > 0爲形狀參數.

該函數以點(μ,12)(\mu, \frac{1}{2})爲中對稱,既有如下關係:
(3)F(x+μ)=1F(x+μ)F(x+μ)12=F(x+μ)+12 \begin{aligned} F(-x+\mu) &= 1 - F(x+\mu)\\ F(-x+\mu)-\frac{1}{2} &= F(x + \mu) + \frac{1}{2} \end{aligned} \tag{3}
形狀參數γ\gamma的值越小,曲線在中心附近增長的越快.該函數的圖形如下圖所示:

在這裏插入圖片描述

圖一 邏輯斯諦分佈的分佈函數和密度函數

2 二元邏輯斯諦迴歸

二元邏輯斯諦迴歸模型是一種分類模型,有條件概率分佈P(YX)P(Y|X)表示,X取值爲實數,隨機變量 Y 取值爲 1或0;

邏輯斯諦迴歸模型的條件概率如下:

(4)p(Y=1x)=exp(wx+b)1+exp(wx+b)=11+exp((wx+b))P(Y=0x)=11+exp((wx+b)) \begin{aligned} p(Y=1|x)&=\frac{exp(w\cdot x+b)}{1+exp(w\cdot x+b)}=\frac{1}{1+exp(-(w\cdot x+b))} \\ P(Y=0|x)&=\frac{1}{1+exp((w\cdot x+b))} \end{aligned} \tag{4}

這裏, $ x \in R^n 表示樣本的特徵向量,Y \in {0, 1}$是輸出表示樣本的類別, wRnw \in R^n 和 $ b \in R是模型的參數,其中,w$ 表示權重向量,bb表示偏置。wxw \cdot x表示wwxx的內積.通常爲了方便,我們將樣本和權重向量進行擴充,仍記作wwbb
w=(w1,w2...wn,b) w = (w^1, w^2... w^n, b)
x=(x1,x2...xn,1) x = (x^1, x^2...x^n, 1)

此時邏輯斯蒂迴歸模型記作:

(5)p(Y=1x)=exp(wx)1+exp(wx)P(Y=0x)=11+exp((wx)) \begin{aligned} p(Y=1|x)&=\frac{exp(w\cdot x)}{1+exp(w\cdot x)} \\ P(Y=0|x)&=\frac{1}{1+exp((w\cdot x))} \end{aligned} \tag{5}

機率是指一個事件發生與不發生的概率比值,即p1p\frac{p}{1-p}
則它的對數機率爲lnit(p)=logp1plnit(p)=log \frac{p}{1-p},對於邏輯斯蒂迴歸迴歸而言,其對數機率爲
(6)logit(P(Y=1x)1P(Y=1x))=wx logit(\frac{P(Y=1|x)}{1-P(Y=1|x)})=w \cdot x \tag{6}

3 模型參數估計

對於給定的訓練數據集T={(x1,y1),(x2,y2)...(xn,yx)}T=\{(x_1, y_1), (x_2, y_2)...(x_n, y_x)\},可以應用極大似然估計(使模型預測的標籤爲真是標籤的值最大化)模型參數,從而得到最優的邏輯斯蒂迴歸模型。

首先,設P(Y=1x)=π(x),P(Y=0x)=1π(x)P(Y=1|x)=\pi(x), P(Y=0|x)=1-\pi(x),則似然函數爲:
(7)i=1n[π(x)]yi[1π(x)]1yi=i=1nyiπ(xi)+(1yi)(iπ(xi)) \begin{aligned} \prod_{i=1}^n[\pi(x)]^{y_i}[1-\pi(x)]^{1-y_i}=\prod_{i=1}^n{y_i\pi(x_i)+(1-y_i)(i-\pi(x_i))} \end{aligned} \tag{7}
極大似然函數和交叉熵的樹學公式形式時一摸一樣的,但是他們背後的數學原理略有不同。
通常在處理優化問題時,我們都利用對數函數來把連乘變成求和來簡化問題,因此公式七的對數似然函數爲:
(8)L(w)=i=1n[yilnπ(xi)+(1yi)ln(1π(xi))]=i=1n[yilnπ(xi)yiln(1π(xi))+ln(1π(xi))]=i=1n[yilnπ(xi)1π(xi)(+ln(1π(xi))]=i=1n[yi(wxi)+ln(11+exp((wx)))]=i=1n[yi(wxi)ln(1+exp(wx1))] \begin{aligned} L(w) &= \sum_{i=1}^{n}[y_i ln \pi(x_i)+(1-y_i)ln(1-\pi(x_i))]\\ &=\sum_{i=1}^{n}[y_i ln \pi(x_i) - y_i ln(1-\pi(x_i)) + ln(1-\pi(x_i))] \\ &=\sum_{i=1}^{n}[y_iln\frac{\pi(x_i)}{1-\pi(x_i)}(注:這就是對數機率值)+ln(1-\pi(x_i))] \\ &=\sum_{i=1}^{n}[y_i(w*x_i)+ln(\frac{1}{1+exp((w\cdot x))})] \\ &=\sum_{i=1}^{n}[y_i(w*x_i)-ln(1+exp(w\cdot x_1))] \end{aligned} \tag{8}

通過梯度下降和擬牛頓法即可求的該函數,我們求L(w)L(w)ww的倒數:

(9)L(w)w=i=1n[yixi(11+exp(wx1)exp(wxi))xi]=i=1n[yixiπ(xi)xi] \begin{aligned} \frac{\partial L(w)}{\partial w}&=\sum_{i=1}^{n}[y_ix_i-(\frac{1}{1+exp(w\cdot x_1)}*exp(w \cdot x_i)) * x_i]\\ &=\sum_{i=1}^{n}[y_ix_i-\pi(x_i)*x_i] \end{aligned} \tag{9}

通常我們在實際優化的時候,都是求取最小值,因此通常使用L(w)-L(w)作爲損失函數.

問題:在機器學習或深度學習中,我們通常以L2L_2作爲損失函數,但是爲什麼這裏是用了極大似然估計?

我們先觀察一下使用L2L_2範數作爲損失函數時,對ww的求導公式:
(10)L2(w)=12i=1n(π(xi)yi)2l2(w)w=i=1n[(π(xi)yi)π(xi)zzw]=i=1n[(π(xi)yi)π(xi)(1π(xi))xi] \begin{aligned} L_2(w)&=\frac{1}{2}\sum_{i=1}^{n}(\pi(x_i) - y_i)^2 \\ \frac{\partial l_2(w)}{\partial w} &=\sum_{i=1}^{n}[(\pi(x_i) - y_i)*\frac{\partial\pi (x_i)}{\partial z} * \frac{\partial z}{\partial w}] \\ &=\sum_{i=1}^{n}[(\pi(x_i) - y_i)\pi(x_i) (1-\pi(x_i)) x_i] \end{aligned} \tag{10}

其中, z=wxz=w \cdot x, 則π(x)=exp(x)1+exp(x)\pi (x) = \frac{exp(x)}{1+exp(x)},其導數爲π(x)=π(x)(1π(x))\pi^{'} (x)=\pi(x)(1-\pi(x))

這裏主要考慮的是優化問題,極大似然估計函數是一個凸函數,這是優化問題再最容易優化的模型,我們可以得到全局最優解,而對於L2L_2,由於Sigmoig函數導數的特性,當π(x)\pi (x)接近0或者1時,此時的倒數就接近0,從而容易使函數陷入局部最優.

下圖是兩個損失函數以w爲參數的簡化圖
L2 Error
在這裏插入圖片描述

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