損失函數分類

損失函數

機器學習模型關於單個樣本的預測值與真實值的差稱爲損失。損失越小,模型越好,如果預測值與真實值相等,就是沒有損失。
損失函數(Loss function)是用來估量模型的預測值 f(x) 與真實值 Y 的不一致程度,它是一個非負實值函數,通常用 L(Y,f(x)) 來表示。損失函數越小,模型的魯棒性就越好。
雖然損失函數可以讓我們看到模型的優劣,並且爲我們提供了優化的方向,但是我們必須知道沒有任何一種損失函數適用於所有的模型。損失函數的選取依賴於參數的數量、異常值、機器學習算法、梯度下降的效率、導數求取的難易和預測的置信度等若干方面。
由於機器學習的任務不同,損失函數一般分爲分類和迴歸兩類,迴歸會預測出一個數值結果,分類則會給出一個標籤。

分類損失函數

1.0-1損失函數

0-1損失是指,預測值和目標值不相等爲1,否則爲0:

感知機就是用的這種損失函數。但是由於相等這個條件太過嚴格,因此我們可以放寬條件,即滿足 |Y−f(X)|<T時認爲相等。

2.對數損失函數

邏輯迴歸的損失函數就是對數損失函數,在邏輯迴歸的推導中,它假設樣本服從伯努利分佈(0-1)分佈,然後求得滿足該分佈的似然函數,接着用對數求極值。邏輯迴歸並沒有求對數似然函數的最大值,而是把極大化當做一個思想,進而推導它的風險函數爲最小化的負的似然函數。從損失函數的角度上,它就成爲了對數損失函數。
損失函數的標準形式:

在極大似然估計中,通常都是先取對數再求導,再找極值點,這樣做是方便計算極大似然估計。損失函數L(Y,P(Y|X))是指樣本X在分類Y的情況下,使概率P(Y|X)達到最大值(利用已知的樣本分佈,找到最大概率導致這種分佈的參數值)

3.平方損失函數

最小二乘法是線性迴歸的一種方法,它將回歸的問題轉化爲了凸優化的問題。最小二乘法的基本原則是:最優擬合曲線應該使得所有點到迴歸直線的距離和最小。通常用歐幾里得距離進行距離的度量。平方損失的損失函數爲:

4. 指數損失函數

AdaBoost就是以指數損失函數爲損失函數的。
指數損失函數的標準形式:

 

5. Hinge損失函數

Hinge損失函數用於最大間隔(maximum-margin)分類,其中最有代表性的就是支持向量機SVM。
Hinge函數的標準形式:

其中,t爲目標值(-1或+1),y是分類器輸出的預測值,並不直接是類標籤。其含義爲,當t和y的符號相同時(表示y預測正確)並且|y|≥1時,hinge loss爲0;當t和y的符號相反時,Hinge損失函數隨着y的增大線性增大。
在支持向量機中,最初的SVM優化的函數如下:

將約束項進行變形,則爲:

則損失函數可以進一步寫爲:

因此,SVM的損失函數可以看做是L2正則化與Hinge loss之和。

迴歸損失函數

1.L1損失函數:

平均絕對誤差(MAE)是一種常用的迴歸損失函數,它是目標值與預測值之差絕對值的和,表示了預測值的平均誤差幅度,而不需要考慮誤差的方向(注:平均偏差誤差MBE則是考慮的方向的誤差,是殘差的和),範圍是0到∞,其公式如下所示:

MAE損失(y軸)與預測(x軸)

2.L2損失函數:

均方誤差(MSE)是迴歸損失函數中最常用的誤差,它是預測值與目標值之間差值的平方和,其公式如下所示:

下圖是均方根誤差值的曲線分佈,其中最小值爲預測值爲目標值的位置。我們可以看到隨着誤差的增加損失函數增加的更爲迅猛。

MSE損失(y軸)與預測(x軸)

3.Huber損失函數

