邏輯回歸損失函數推導


引言

假設今天希望將機器學習應用到醫院中去,比如對於某一個患了心臟病的病人,求他3個月之后病危的概率。那么我們該選擇哪一個模型,或者可以嘗試已經學過的線性回歸?

但是很遺憾的是,如果我們要利用線性回歸,我們收集到的資料中應當包含病人3個月后病危的概率。這在實際中是很難得到的,因為對於一個患病的病人,你只能知道他3個月后到底是病危或者存活。所以線性回歸並不適用這種場景。

logistic函數

上面提到我們最終的目標是一個概率值\(P(y|x)\),這里\(y=+1\)指代病人3個月后病危這個事件;\(y=-1\)指代病人3個月后存活這個事件。顯然\(P(-1|x) = 1 - P(1|x)\).

我們先前學過線性回歸,知道可以通過加權的方式求出各項特征的'分數',那這個分數怎么轉換為一個概率值?這里就需要引入一個logistic函數。它的表達式為:$$
\theta(s)=\frac{1}{1+e^{-s}}

\[它的圖像如下所示: <img src="https://img2018.cnblogs.com/blog/1531067/201903/1531067-20190312232659084-1342501547.png" height=50% width=50%> 可以看到這個函數有十分不錯的性質: 1. $\theta(-∞)=0, \ \theta(+∞)=1$ 2. $1-\theta(s)=\theta(-s)$ 也就是說我們可以把加權得到的'分數'通過logistic函數轉化為一個概率值,並且加權得到的'分數'越大,這個概率值也越大。這真的還蠻有道理的。 好了,我們的模型已經定義完畢了,稱它為邏輯回歸模型:\]

\begin{equation}
h(x) = \frac{1}{1+e^{-w^Tx}} \ \ \ \ \ w,x都是向量
\end{equation}

