github:代碼實現之邏輯回歸
本文算法均使用python3實現
1. 什么是邏輯回歸
《機器學習實戰》一書中提到:
利用邏輯回歸進行分類的主要思想是:根據現有數據對分類邊界線建立回歸公式,以此進行分類(主要用於解決二分類問題)。
由以上描述我們大概可以想到,對於使用邏輯回歸進行分類,我們首先所需要解決的就是尋找分類邊界線。那么什么是分類邊界線呢?


1.1 $ sigmoid $ 函數
$ sigmoid $ 函數定義如下: $$ g(z) = \frac{1}{1+e^{-z}} $$
其函數圖像為:

2. 邏輯回歸模型函數
在了解了分類邊界: $$ z(x^{(i)}) = \theta_0 + \theta_1 x^{(i)}_1 + \theta_2 x^{(i)}_2 = \theta^T x^{(i)} $$
其中,$$ \theta = \begin{bmatrix} \theta_0 \ \theta_1 \ \theta_2 \ \vdots \ \theta_n \ \end{bmatrix} , x^{(i)} = \begin{bmatrix} x^{(i)}_0 \ x^{(i)}_1 \ x^{(i)}_2 \ \vdots \x^{(i)}n \ \end{bmatrix} $$
而 $ x_0^{(i)} = 1 $ 是偏置項(具體解釋見線性回歸), $ n $ 表示特征數,$ i=1,2,...,m $ 表示樣本數。
以及 $ sigmoid $ 函數 : $$ g(z) = \frac{1}{1+e^{-z}} $$
我們可以構造出邏輯回歸模型函數: $$ h\theta(x^{(i)}) = g(z) = g( \theta^T x^{(i)} ) = \frac{1}{1+e^{-\theta^T x^{i}}} $$
使得我們可以對於新樣本 $ x^{new} = [x^{new}_1, x^{new}2,...,x^{new}n]^T $ 進行輸入,得到函數值 $ h\theta(x^{new}) $,根據 $ h\theta(x^{new}) $ 與0.5的比較來將新樣本進行分類。
3. 邏輯回歸代價函數
回想在線性回歸中,我們是利用均方誤差來作為代價函數: $$ J(\theta) = \frac{1}{2m} \sum_{i=1}^m (h_\theta(x^{(i)}) - y^{(i)})^2 $$
同樣的,假設我們仍舊使用均方誤差來作為邏輯回歸大家函數,會出現什么效果呢?將 $ g(z) = \frac{1}{1+e^{-z}} $ 帶入上式,我們會發現, $ J(\theta) $ 為一個非凸函數,也就是說該函數存在許多局部最小值點,在求解參數的過程中很容易陷入局部最小值點,而無法求得真正的最小值點。

我們不妨換一個思路來求解這個問題。在上一節中提到:$ sigmoid $ 函數實際表達的是將樣本分為“1”類的概率,也就是說,使用 $ sigmoid $ 函數求解出來的值為類1的后驗估計 $ p(y=1|x,\theta) $ ,故我們可以得到: $$ p(y=1|x,\theta) = h_\theta(\theta^T x) $$
則 $$ p(y=0|x,\theta) = 1- h_\theta(\theta^T x) $$
其中 $ p(y=1|x,\theta) $ 表示樣本分類為 $ y=1 $ 的概率,而 $ p(y=0|x,\theta) $ 表示樣本分類為 $ y=0 $ 的概率。針對以上二式,我們可將其整理為: $$ p(y|x,\theta)=p(y=1|x,\theta)^y p(y=0|x,\theta)^{(1-y)} = h_\theta(\theta^T x)^y (1- h_\theta(\theta^T x))^{(1-y)} $$
我們可以得到其似然函數為: $$ L(\theta) = \prod^m_{i=1} p(y^{(i)}|x^{(i)},\theta) = \prod ^m_{i=1}[ h_\theta(\theta^T x^{(i)})^{y^{(i)}} (1- h_\theta(\theta^T x^{(i)}))^{1-y^{(i)}}] $$
對數似然函數為: $$ \log L(\theta) = \sum_{i=1}^m [y^{(i)} \log{h_\theta(\theta^T x^{(i)})} +(1-y^{(i)}) \log{(1- h_\theta(\theta^T x^{(i)}))}] $$
於是,我們便得到了代價函數,我們可以對求 $ \log L(\theta) $ 的最大值來求得參數 $ \theta $ 的值。為了便於計算,將代價函數做了以下改變: $$ J(\theta) = - \frac{1}{m} \sum_{i=1}^m [y^{(i)} \log{h_\theta(\theta^T x^{(i)})} + (1-y^{(i)}) \log{(1- h_\theta(\theta^T x^{(i)}))}] $$
此時,我們只需對 $ J(\theta) $ 求最小值,便得可以得到參數 $ \theta $。
本節中邏輯回歸代價函數是利用極大似然法進行的推導
4. 優化算法
對於以上所求得的代價函數,我們采用梯度下降的方法來求得最優參數。
3.1 梯度下降法(gradient descent)
梯度下降法過程為:
repeat {
$ \theta_j := \theta_j - \alpha \frac{\Delta J(\theta)}{\Delta \theta_j} $
}
其中 $ \alpha $ 為學習率(learning rate),也就是每一次的“步長”; $ \frac{\Delta J(\theta)}{\Delta \theta_j} $ 是梯度,$ j = 1,2,...,n $ 。
接下來我們對梯度進行求解:






5. 理解sigmoid函數
二項邏輯斯蒂回歸模型(binomial logistic regression model)是一種分類模型,由條件概率分布 $ p(Y|X) $ 表示,形式為參數化的邏輯斯蒂分布。這里,隨機變量 $ X $ 取值為實數,隨機變量 $ Y $ 取值為 $ 1或0 $。可通過監督學習的方法來估計模型參數。
二項邏輯斯蒂回歸模型是如下的條件概率分布: $$ p(Y=1|x) = \frac{e^{\theta^Tx}}{1+e^{\theta^Tx}} $$ $$ p(Y=0|x) = \frac{1}{1+e^{\theta^Tx}} $$
其中, $ x \in R^n $ 是輸入, $ Y \in \lbrace 0,1 \rbrace $ 是輸出, $ \theta $ 是參數。
對於 $ Y=1 $ :$$ p(Y=1|x) = \frac{e^{\theta^Tx}}{1+e^{\theta^Tx}} $$
而 $ e^{\theta^Tx} \neq 0 $ ,故上式可推導為:$$ p(Y=1|x) = \frac{1}{1+e^{-\theta^Tx}} $$
即邏輯回歸模型函數:$$ h_\theta(x^{(i)}) = \frac{1}{1+e^{-\theta^Tx^{(i)}}} $$
表示為分類結果為“1”的概率
引用及參考:
[1]《統計學方法》李航著
[2]《機器學習實戰》Peter Harrington著
[3] https://blog.csdn.net/zjuPeco/article/details/77165974
[4] https://blog.csdn.net/ligang_csdn/article/details/53838743
寫在最后:本文參考以上資料進行整合與總結,屬於原創,文章中可能出現理解不當的地方,若有所見解或異議可在下方評論,謝謝!
若需轉載請注明:https://www.cnblogs.com/lliuye/p/9129493.html