機器學習,評估——損失函數


概念區分

性能度量vs損失函數

損失函數、代價函數與目標函數

損失函數(Loss Function):是定義在單個樣本上的,是指一個樣本的誤差,度量模型一次預測的好壞
代價函數(Cost Function)=成本函數=經驗風險:是定義在整個訓練集上的,是所有樣本誤差的平均,也就是所有損失函數值的平均度量平均意義下模型預測的好壞。
目標函數(Object Function)=結構風險=經驗風險+正則化項=代價函數+正則化項:是指最終需要優化的函數,一般指的是結構風險。

  正則化項(regularizer)=懲罰項(penalty term)。

損失函數vs風險函數

損失函數度量模型一次預測的好壞,風險函數度量平均意義下模型預測的好壞。

風險函數分為兩種,不考慮正則項的是經驗風險(Empirical Risk),考慮過擬合問題,加上正則項的是結構風險(Structural Risk)。

一、損失函數

(一)回歸損失函數

1.損失函數

(1)平方損失函數(quadratic loss function)

是MSE的單個樣本損失,又叫平方損失(squared loss) 

是指預測值與實際值差的平方。

有時候為了求導方便,在前面乘上一個1/2。

(2)絕對(值)損失函數(absolute loss function)

是MAE單個樣本損失,又叫絕對誤差(absolute Loss)

該損失函數的意義和上面差不多,只不過是取了絕對值而不是求絕對值,差距不會被平方放大。

(3)對數損失函數(logarithmic loss function)

又稱,對數似然損失函數(loglikelihood loss function)。

這個損失函數就比較難理解了。事實上,該損失函數用到了極大似然估計的思想。

P(Y|X)通俗的解釋就是:在當前模型的基礎上,對於樣本X,其預測值為Y,也就是預測正確的概率。由於概率之間的同時滿足需要使用乘法,為了將其轉化為加法,我們將其取對數。最后由於是損失函數,所以預測正確的概率越高,其損失應該越小,前面加了一個負號是因為log函數是單調遞增的,在前面加上負號之后,最大化p(y|x)就等價於最小化L。因此再加個負號取個反。

下面說兩點:

第一點就是對數損失函數非常常用。logistic回歸,softmax回歸等都用的是這個損失。

第二點就是對於這個公式的理解。這個公式的意思是在樣本x在分類為y的情況下,我們需要讓概率p(y|x)達到最大值。就是利用目前已知的樣本分布,找到最有可能導致這種分布的參數值。

(4)Huber損失 (huber loss) 

2.各自優缺點

其中最常用的是平方損失,然而其缺點是對於異常點會施以較大的懲罰,因而不夠robust。

如果有較多異常點,則絕對值損失表現較好,但絕對值損失的缺點是在yf(x)=0y−f(x)=0處不連續可導,因而不容易優化。
Huber損失是對二者的綜合,當|yf(x)||y−f(x)|小於一個事先指定的值δ時,變為平方損失,大於δ時,則變成類似於絕對值損失,因此也是比較robust的損失函數。

三者的圖形比較如下:

 

(二)分類損失函數

1.損失函數

(1)0-1損失函數(0-1 loss function)

也就是說,當預測錯誤時,損失函數為1,當預測正確時,損失函數值為0。該損失函數不考慮預測值和真實值的誤差程度。只要錯誤,就是1。

0-1損失不連續、非凸,優化困難,因而常使用其他的代理損失函數進行優化。

(2)Logistic loss(對數似然)

logistic Loss為Logistic Regression中使用的損失函數。

 

 

 證明:https://www.cnblogs.com/massquantity/p/8964029.html

(3)Hinge loss

Hinge loss一般分類算法中的損失函數,尤其是SVM。

                   

hinge loss為svm中使用的損失函數,hinge loss使得yf(x)>1的樣本損失皆為0,由此帶來了稀疏解,使得svm僅通過少量的支持向量就能確定最終超平面。

