邏輯迴歸
1.1 問題及定義
邏輯迴歸主要是用來解決二分類的問題,例如判斷一封電子郵件是否是垃圾郵件,判斷一次金融交易是否是欺詐,判斷一個腫瘤是惡性的還是良性的等等。
(注意:邏輯迴歸是分類算法,線性迴歸是迴歸算法)
爲此,邏輯迴歸的輸出應當是0-1之間。
邏輯迴歸模型的假設是:
其中, 表示特徵向量, , 表示邏輯迴歸(logistic fucntion)函數,這是一個常用的S型函數(sigmoid function),公式爲 . 該函數的圖像爲:
合起來我們得到邏輯迴歸模型的假設:
這裏 的作用是對於給定的輸入變量,根據選擇的參數計算出變量=1的可能性,即 .
例如,如果對於給定的 ,通過已經確定的參數計算得出 ,則表示有70%的機率 爲正類,相應的 爲負類的概率爲 .
1.2 代價函數
我們怎麼去擬合邏輯迴歸模型的參數呢?
我們首先定義一些需要使用的變量,訓練集合 , 爲訓練集合大小,訓練樣本 , .
我們應該使用怎樣的代價函數呢?在線性迴歸中我們使用的是均值方差函數,這裏如果使用均值方差可以嗎?答案是不行的,因爲將 代入到這樣的代價函數中時,將會得到一個非凸函數(non-convex function)。如下圖:
那麼意味着這樣的代價函數有很多的局部最小值,這降影響梯度下降尋找全局最小值。
因此,我們重新定義邏輯迴歸的代價函數爲:
其中,
我們使用圖表來理解這個代價函數, 與 之間的關係如下圖,
這樣構建的 函數的特點是:當實際的 且 也爲1時,誤差爲0,當 但是 不爲1的時候,誤差隨着 的增大而減小;當實際的 時且 也爲0的時候,誤差爲0,當 但是 不爲0的時候,誤差隨着 的增大而增大。(個人感覺就是使預測值更接近真實值,還有這裏用的是最大似然估計的方法也能理解推導,參考logistic迴歸算法)
將構建的 簡化如下:
代入代價函數得到:
然後我們就可以使用梯度下降的算法來求得能使代價函數最小的參數了,算法爲:
求導後得到:
可以證明,這樣得到的代價函數是凸的,沒有局部最優值!(涉及到複雜的凸性分析,感興趣的話可以去查閱相關資料)
接着,每次我們就可以使用梯度下降算法更新參數,最小化代價函數,直至收斂!
仔細看一下這個參數更新公式,我們發現和線性迴歸的參數更新公式形式完全一樣,不過注意兩個算法的假設函數 不一樣,因此其實是兩個完全不同的東西!
1.2.1邏輯迴歸推導
上面省略了求導步驟,這裏我詳細寫一下過程:
在這之前,先熟悉一下sigmoid函數的求導規律,對於sigmoid函數 ,其導數爲 (自己證明).
要求對 的導數,
所以,第二部分導數爲
第一部分導數爲
所以最後的導數爲
仔細看一下這個求導後結果,在 到 上求和,其實就是預測誤差乘以 .
1.3多分類問題
上面講到邏輯迴歸算法是用來解決二分類問題而設計的,那麼如果碰到多分類問題呢?
沒錯,我們可以採用“一對多的思想”,可以先將多個類中的一個類作標記爲正類,然後將其他所有類作爲負類,以此類推,訓練一系列的二分類器,最後預測時,我們將所有的分類器都運行一遍,對於每一個輸入變量,都選擇最高可能性的輸出變量!
假設我們將一系列的分類器簡記爲: ,其中 .
1.4正則化減少過擬合
正則化技術可以用來減少過擬合,這項技術不僅僅在這裏可以使用,在其他機器學習算法中如神經網絡均可以使用。
正則化的基本思想就是引入正則化參數 對特徵的參數 進行懲罰,使得參數不至於過大,造成過擬合。
在線性迴歸中使用正則化,
在邏輯迴歸中使用正則化,
1.5 實現
(待更——)
參考資料:
[1] Andrew course機器學習學習筆記
[2] 周志華《機器學習》