Huber損失相比於平方損失來說對於異常值不敏感,但它同樣保持了可微的特性。它基於絕對誤差但在誤差很小的時候變成了平方誤差。我們可以使用超參數δ來調節這一誤差的閾值。當δ趨向於0時它就退化成了MAE,而當δ趨向於無窮時則退化爲了MSE,其表達式如下,是一個連續可微的分段函數:

 

Huber損失(y軸)與預測(x軸)

對於Huber損失來說,δ的選擇十分重要,它決定了模型處理異常值的行爲。當殘差大於δ時使用L1損失,很小時則使用更爲合適的L2損失來進行優化。
Huber損失函數克服了MAE和MSE的缺點,不僅可以保持損失函數具有連續的導數,同時可以利用MSE梯度隨誤差減小的特性來得到更精確的最小值,也對異常值具有更好的魯棒性。而Huber損失函數的良好表現得益於精心訓練的超參數δ。

4.Log-Cosh損失函數

Log-Cosh損失函數是一種比L2更爲平滑的損失函數,利用雙曲餘弦來計算預測誤差:

Log-Cosh損失(y軸)與預測(x軸)

它的優點在於對於很小的誤差來說log(cosh(x))與(x**2)/2很相近,而對於很大的誤差則與abs(x)-log2很相近。這意味着log cosh損失函數可以在擁有MSE優點的同時也不會受到異常值的太多影響。它擁有Huber的所有優點,並且在每一個點都是二次可導的。二次可導在很多機器學習模型中是十分必要的,例如使用牛頓法的XGBoost優化模型(Hessian矩陣)。

5.分位數損失函數

在大多數真實世界的預測問題中,我們常常希望看到我們預測結果的不確定性。通過預測出一個取值區間而不是一個個具體的取值點,這對於具體業務流程中的決策至關重要。
分位數損失函數在我們需要預測結果的取值區間時是一個特別有用的工具。通常情況下我們利用最小二乘迴歸來預測取值區間主要基於這樣的假設:取值殘差的方差是常數。但很多時候對於線性模型是不滿足的。這時候就需要分位數損失函數和分位數迴歸來拯救回歸模型了。它對於預測的區間十分敏感,即使在非均勻分佈的殘差下也能保持良好的性能。下面讓我們用兩個例子看看分位數損失在異方差數據下的迴歸表現。

左:線性關係b / w X1和Y.具有恆定的殘差方差。右:線性關係b / w X2和Y,但Y的方差隨着X2增加。

上圖是兩種不同的數據分佈,其中左圖是殘差的方差爲常數的情況,而右圖則是殘差的方差變化的情況。我們利用正常的最小二乘對上述兩種情況進行了估計,其中橙色線爲建模的結果。但是我們卻無法得到取值的區間範圍,這時候就需要分位數損失函數來提供。

上圖中上下兩條虛線基於0.05和0.95的分位數損失得到的取值區間,從圖中可以清晰地看到建模後預測值得取值範圍。
分位數迴歸的目標在於估計給定預測值的條件分位數。實際上分位數迴歸就是平均絕對誤差的一種拓展。分位數值得選擇在於我們是否希望讓正的或者負的誤差發揮更大的價值。損失函數會基於分位數γ對過擬合和欠擬合的施加不同的懲罰。例如選取γ爲0.25時意味着將要懲罰更多的過擬合而儘量保持稍小於中值的預測值。

γ的取值通常在0-1之間,圖中描述了不同分位數下的損失函數情況,明顯可以看到對於正負誤差不平衡的狀態。

分位數損失(Y軸)與預測(X軸)

轉載:https://www.jianshu.com/p/5c036b636d5b

參考文章:
https://www.jianshu.com/p/b715888f079b
http://baijiahao.baidu.com/s?id=1603857666277651546&wfr=spider&for=pc
https://blog.csdn.net/weixin_37933986/article/details/68488339

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章