放假這么久,天天摸魚,已經好久沒更新了,希望后面的更新速度能達到日更吧,這次給大家介紹的是Logistic 回歸,雖然是名字帶有回歸,其實是一個分類算法。廢話不多說,我們先從例題來引入我們今天的算法。
引論
我們這次不討論房價的問題了,這次我們來討論腫瘤大小判斷腫瘤是否是良性的腫瘤。這是一個兩項分布問題,輸出的結果只可能是兩個一個是是另一個是否。我們可以用0,1來表示輸出的結果。那么我們如何來區分良性還是惡性腫瘤呢,這就是一個典型的分類問題,我們也將通過本問題來學習Logistic 回歸算法(雖然這個算法的名字含有回歸,但是這不是一個回歸問題而是分類)
假設陳述
在Logistic 回歸中我們希望函數的輸出是在[0,1]這個范圍。上一章我們提到我們的函數表達式表示成:
但是我們在這里要把這個函數稍加修改變成h(x) = g((θ^T )*x),而這個g(z) = 1/1+e^-z,這個就是大名鼎鼎的sigmoid函數,作用是使函數的輸出在[0,1]這個范圍。(在以后我們講解神經網絡部分中還會提到它),sigmoid函數的圖像是這樣的:
這樣我們就可以讓函數的輸出大于0.5的,表示為1,小于0.5的表示為0(反過來也可以),這樣我們就可以不斷的擬合參數θ,使函數的輸出能達到這種分類的效果。
決策界限
假設我們現在有個訓練集,就像上圖所示。我們的假設函數是h(x)=g(θ0 + θ1x1+θ2x2),假設我們已經擬合好了參數,參數的最終結果是[-3,1,1]。在sigmoid函數的圖像中我們可以看出,當x>0時y>0.5,當x<0時y<0.5。所以當(θ^T )x>=0時y=1,當(θ^T )x<0時y=0。也就是-3+x1+x2>=0,化簡我們可以得到x1+x2>3。
這在圖像上是什么意思呢:
我們可以看出我們擬合出來的函數已經把訓練集劃分開來了,x1+x2>3的區域就是函數的上半部分。到這里我們就明白了Logistic 回歸的工作原理,就用擬合的函數來把不同標簽的訓練集分開來達到分類的效果。
對于不同的數據集分布,我們可以選擇相應的函數圖像來進行分割,比如這樣的數據集分布,我們可以用圓形的函數來分割:
代價函數
既然我們已經得到了算法的運作原理,那么我們又到了機器學習中最重要的環節,我們如何才能擬合。這里這個函數的代價函數又是什么?也就是優化的目標是什么?
在我們以前在線性回歸中用到的代價函數是
我們可不可以用這個函數來進行梯度下降呢,答案當然是不行的。因為我們在函數中使用了sigmoid函數,這會使我們代價函數的圖像呈現這樣的狀態:
這樣就會有很多個局部最小值,而達不到真正的代價的最小值。這里我們就引入了新的代價函數來對函數進行目標優化
把代價函數分為兩種情況,一種是y=0一種是y=1的時候,這樣我們可以分開來計算。這兩個對數函數的圖像,會使輸出如果偏離1或者0的時候,代價值會爆增。
但代價函數這樣表示太麻煩了,于是我們可以把代價函數簡化到一個公式里:
這樣我們就不需要分情況來進行計算了
梯度下降
我們既然得到了代價函數,我們的目標就是讓代價函數最小化,我們就需要用梯度下降來得到這個目標。這里就和回歸函數的梯度下降方法一樣了,這里我就不多做介紹,直接給出梯度下降的公式:
多元分類
上面我們提到的都是一分為二的情況,只需要分兩種類別,但是在現實情況中我們可能需要處理的是分更多的類別,所以這個時候我們要怎么做呢。其實很簡單,我們只需要把一個類別單獨劃分出來,與剩下的類別劃分。這樣一個一類別的劃分,找到不用的函數,用多個函數來把各種類別區分出來,就可以了。
后記
終于恢復更新了,希望能達到日更吧,不能繼續摸魚了。。。。。