機器學習分爲監督學習和無監督學習, 監督學習又分爲 迴歸問題 和 分類問題, 接上篇筆記講完線性迴歸,本文主要介紹監督學習-分類問題 中的 邏輯迴歸。
1. 二分類問題
(Binary Classification Problem)
在分類問題中,我們嘗試預測的是結果是否屬於某一個類(例如正確或錯誤)。分類問題的例子有:判斷一封電子郵件是否是垃圾郵件;判斷一次金融交易是否是欺詐;區別一個腫瘤是惡性的還是良性的等等。
在這種二分類的問題中,我們預測的變量 ,其中 表示負向類(negative class), 表示正向類(positive class) ,例如可以用 表示良性腫瘤,用 表示惡性腫瘤,(但哪個是0哪個是1並不重要):
對於這種二分類問題,我們定義一種算法:邏輯迴歸算法( Logistic Regression),該算法的性質是:它的輸出值永遠在0到 1 之間。
(by the way,邏輯迴歸算法是分類算法,並不是迴歸算法。有時候可能因爲這個算法的名字中出現了“迴歸”使你感到困惑,但邏輯迴歸算法實際上是一種分類算法,它適用於標籤 取值離散的情況。)
除了二分類問題,還有多分類問題(multi-class),例如 等等。
2. 假設函數
(Hypothesis)
邏輯迴歸模型的假設函數是:
-
: 特徵向量(注意:這裏的 是針對單個訓練實例而言,參閱 邏輯迴歸向量化)
-
: 邏輯函數(Logistic function),其公式爲:
- 邏輯函數也稱爲 S形函數(Sigmoid function),因爲其函數形狀爲如下圖的S形,由於取值範圍在,也就限制了假設函數的值也在
合起來 ,我們得到邏輯迴歸模型的假設爲:
對該假設的理解是:
對於給定的某個輸入變量 ,根據選擇的參數 ,計算輸出變量 的可能性(estimated probablity),即
例如,如果對於給定的 ,通過已經確定的參數 計算得出,則表示有的機率爲正向類,相應地爲負向類的機率爲 。
3. 決策邊界
(Decision Boundary)
現在講下決策邊界(decision boundary)的概念。這個概念能更好地幫助我們理解邏輯迴歸的假設函數在計算什麼。
在邏輯迴歸中,我們預測:
- 當 ,即 時,預測
- 當 ,即 時,預測
現在假設我們有一個分類模型,並且已經擬合好了參數 ,如下圖所示,則
- 當 時,模型將預測 ,
- 當 時,模型將預測 。
我們可以繪製直線 ,這條線便是我們模型的分界線,將預測爲1的區域和預測爲 0的區域分隔開。
對於有高階多項式的假設函數,也可以找到其決策邊界,例如:
4. 代價函數
(Cost Function)
和線性迴歸一樣,在分類問題中的邏輯迴歸也需要定義用來擬合參數的代價函數。
線性迴歸的代價函數爲:
我們重新定義邏輯迴歸的代價函數爲:
其中
這樣構建的代價函數的特點是:
- 當實際的 時:
- 若預測的 也爲1,則代價函數爲0,誤差爲0
- 若預測的 不爲1,則代價函數(即誤差)隨着變小而變大
- 當實際的 時:
- 若預測的 也爲0,則代價函數爲0,誤差爲0
- 若預測的 不爲0,則代價函數(即誤差)隨着變大而變大
將構建的 簡化如下(就是不用寫成分段函數):
帶入 :
此時的代價函數 會是一個凸函數,並且沒有局部最優值(凸優化問題,暫時可以不管)
5. 梯度下降
由於得到的代價函數爲凸函數,我們便可以用梯度下降算法來求得能使代價函數最小的參數了。算法爲:
求導後得到:
雖然得到的梯度下降算法表面上看上去與線性迴歸的梯度下降算法一樣,但是這裏的 與線性迴歸中不同,所以實際上是不一樣的。
除了梯度下降算法以外,還有一些常被用來令代價函數最小的算法,這些算法更加複雜和優越,而且通常不需要人工選擇學習率 ,通常比梯度下降算法要更加快速。例如:
- 共軛梯度(Conjugate Gradient)
- 局部優化法(Broyden fletcher goldfarb shann,BFGS)
- 有限內存局部優化法(LBFGS)
最後還有一點,我們之前在談線性迴歸時講到的特徵縮放,我們看到了特徵縮放是如何提高梯度下降的收斂速度的,這個特徵縮放的方法,也適用於邏輯迴歸。如果你的特徵範圍差距很大的話,那麼應用特徵縮放的方法,同樣也可以讓邏輯迴歸中,梯度下降收斂更快。
6.多類別分類問題
(Multiclass Classification Problem)
除了 二分類問題(Binary Classification Problem),邏輯迴歸還可以用來解決 多分類問題。
首先用一個叫做“一對多”(one-vs-all)的分類算法舉例:
- 郵件歸類:用不同的標籤區分不同類型的郵件,如:
- :來自工作的郵件
- :來自朋友的郵件
- :來自家人的郵件
- 藥物診斷:如果一個病人因爲鼻塞來到你的診所,可能有如下結果:
- :他可能並沒有生病
- :他可能患了感冒
- :他可能得了流感
之前的二元分類問題和現在的多分類問題,其數據集分佈如下:
二元分佈問題可以用邏輯迴歸進行分類,多分類問題也可以用相同的思想。下面將介紹如何進行一對多的分類工作,有時這個方法也被稱爲"一對餘"方法。
-
用3種不同的符號來代表3個類別,如下圖
-
先從用三角形代表的類別1()開始,創建一個新的"僞"訓練集,類型2和類型3定爲負類,類型1設定爲正類,並擬合出一個合適的分類模型(或稱爲分類器),記爲 :
-
類似地,第我們選擇第二個類標記爲正向類(),再將其它類都標記爲負向類,將這個模型記作 ,…
-
以此類推,我們將得到的一系列模型記爲(該公式的解釋與二分類的假設函數相似):
-
當給出新的輸入 ,需要預測輸出 是哪一類時,我們要做的就是將 代入上述所有分類器 中,,然後選擇一個讓 最大的 ,即 ,就是 所屬的類別。