0,綜述
損失函數用于評價模型好壞。一個統計學習方法基本上由三個部分組成:
模型+策略+算法
1,模型,,即輸入樣本特征,可以返回樣本值或概率值的函數
2,策略,有了模型,如何確定模型中的參數呢?如何根據訓練數據擬合一個不錯的模型呢?這就是一個訓練策略的問題。基本上就是:減小模型誤差(損失)或增大模型收益(如最大似然),這兩種方式是可以互相轉化的。通常我們會采取減小模型誤差的方式。那么,就需要選取一個函數來評價模型的損失(誤差)即損失函數。不同的損失函數適用不同的任務。
3,算法,有了損失函數還不夠,我們的目的是利用數據降低損失函數。這里就會有一些優化算法適用于降低損害函數。這是一個優化問題。如果損失函數簡單,可以直接計算解析解,那很容易就能求得最優參數從而確定模型。但往往在多維數據下,難以甚至無法計算解析解,此時,就需要一些優化算法來逐步逼近最優解。例如梯度下降法,牛頓法,以及一些優化轉換方法例如拉格朗日對偶性。
1,0-1損失函數
此損失函數形式簡單,但是
1,不可導不易優化。
2,一刀切,沒有體現f(x)接近和遠離y時損失的差異
所以使用有局限性。適用于計數類型的模型,例如k近鄰。
2,合頁損失函數
一般模型為
合頁損失,重要的組成部分稱為函數間隔,分對則大于0,分錯小于0
2.1 感知機損失函數
2.2 SVM損失函數
2.3 討論
方括號+的意思是,括號內的值如果小于0,則值等于0,括號內值大于0則保持原值。
兩者經驗損失部分十分相似,只不過相差1,表示SVM的經驗損失比感知機更嚴格(即使分對了,但,也會帶來損失)
我認為兩者的損失函數(經驗損失)都是合頁損失函數(以函數間隔為x軸),只不過SVM的右偏了一格。而SVM真正比感知機優越的地方在于其L2正則,當然,可以引入核函數則是其更重要的性質與優點了。
另外,SVM的這個損失函數等價于他的最優化問題。把帶約束的最優化問題轉換為不帶約束的最優化問題,在數學上的轉換與證明也是十分巧妙的。
3,以熵或基尼指數度量的損失函數
決策樹的損失函數
決策樹的損失函數通常用于樹的剪枝。
表示t葉節點上的熵或基尼指數。
通過計算剪枝前后的損失函數大小來判斷是否剪枝。
4,交叉熵損失函數(Cross Entropy Loss)
4.1 K-L散度(Kullback–Leibler divergence)
又稱相對熵(Relative Entropy)
舉個例子:
假設我們獲取了某一地區人口年齡的樣本數據D
代表了從0歲到98歲的人口數量,單位萬人。
此時,我們想用一個分布來擬合這批數據,以預測本地區總體年齡分布。
A想了一個0-98的均勻分布
B想了一個均值45方差30的正態分布
雖然這兩個擬合看著都很不靠譜,但是這兩個分布哪個更好一點呢?
K-L散度就可以解決這個問題
所謂擬合一個分布,其實就是得到一系列離散或連續的概率值
通過觀測數據/訓練數據我們本身也可以得到其分布
K-L散度定義如下:
顯然,K-L散度,是指兩個分布在同一值下對數概率之差的期望
P,Q兩分布越接近,KL散度越小
當兩分布相等時(所有對應概率相等),KL散度=0
另外需注意,KL散度不對稱即:
4.2 交叉熵(Cross Entropy)
由KL散度公式可以推算
其中
就是PQ的交叉熵。
因為常常我們觀測數據或訓練數據的熵時固定的,所以KL散度和交叉熵只差固定值,所以,可以用交叉熵代替KL散度來評估兩個分布或某一個分部與訓練數據的差異。
4.3 交叉熵損失函數
1,對于一個二分類任務
一個樣本其交叉熵損失就是
其中
則總體損失就是所有樣本sum
2,對于一個多分類任務
一個樣本的交叉熵損失就是
其中
表示樣本是否屬于c類
M 即類別c的數量
即樣本是c類的概率
則總體損失就是所有樣本sum
由此可見,對于多樣本交叉熵損失函數,其模型需要預測出樣本屬于各個類別的概率值
5,最大化似然估計與對數損失(Maximum Likelihood Estimation & Logistic Loss)
5.1 最大似然估計
最大似然估計的核心思想是:觀測數據D之所以被觀測到,是因為數據D出現的概率本身就高。想法很樸素。
似然函數如下:
最大似然估計即在當前數據下,求解令最大的
例如估計拋硬幣正面朝上的概率
正面
反面
只拋1次,正面朝上
則最大化
即
拋10次,正6反4
求最大值,令導數=0得
即p=0.6
拋10000次,正4901反5099
得時,
取得最大值
5.2 最大似然函數做目標函數-對數損失
例如在邏輯回歸LR推導中,由于邏輯回歸會估計樣本是正樣本的概率,
這里
則對于一個樣本(x,y),其似然函數
對所有訓練數據:
又因為最大化L等價于最大化等價于最小化
因為對數具有相乘變相加的特性
所以求解令-logL最小的參數(對于邏輯回歸即是w)即可
這不正是交叉熵損失函數嗎?
也被叫做對數損失。
所以對數損失函數和交叉熵損失函數是等價的
交叉熵損失函數,從熵的角度度量模型差異
對數函數,從統計估計的角度度量模型擬合
5.3 對數損失的進一步擴展
假如我們令 即負類標簽由0變為-1
則有
則
這也是對數損失 只不過此時標簽
6,指數損失(Exponential Loss)
應用于加法模型Adaboost中。
因為指數具有指數相加等于數相乘的性質:
所以,對于加法模型
有
7,均方誤差(Mean Square Error MSE)
8,平方絕對誤差(Mean Absolute Error MAE)
8.1 MSE VS MAE
1,MSE全程可導,MAE在0處不可導
2,MAE更魯棒:
兩者差別以為分界線
0~1之間時,MSE<<MAE
大于1時,MSE>>MAE
而當數據有異常值時,往往
此時MSE>>MAE
這表示,使用MSE對異常值會更加敏感,而算法為了降低MSE,就會使模型過度偏向異常值。這種現象在MAE上就會減輕很多。所以可以說MAE相對于MSE更魯棒一些。
另一個解釋是,當我們用一個定值去擬合一列數時,MSE擬合的是數據的平均數,而MAE擬合的是數據的中位數。
所以MSE擬合的是平均數
對于MAE
我們對x從小到大排序
所以MAE擬合的是一個區間,這個區間通常可以取中位數替代。
顯然中位數對異常值是不敏感的,而平均值則會敏感。這提示我們對于不同的數據,需要選擇不同的損失。就想在預測全國人均收入問題上,由于大部分財富集中在很小一部分人中,這些數據就相當于異常值,所以中位數更能代表人均收入水平。
3,對于梯度下降法來說,MSE梯度隨著越接近最優點而越來越小,相當于一開始邁大步快速接近極值,后面邁小步精確靠近極值。而MAE的導數一直為1不變,使得它在靠近極值時容易一步跨過。
9,Huber損失函數
這個函數是全局可導的,他是MSE與MAE的結合,擁有兩者的優點。通過來調節MSE和MAE的占比。
10,分位數損失函數(Quantile Loss)
要理解分位數損失函數,首先要理解MAE,MAE是擬合中位數的損失函數(即離差絕對值的期望在中位數處取得最低)
而中位數就是分位數的一種。
另外,我們考慮一種回歸問題。以一元回歸為例,在眾多數據中,我們可以擬合一條曲線,這條曲線告訴我們對于某個x可能的擬合結果y=f(x)。即使真實y不是f(x),也應該在f(x)附近,此時,我們的預測是一個點。
但是,我們如果想要獲取一個y的范圍呢?即對于x,我想知道y的大致范圍。因為很多時候,我們不需要精確值,反而更需要一個范圍值。此時,我們需要預測一個線段。
那怎么做呢?
其實如果我們能分別獲得y的0.1分位數與0.9分位數的擬合,那么兩者之間的部分就是我們需要的,它預測了y的80%的取值范圍
此時,就需要優化分位數損失函數:
即,該損失函數對預測值大于真實值和小于真實值得懲罰是不一樣的。
當時,該損失等價于MAE
當時,該損失對預測值小于真實值的情況懲罰更大
當時,該損失對預測值大于真實值的情況懲罰更大
11 總結
本節講述了常見的損失函數。
損失函數大致分為應用于分類的和應用于回歸的。
從7均方誤差之后,基本上都用于回歸。
不同的模型會有自己比較適合的損失函數
回歸問題的損失函數,往往存在的部分,我們稱之為殘差
回歸損失函數往往圍繞殘差構建。
分類問題,就二分類(多分類往往建立在二分類的基礎上)而言,標簽y往往存在兩種形式:
or
對于11.2的情況,模型往往傾向于把預測值轉換成概率
從而使用交叉熵損失log損失,這些損失函數都存在(或
)部分。這樣的模型有LR,神經網絡
對于11.3的情況,模型往往傾向于構建分類超平面,再通過
判斷標簽,例如感知機,SVM。又如集成學習Adaboost,其模型
,而標簽也是由
來決定,這幾個模型的損失函數往往存在
的部分。
可以看到分類的損失函數,常圍繞來構建
當然,有的模型對于標簽形式是不敏感的,例如k近鄰,決策樹等,因為這些模型沒有把y用于損失計算,其損失函數也會比較不同。
不同的損失函數也有不同的特性
這些特性會有針對性的優化我們的某些需求。
MAE相比于MSE有較強的魯棒性
分位數損失組合可以獲得預測值的范圍
參考
KL散度
損失函數
Regression Loss Functions
Regression Loss Functions-翻譯
分位數回歸
《統計學習方法》-李航