二分類問題的評分值與損失函數

二分類問題是監督學習中最基本的問題之一,本文旨在從評分值、損失函數的角度,對解決二分類問題的諸多機器學習算法作一個梳理。相關算法的詳細介紹能夠參考相關教材[1][2]算法

loss

給定一個數據集D={(\mathbf x_1, y_1), (\mathbf x_2, y_2), ..., (\mathbf x_m, y_m)} ,其中y_i\in \{-1, 1\}\mathbf x_i=(x_{i1}, x_{i2}, ...x_{id})爲d維向量 。注意有些資料中二分類比較喜歡用\{0, 1\}表示,使用什麼數字表示二分類從原理上講沒有區別,但在數學表達上會有一些細微差別。機器學習

評分值不是一個機器學習算法中的一個正式名詞,可是咱們不妨創建這樣一個認識角度。咱們但願創建關於樣本\mathbf x的一個評分函數s(\mathbf x),它的基本性質很簡單,就是要求和目標值y同號,即正樣本評分爲正數,負樣本評分爲負數,這樣最終的二分類函數爲sign(s(\mathbf x))ide

那麼咱們要如何創建評分函數呢?直觀的想法是,對樣本的d個屬性進行加權求和,這樣能體現每一個屬性在評分中的重要性,如此創建的評分不必定在0值處有區分做用,所以再加上一個偏置項,因此評分函數爲s(\mathbf x)=w^T\mathbf x+b,這個基本的評分函數能夠衍生出不少算法。函數

評價二分類問題的基本標準是分類錯誤率,針對每個樣本,若是去計算它的損失函數,就是分類正確損失爲0,分類錯誤損失爲1,這種損失函數通常叫作0-1損失函數,可記爲l_{0-1}=\mathbb{I}[sign(s(\mathbf x))\neq y]學習

若是咱們統一考慮正、負樣本,令z=s(\mathbf x)*y ,那麼分類正確時,z必然始終爲正值,不妨稱其爲絕對評分值,z是對分類是否正確的一個度量。則l_{0-1}=\mathbb{I}[sign(z)= -1],故l_{0-1}是關於z的分段函數。從最優化理論的角度來看,這個函數沒法求梯度或次梯度,所以須要找它的近似來優化。這個近似\widetilde l的基本標準是:始終爲非負值;當它很小時,l_{0-1}很小。優化

評分值是屬性X的線性組合,從另外一個角度看,評分值也是關於權值w的線性組合。通常的,咱們將X變換到新的特徵空間獲得\phi (\mathbf x)。則評分值爲z=(w^T\mathbf \phi (\mathbf x)+b)y。上述分析基本不變,只是模型的複雜度更高了。如下分析如無特別說明仍在原空間進行。3d

1 線性迴歸

要求評分值與目標值同號,若是目標定得更加狹隘一些,能夠令評分值直接爲\{-1, 1\},這是線性迴歸問題,損失函數使用偏差平方(能夠作直觀的理解,也能夠認爲樣本的偏差符合正態分佈,從極大似然的角度推導出,這不是本文的重點。)。注意到l_{sqr}=(s(\mathbf x)-y)^2=(s(\mathbf x) * y-y^2)^2=(z-1)^2,故偏差函數是關於絕對評分值z的二次函數。從圖中能夠看出l_{sqr}是始終大於l_{0-1}的,並且當l_{sqr}比較小時,l_{0-1}也比較小,因此能夠做爲l_{0-1}的近似。cdn

線性迴歸有封閉解w=(X^TX)^{-1}X^Ty,因此使用線性迴歸作二分類很是簡單,可是效果通常不太好,爲何呢?從l_{sqr}的曲線能夠看出,當絕對評分值很大時,l_{0-1}應該爲0,直觀來講,絕對評分值很大應該是區分度高的一件好事情,可是l_{sqr}卻給與了更高的懲罰,這是不合理的。線性迴歸能夠給出一個還不錯的w值,能夠用做其餘算法的初始值。blog

2 感知機學習

感知機學習能夠用以下的直觀想法來理解:針對絕對評分值,當它爲正數時,分類正確,咱們認爲偏差爲0,當它爲負數時,咱們認爲離0值越遠,偏差越大,即l_p=max(0, -z),從l_p的曲線來看,也是l_{0-1}的一個近似,雖然它也是一個分段函數,可是是能夠求次梯度的,z\geqslant 0時,認爲梯度爲0,當z<0時,\frac{dl_p}{dw}=\frac {dl_p}{dz}\frac{dz}{dw}=-1*y\mathbf x=-y\mathbf x,使用隨機梯度降低法,w\leftarrow w+\eta y\mathbf x也就是說,只在出現評分錯誤時進行優化,這剛好就是感知機學習算法所作的工做。排序

