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