\[也就是說,我們獲取到一個病人的特征$x$,將它輸入模型,就能知曉這個病人3個月后病危的概率。但是,還有最重要的一步,這個模型的參數$w$如何確定?不同的參數$w$會帶來不同的模型$h(x)$.經驗告訴我們可以從已獲得的資料中找到一些端倪獲取最合適的$w$。 ## 損失函數 線性回歸中,我們定義了一個平方損失函數,通過對損失函數求導數得到最后的參數。那依樣畫葫蘆,我們也為邏輯回歸定義一個損失函數,然后試着對損失函數求梯度,是不是能解出最后的參數了。那么想一下,邏輯回歸的損失函數如何定義?還用最小二乘法么?這顯然不符合場景,畢竟已有的資料只告訴我們每一組數據對應的結果是哪一類的。 我們還是從數據的產生來分析,現在已有的數據是這些:\]

D = {(x_1, 1), (x_2, 1), (x_3, 1), ... , (x_n, -1)}

\[當然,這些數據的產生是相互獨立的,所以獲得$D$這筆資料的概率就是\]

\begin{equation}
P(x_1, 1) * P(x_2, 1) * P(x_3, 1) * ... * P(x_n, -1)
\end{equation}$$
再將(2)式寫為條件概率分布$$
\begin{equation}
P(x_1)P(1|x_1) * P(x_2)P(1|x_2) * P(x_3)P(1|x_3) * ... * P(x_n)P(-1|x_n)
\end{equation}$$
再者,假設每一筆數據的概率服從0-1分布。$$\begin{equation}
P(y|x_i) =
\left {
\begin{array}{lr}
f(x_i) \ \ \ \ \ \ \ \ \ \ y=+1 \
1 - f(x_i) \ \ \ \ \ y=-1
\end{array}
\right.
\end{equation}$$
所以最后寫成的形式:$$\begin{equation}
P(x_1)f(x_1) * P(x_2)f(x_2) * P(x_3)f(x_3) * ... * P(x_n)(1-f(x_n))
\end{equation}$$

也就說這筆資料\(D\)由真正的模型\(f(x)\)產生的話,概率是(5)這么大。但是我們不知道真正的模型f(x)長什么樣子,我們現在只知道我們自己定義了一個模型\(h(x)\),它長成(1)這個樣子。所以現在的任務就是從很多的\(h(x)_1, h(x)_2, h(x)_3, ..., h(x)_m\)中找到其中一個最接近真正的模型\(f(x)\)並將它作為我們最后的\(h(x)\)

所以如何衡量\(h(x)\)\(f(x)\)的接近程度?如果我們現在用\(h(x)\)代替\(f(x)\)去產生這組數據集\(D\)也能得到一個概率(6).$$\begin{equation}
P(x_1)h(x_1) * P(x_2)h(x_2) * P(x_3)h(x_3) * ... * P(x_n)(1-h(x_n))
\end{equation}$$

使得(6)式的概率最大的那個\(h(x)\)我們會認為它與\(f(x)\)最相似,這就是最大似然的思想。又因為對於所有的\(h(x)_i\)產生的概率:$$\begin{equation}
P(x_1) * P(x_2) * P(x_3) * ... * P(x_n)
\end{equation}$$
這部分都是相同的,所以我們認為最接近\(f(x)\)\(h(x)\)能使(8)最大即可

\[\begin{equation} h(x_1) * h(x_2) * h(x_3) * ... * (1-h(x_n)) \end{equation}\]

再由於logistic函數的第2個性質,可以將(8)變形:

\[\begin{equation} h(x_1) * h(x_2) * h(x_3) * ... * h(-x_n) \end{equation}\]

最終的目標是解出下面這個優化問題:$$\begin{equation}
\mathop{max}\limits_{w} \ \ \prod_{i=1}^{n}h(y_ix_i)
\end{equation}$$
再次變形,求一個式子的最大值,相當於求它相反數的最小:$$\begin{equation}
\mathop{min}\limits_{w} \ \ -\prod_{i=1}^{n}h(y_ix_i)
\end{equation}$$
接下來我們要對(11)式取對數,一方面原因是因為對數函數的單調特性,另一方面是能將原來的連乘簡化到連加,所以取對數后:$$\begin{equation}
\mathop{min}\limits_{w} \ \ -\sum_{i=1}^{n}\ln{h(y_ix_i)}
\end{equation}$$
\(h(x)\)展開,能得到$$\begin{equation}
\mathop{min}\limits_{w} \ \ -\sum_{i=1}^{n}\ln{\frac{1}{1+e^{-y_iw^Tx_i}}} \ \ \ \ \ \ \ \ \ \ w與x_i都是向量,x_i表示第i筆數據
\end{equation}$$
再一次$$\begin{equation}
\mathop{min}\limits_{w} \ \ \sum_{i=1}^{n}\ln{(1+e^{-y_iw^Tx_i})} \ \ \ \ \ \ \ \ \ \ w與x_i都是向量,x_i表示第i筆數據
\end{equation}$$
大功告成,我們得到了邏輯回歸的損失函數,它長成(15)式這個樣子$$\begin{equation}
J(w)= \sum_{i=1}^{n}\ln{(1+e^{-y_iw^Tx_i})} \ \ \ \ \ \ \ \ \ \ w與x_i都是向量,x_i表示第i筆數據
\end{equation}$$
我們的目標就是找到最小化\(J(w)\)的那個\(w\).就像在線性回歸中做的那樣,接下來我們要利用鏈式法則對它求導:$$\begin{equation}
\frac{\partial J(w)}{\partial w_j} = \sum_{i=1}^{n}\frac{\partial \ln{(1+e^{-y_iw^Tx_i})}}{\partial (-y_iw^Tx_i)} * \frac{\partial (-y_iw^Tx_i)}{\partial w_j}
\end{equation}$$
化解得到$$\begin{equation}
\frac{\partial J(w)}{\partial w_j} = \sum_{i=1}^{n}\frac{e^{-y_iw^Tx_i}}{1+e^{-y_iw^Tx_i}} * (-y_ix_{i,j}) \ \ \ \ x_{i,j}是個標量,是第i筆數據中第j個分量
\end{equation}$$
所以對於整個向量\(w\)的梯度為$$
\begin{equation}
\frac{\partial J(w)}{\partial w} = \sum_{i=1}^{n}\frac{e^{-y_iw^Tx_i}}{1+e^{-y_iw^Tx_i}} * (-y_ix_i) \ \ \ \ 想象將對單個w_i的結果筆直堆成一個向量
\end{equation}$$
\(\frac{e^{-y_iw^Tx_i}}{1+e^{-y_iw^Tx_i}}\)正好可以寫成logistic函數的形式,所以最終對\(w\)的梯度寫成下面這個樣子$$
\begin{equation}
\frac{\partial J(w)}{\partial w} = \sum_{i=1}^{n}h(-y_iw^Tx_i)(-y_ix_i)
\end{equation}$$
很遺憾,我們令(19)等於0的話,很難求解出\(w\)。為此,我們需要用額外的方法求解這個問題。

梯度下降

這個可學習的資料太多了,思想就是假設函數上有一個點,它沿着各個方向都有它的方向導數,那么總是沿着方向導數最大的反方向走,也就是梯度的反方向走,這個點總是能走到最低點。每一次移動的距離用一個系數lr來表示,每次更新\(w\),數次迭代之后,\(w\)趨近於最優解:$$
\begin{equation}
w_{i+1} := w_{i} - lr * \sum_{i=1}^{n}\frac{e^{-y_iw^Tx_i}}{1+e^{-y_iw^Tx_i}} * (-y_ix_i) \ \ \ \ \ lr是大於0的系數
\end{equation}$$


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM