根據(jù)標(biāo)簽分布來選擇損失函數(shù)

極市導(dǎo)讀
?作者從兩個(gè)經(jīng)典的面試問題出發(fā),以常見的二分類問題和回歸問題為例,通過回答問題的方式解釋了mse和二元交叉熵相關(guān)知識(shí)。?>>加入極市CV技術(shù)交流群,走在計(jì)算機(jī)視覺的最前沿
首先回到經(jīng)典的面試問題:
為什么線性回歸使用mse作為損失函數(shù)?
為什么邏輯回歸二分類常用二元交叉熵作為損失函數(shù)?
熟悉lgb、xgb或者是sklearn中的各類回歸模型包括了線性回歸,tweedie回歸等等應(yīng)該都比較熟悉,我們?cè)谀P偷目蚣苤驴梢赃x擇不同的損失函數(shù),以lightgbm為例:

針對(duì)于回歸問題有非常多的備選損失函數(shù),那么這些損失函數(shù)什么時(shí)候用,為什么?
回到基本面試問題,首先我們需要知道的是,使用特定損失函數(shù)的前提是我們對(duì)標(biāo)簽的分布進(jìn)行了某種假設(shè),在這種假設(shè)的前提下通過極大似然法推出所有樣本構(gòu)成的極大似然公式,然后再使用凸優(yōu)化的方法比如常見的梯度下降法進(jìn)行求解。
以常見的二分類問題和回歸問題為例:
二分類問題的常見假設(shè)就是標(biāo)簽服從伯努利分布:
伯努利分布是一個(gè)離散型機(jī)率分布。試驗(yàn)成功,隨機(jī)變量取值為1;試驗(yàn)失敗,隨機(jī)變量取值為0。成功機(jī)率為p,失敗機(jī)率為q =1-p,N次試驗(yàn)后,成功期望為N*p,方差為N*p*(1-p) ,所以伯努利分布又稱兩點(diǎn)分布。
觀察到的數(shù)據(jù)為D1,D2,D3,...,DN,極大似然的目標(biāo):

聯(lián)合分布難計(jì)算,我們因此引入一個(gè)假設(shè),獨(dú)立同分布(i.i.d.)(機(jī)器學(xué)習(xí)的基本假設(shè)),目標(biāo)公式改變?yōu)椋?br>

將函數(shù)取對(duì)數(shù),函數(shù)的極值點(diǎn)不會(huì)改變,公式變?yōu)椋?br>

伯努利分布下隨機(jī)變量的最大似然計(jì)算方法,P(X=1)=p,P(X=0)=1-p:


這樣就得到了我們熟悉的二元交叉熵的公式了,注意,二元交叉熵的名字有很多,有的地方把它叫l(wèi)ogloss的類別數(shù)為2的特例之類的balabala,記住一個(gè)名字能辨別同義不同名就行了。
然后是經(jīng)典的回歸的mse的損失函數(shù),這個(gè)之前寫過了,參考這篇即可:
我們?cè)谑褂镁€性回歸的時(shí)候的基本假設(shè)是噪聲服從正態(tài)分布,當(dāng)噪聲符合正態(tài)分布N(0,delta^2)時(shí),因變量則符合正態(tài)分布N(ax(i)+b,delta^2),其中預(yù)測(cè)函數(shù)y=ax(i)+b。這個(gè)結(jié)論可以由正態(tài)分布的概率密度函數(shù)得到。也就是說當(dāng)噪聲符合正態(tài)分布時(shí),其因變量必然也符合正態(tài)分布。因此,我們使用mse的時(shí)候?qū)嶋H上是假設(shè)y服從正態(tài)分布的。
然而生活中的很多回歸問題并不符合正態(tài)分布,例如典型的奢侈品商城的銷量,用戶到商城中閑逛,大部分用戶基本不買東西,只有少部分用戶會(huì)進(jìn)行購(gòu)買,極少部分用戶會(huì)購(gòu)買大量的奢侈品,因此分布常常是這樣的:

橫軸代表了銷量取件從小到達(dá)排列,縱軸代表了某個(gè)銷量區(qū)間對(duì)應(yīng)的用戶數(shù)量,這樣的分布情況明顯不符合高斯分布。
需要注意,從不均衡學(xué)習(xí)的角度來說,當(dāng)正負(fù)樣本數(shù)量相差極大的時(shí)候,