其中 y=+1y=1f(x)=wx+bf(x)=wx+b ,當為SVM的線性核時。

推導:https://www.cnblogs.com/massquantity/p/8964029.html

(4)指數損失(Exponential loss)

 

exponential loss為AdaBoost中使用的損失函數,使用exponential loss能比較方便地利用加法模型推導出AdaBoost算法 (具體推導過程)。

然而其和squared loss一樣,對異常點敏感,不夠robust。

 

(5)modified Huber loss

 

modified huber loss結合了hinge loss和logistic loss的優點,既能在yf(x)>1時產生稀疏解提高訓練效率,又能進行概率估計。

另外其對於(yf(x)<1)樣本的懲罰以線性增加,這意味着受異常點的干擾較少,比較robust。scikit-learn中的SGDClassifier同樣實現了modified huber loss。

2.各自優缺點

 

從上圖可以看出上面這些損失函數都可以看作是0-1損失的單調連續近似函數,而因為這些損失函數通常是凸的連續函數,因此常用來代替0-1損失進行優化

它們的相同點是都隨着margin而加大懲罰;不同點在於,logistic loss和hinge loss都是線性增長,而exponential loss是以指數增長。

值得注意的是上圖中modified huber loss的走向和exponential loss差不多,並不能看出其robust的屬性。其實這和算法時間復雜度一樣,成倍放大了之后才能體現出巨大差異:

二、代價函數

(一)回歸問題常用代價函數

1.均方差損失 Mean Squared Error Loss( L2 Loss)

均方差 Mean Squared Error (MSE) 損失是機器學習、深度學習回歸任務中最常用的一種損失函數,也稱為 L2 Loss,又叫最小平方誤差、最小均方誤差、平方損失(square loss)。

(1)公式

(2)高斯分布:MSE損 == 最大似然估計

2.平均絕對誤差損失 Mean Absolute Error Loss(L1 Loss)

平均絕對誤差 Mean Absolute Error (MAE) 是另一類常用的損失函數,也稱為 L1 Loss,又叫最小絕對值偏差(LAE)。

(1)公式

(2)MAE(L1)和 MSE(L2)作為損失函數的主要區別:

L2損失相比L1通常可以更快地收斂。

L1損失對於 outlier 更加健壯,即更加不易受到 outlier 影響。L2損失函數對異常點比較敏感,因為L2將誤差平方化,使得異常點的誤差過大,模型需要大幅度的調整,這樣會犧牲很多正常的樣本。

而L1損失函數由於導數不連續,可能存在多個解,當數據集有一個微笑的變化,解可能會有一個很大的跳動,L1的解不穩定。

 (3)拉普拉斯分布:MAE損失  ==  負對數似然

 

3.Huber Loss

Huber Loss 是一種將 MSE 與 MAE 結合起來,取兩者優點的損失函數,也被稱作 Smooth Mean Absolute Error Loss 。

其原理很簡單,就是在誤差接近 0 時使用 MSE,誤差較大時使用 MAE。

(1)公式

(2)Huber Loss 的特點

Huber Loss 結合了 MSE 和 MAE 損失,在誤差接近 0 時使用 MSE,使損失函數可導並且梯度更加穩定;在誤差較大時使用 MAE 可以降低 outlier 的影響,使訓練對 outlier 更加健壯。缺點是需要額外地設置一個 delta超參數。

(二)分類問題常用的代價函數

1.交叉熵損失函數 Cross Entropy Loss。

(1)二分類

 (2)多分類

(3)為什么用交叉熵損失 

2.合頁損失 Hinge Loss(用於SVM)

(1)公式

 

 

 

 

參考:

https://www.cnblogs.com/lliuye/p/9549881.html

https://blog.csdn.net/andyjkt/article/details/107599424

https://blog.csdn.net/Tianlock/article/details/88232467

https://www.cnblogs.com/massquantity/p/8964029.html

更多損失函數:https://blog.csdn.net/qq_14845119/article/details/80787753【未整理】


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM