分類算法之邏輯回歸(Logistic Regression


分類算法之邏輯回歸(Logistic Regression)

1.二分類問題

現在有一家醫院,想要對病人的病情進行分析,其中有一項就是關於良性\惡性腫瘤的判斷,現在有一批數據集是關於腫瘤大小的,任務就是根據腫瘤的大小來判定是良性還是惡性。這就是一個很典型的二分類問題,即輸出的結果只有兩個值----良性和惡性(通常用數字0和1表示)。如圖1所示,我們可以做一個直觀的判定腫瘤大小大於5,即為惡心腫瘤(輸出為1);小於等於5,即為良性腫瘤(輸出為0)。

圖1

2.分類問題的本質

分類問題本質上屬於有監督學習,給定一個已知分類的數據集,然后通過分類算法來讓計算機對數據集進行學習,這樣計算機就可以對數據進行預測。以腫瘤的例子來說,已有數據集如圖1所示,現在要對一個病人的病情進行診斷,那么計算機只需要將該病人的腫瘤大小和5進行比較,然后就可以推斷出是惡性還是良性。分類問題和回歸問題有一定的相似性,都是通過對數據集的學習來對未知結果進行預測,區別在於輸出值不同。回歸問題的輸出值是連續值(例如房子的價格),分類問題的輸出值是離散值(例如惡性或者良性)。既然分類問題和回歸問題有一定的相似性,那么我們能不能在回歸的基礎上進行分類呢?答案是可以的。一種可行的思路是,先用線性擬合,然后對線性擬合的預測結果值進行量化,即將連續值量化為離散值。

3.分類問題的假設函數

分類問題雖然和回歸問題有一定的類似,但是我們並不能直接使用回歸問題中的假設函數作為分類問題的假設函數。還是以圖1的例子為例,如果我們采用一元線性函數(即\(h(x) = \theta_0+\theta_1x\))去進行擬合的話,結果可能是這樣子的:$h_\theta(x) = \dfrac{5}{33}x-\frac{1}{3} $,體現在圖片中就是:

圖2

這樣,你可能會做這樣的一個判斷:對於這個線性擬合的假設函數,給定一個腫瘤的大小,只要將其帶入假設函數,並將其輸出值和0.5進行比較,如果大於0.5,就輸出1;小於0.5,就輸出0。在圖1的數據集中,這種方法確實可以。但是如果將數據集更改一下,如圖3所示,此時線性擬合的結果就會有所不同:

圖3

如果采用相同的方法,那么就會把大小為6的情況進行誤判為良好。所以,我們不能單純地通過將線性擬合的輸出值與某一個閾值進行比較這種方式來進行量化。對於邏輯回歸,我們的量化函數為Sigmoid函數(也稱Logistic函數,S函數)。其數學表達式為:\(S(x) = \dfrac{1}{1+e^{-x}}\) ,其圖像如圖4:

圖4

可以看到S函數的輸出值就是0和1,在邏輯回歸中,我們采用S函數來對線性擬合的輸出值進行量化,所以邏輯回歸的假設函數為:

\[h_\theta(x)=\dfrac{1}{1+e^{-\theta^Tx}}=\dfrac{1}{1+e^{-\sum_{i=0}^n\theta_ix_i}} \tag{3.1} \]

其中,\(x\)為增廣特征向量(1*(n+1)維),\(\theta\)為增廣權向量(1*(n+1)維)。這個假設函數所表示的數學含義是:對於特定的樣本\(x\)與參數矩陣\(\theta\),分類為1的概率(假設y只有0和1兩類),也就即\(h_\theta(x) = P(y=1|x;\theta)\)。根據其數學意義,我們可以這樣認為:如果\(h_\theta(x)>0.5\),則判定y = 1;如果\(h_\theta(x)<0.5\),則判定y = 0。

4.邏輯回歸的代價函數(Cost Function)

代價函數(成本函數),也就是損失函數。在邏輯回歸中,代價函數並不是采用均方誤差(主要原因是,邏輯回歸的均方誤差並不是一個凸函數,並不方便使用梯度下降法),而是通過極大似然法求解出來的一個函數,其數學表達式為:

\[J(\theta)= \dfrac{1}{m}\sum_{i=1}^m[-yln(h_\theta(x))-(1-y)ln(1-h_\theta(x))] \tag{4.1} \]

這個函數看起來有點復雜,我們將它一步步進行拆分來理解,我們將每個樣本點與假設函數之間的誤差記為\(Cost(h_\theta(x),y)=-yln(h_\theta(x))-(1-y)ln(1-h_\theta(x))\),這樣代價函數就可以理解為誤差的均值。下面我們再詳細看一下這個誤差函數,由於y的取值只能是0或者1,我們可以將誤差函數寫成分段函數的形式:

\[Cost(h_\theta(x),y)=\begin{cases} -ln(h_\theta(x)),\quad &y = 1 \\ -(1-y)ln(1-h_\theta(x)), &y=0 \end{cases} \tag{4.2} \]

4.2式和4.1式是等價的,依據4.2式,不難得出:當y=1時,如果判定為y=1(即\(h_\theta(x) = 1\)),誤差為0;如果誤判為y=0(\(即h_\theta(x) = 0\)),誤差將會是正無窮大。當y=0時,如果判定為y=0(即\(h_\theta(x) = 0\)),誤差為0;如果誤判為y=1(即\(h_\theta(x) = 1\)),誤差將會是正無窮大。(注意:\(h_\theta(x) = 1\)表示y等於1的概率為1,等價於認為y=1;\(h_\theta(x) = 0\)表示y等於1的概率為0,等價於認為y=0)

如果用矩陣來表示代價函數,就是:

\[J(\theta)=-\dfrac{1}{m}Y^Tln(h_\theta(X))-(E-Y)^Tln(E-h_\theta(X)) \tag{4.3} \]

其中\(Y\)為樣本真實值組成的列向量(m*1維),\(X\)為增廣樣本矩陣((1+n)*m維),E為全1列向量(m*1維)。

5.邏輯回歸使用梯度下降法

邏輯回歸的代價函數和線性回歸的損失函數一樣,都是凸函數,所以我們可以采用梯度下降法來求參數矩陣\(\theta\)使得代價函數\(J(\theta)\)取得最小值。其具體算法與線性回歸中的梯度下降法(可以參考我的另一篇博客線性回歸之梯度下降法)並沒有太大區別,只是對應的偏導有所不同。邏輯回歸的代價函數的偏導為:

\[\dfrac{\partial J(\theta)}{\theta_i} = \dfrac{1}{m}\sum_{j=1}^m(h_\theta(x^{(j)})-y^{(j)})x_i^{(j)} = \dfrac{1}{m}\sum_{j=1}^m(\dfrac{1}{1+e^{-\sum_{i=0}^n\theta_ix_i^{(j)}}}-y^{(j)})x_i^{(j)}\quad (i=0,1,\dots,n)\tag{5.1} \]

對應的參數更新規則為:

\[\theta_i = \theta_i-\alpha\dfrac{\partial J(\theta)}{\theta_i} = \theta_i-\alpha\dfrac{1}{m}\sum_{j=1}^m(h_\theta(x^{(j)})-y^{(j)})x_i^{(j)}\quad (i=0,1,\dots,n)\tag{5.2} \]

如果用矩陣表示就是:

\[\dfrac{\partial J(\theta)}{\theta} = \dfrac{1}{m}X^T(h_\theta(X)-Y),\quad \theta=\theta-\alpha\dfrac{1}{m}X^T(h_\theta(X)-Y) \tag{5.3} \]

其中,\(\alpha\)為迭代步長。

6.多元邏輯回歸

對於多元邏輯回歸,一種可行的思路是將其簡化為二元。例如,如果數據集的分類包含1,2,3這三個類別。如果現在要判斷一個樣本是不是類1,我們可以將數據集看作是兩類----即1類和非1類(將類2和類3),這樣我們就可以求得針對類1的假設函數\(h^{(1)}_\theta(x)\),同理還有\(h^{(2)}_\theta(x)\)\(h^{(3)}_\theta(x)\)。這樣我們的判定規則就變為:

\[if \quad max\{h^{(i)}_\theta(x)\} = h^{(j)}_\theta(x), then \quad y = j\quad(i,j=1,2,3) \tag{6.1} \]

7.小結

雖然邏輯回歸中帶有“回歸”二字,但其實它是一個分類算法。邏輯回歸的思想和模式識別中的判別函數非常相似,兩者可以結合起來進行學習。

參考鏈接:

邏輯回歸原理小結


免責聲明!

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



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