例如上圖,

此時(shí),其實(shí)仍舊是滿足二元交叉熵分布的,因此分類問題并不是特別好從基本假設(shè)的角度出發(fā)去思考損失函數(shù)的選擇,更多的是偏工程話的一些解釋,例如典型的不均衡樣本為什么會(huì)影響模型的表現(xiàn),核心原因是少類樣本的數(shù)量太少,模型學(xué)習(xí)不到太多的規(guī)律,但是如果少類樣本的數(shù)量很少,例如1000w:10w這樣的比例,雖然比例上也是不均衡,但是每個(gè)類別的數(shù)量都很多足夠模型充分學(xué)習(xí),實(shí)際應(yīng)用上來看,這種情況基本不需要進(jìn)行不均衡處理,因此嚴(yán)格來說,這種情況不屬于不均衡學(xué)習(xí)的問題,不均衡學(xué)習(xí)針對(duì)的更多是“絕對(duì)不均衡”的問題,即樣本的絕對(duì)數(shù)量很稀少而不是比例。
回到回歸問題上,在回歸問題的領(lǐng)域基本不會(huì)談?wù)摬痪鈫栴},因?yàn)檫B續(xù)的標(biāo)簽沒有不均衡的概念,取而代之的是標(biāo)簽分布詭異的情況,因此簡(jiǎn)單來說,我們可以把這類標(biāo)簽分布不符合高斯分布從而使得以mse作為損失函數(shù)的模型擬合效果差的問題作為回歸問題中的“不均衡問題”,這類不均衡問題就比較棘手,因?yàn)槟承┣闆r下的標(biāo)簽的分布情況和樣本數(shù)量沒關(guān)系,比如前面說到的奢侈品銷量的問題,就是典型的非高斯分布的形式,這個(gè)時(shí)候,我們就需要使用一些方法來應(yīng)對(duì)這種問題了,和不均衡學(xué)習(xí)類似,我們可以在樣本層面進(jìn)行一些采樣的操作,

這里,我們可以對(duì)銷量為0的用戶進(jìn)行下采樣,這樣整體分布看起來會(huì)更加復(fù)合高斯分布一點(diǎn),不過這種做法其實(shí)意義不大,因?yàn)槲覀兾磥硪A(yù)測(cè)的樣本的分布被破壞了,即使模型擬合出好的效果也沒用,這就好比我們進(jìn)行電商銷量預(yù)測(cè)的時(shí)候把雙十一的銷量樣本砍掉,會(huì)發(fā)現(xiàn)mse變得很優(yōu)美,但是預(yù)測(cè)的時(shí)候,對(duì)于未來的雙十一的預(yù)測(cè)效果會(huì)特別差。
因此,更加常見的做法是在標(biāo)簽層面或者損失函數(shù)方面進(jìn)行修正,例如使用對(duì)數(shù)變換或者更大一點(diǎn),使用boxcox變換來使得標(biāo)簽盡量接近高斯分布然后即使用mse:
比如這個(gè)例子:


所以有時(shí)候我們會(huì)發(fā)現(xiàn)處理回歸問題的時(shí)候進(jìn)行對(duì)數(shù)變換效果更好了。如果標(biāo)簽存在負(fù)數(shù),則所有的標(biāo)簽加上一個(gè)min_data+1然后進(jìn)行對(duì)數(shù)變換即可,或者直接使用boxcox變換。
但是在處理電商銷量問題的時(shí)候,我發(fā)現(xiàn)這種方法并不奏效,因?yàn)槿绻麡?biāo)簽分布本身是非?;蔚模赡苣闾幚砹税胩爝€是莫得用,處理完的分布還是畸形的,這個(gè)時(shí)候我們就要考慮使用其它損失函數(shù)來進(jìn)行處理了。
例如使用tweedie loss、possion loss等損失函數(shù)替代mse,例如:

這是tweedie分布的典型例子,tweedie loss的實(shí)現(xiàn)并不復(fù)雜,下次處理回歸問題遇到模型效果很差的問題的時(shí)候,可以看一下標(biāo)簽的分布情況,然后考慮選擇使用不同的損失函數(shù)進(jìn)行測(cè)試。
當(dāng)然,如果懶得看或者看不出來,把損失函數(shù)作為超參數(shù)進(jìn)行調(diào)參也是可以的。
推薦閱讀