3 支持向量機

對感知機學習的偏差函數,咱們能夠進一步優化,咱們但願絕對評分值要充分大,這樣認爲樣本是正樣本咱們才更加放心,考慮到z是關於w,b可縮放的,不妨定義充分大爲大於1。因而有l_{hinge}=max(0, 1-z),這個損失函數被稱爲hinge損失函數。考慮結構風險,咱們的優化目標爲

\underset{w,b}{min}=\frac{1}{2}\left \|w  \right \|^2+C\sum_{i=1}^{m}max(0, 1-z)

經過鬆弛變量法,就能夠變爲軟間隔支持向量機,經過二次規劃來求出模型。

從評分值的角度來理解,評分值充分大使得模型針對新的樣本有較好的魯棒性,這正是支持向量機比較優秀的地方。若是引入特徵空間,則在支持向量機的求解過程當中要大量計算內積,將特徵空間的內積簡化爲原空間的核函數能夠引入核方法。

4 Logistic迴歸

z值的基礎上,咱們但願它能算出一個機率,衡量分類正確的機率或者說程度。即將z的值域從(-\infty , +\infty )映射到(0,1) ,那麼sigmoid函數是個好的選擇,它可求梯度並且在0處機率剛好爲0.5。即

sigmoid(z)=\frac {1}{1+exp(-z)}

而後,咱們再根據這個sigmoid函數,再來模擬損失函數l_{0-1}(z),咱們要求損失函數關於z遞減,並且始終爲正數,考慮機率求對數後再取負號,故

l_{log}(z)=-log(sigmoid(z))=log(1+exp(-z))

由圖能夠看出,它也是l_{0-1}(z)的一種近似。以對數損失函數爲優化目標。

\underset{w,b}{min}=\sum_{i=1}^{m}log(1+exp(-z))+ \lambda\left \|w  \right \|^2

這是帶正則化的Logistic迴歸,因爲l_{log}(z)到處可微,所以可使用梯度降低法等最優化方法求解。

5 AdaBoost

指數函數一樣能夠知足近似l_{0-1}的基本條件,即損失函數定義爲l_{exp}(z)=exp(-z)

指數損失函數結合加性模型,能夠推導出AdaBoost算法。

所謂加性模型,能夠這樣來理解:假設咱們獲得的特徵空間中的d維向量\phi(\mathbf x)對應的就是d個弱分類器,就是說比隨機猜想50%的正確率高一點的分類器。所謂的Boost方法就是有效的組合這些弱分類器來構建強分類器。加性模型本質上依然是一個線性模型。依然有評分函數爲s(\mathbf x)=w^T\mathbf \phi (\mathbf x)。(考慮到弱分類器自己能夠有偏置,所以取b=0。)只不過這裏的\phi(\mathbf x)表明一個弱分類器,而不是一個簡單的屬性變換(本質上看,也是一種屬性變換)。

AdaBoost是一個逐步迭代的過程,假設通過m-1輪迭代已經獲得評分函數s_{m-1}(\mathbf x)=\sum_{i=1}^{m-1}w_i\phi_i(\mathbf x),在第m輪迭代後獲得w_m, \phi_m(\mathbf x), s_m(\mathbf X),則s_m(\mathbf X)=s_{m-1}(\mathbf X)+w_m\phi_m(\mathbf x),AdaBoost的優化目標是使得每一步獲得的評分函數關於指數損失函數最小,即

w_m, \phi_m = arg\underset{w,\phi}{min}\sum_{i=1}^Nexp(-z_{mi})  \quad z_{mi}=y_is_m(\mathbf X_i)

該式的進一步推導此處再也不詳述。

小結

以上介紹了6種損失函數,他們都是關於評分值的單調非增函數,其中後面5種是關於0-1損失函數的近似替代,經過求解替代函數可否獲得原問題的解,有深刻的研究,稱爲替代損失的「一致性」問題[3]

此外,若是咱們要找出全部樣本種的正例並排序,那麼評分值應該在參與優化的時候就具有排序的特性,對數損失和指數損失是單調遞減的,以它們爲優化目標的模型計算出的評分值能夠參與排序,其餘幾種損失函數不是單調遞減的,所以相應的評分值不適合排序。


  1. 統計學習方法 李航 ↩︎

  2. 機器學習 周志華 ↩︎

  3. projecteuclid.org/download/pd… ↩︎

相關文章
相關標籤/搜索