1. 程式人生 > >幾種損失函式比較

幾種損失函式比較

1. 綜述

損失函式(Loss Function)是用來評估模型好壞程度,即預測值f(x)與真實值的不一致程度,通常表示為L(Y, f(x))的一個非負的浮點數。比如你要做一個線性迴歸,你擬合出來的曲線不會和原始的資料分佈是完全吻合(完全吻合的話,很可能會出現過擬合的情況),這個差距就是用損失函式來衡量。那麼損失函式的值越小,模型的魯棒性也就越好,對新資料的預測能力也就越強。

通常提到損失函式,我們不得不提到代價函式(Cost Function)及目標函式(Object Function)。

損失函式(Loss Function) 直接作用於單個樣本,用來表達樣本的誤差

代價函式

(Cost Function)作用於整個訓練集,是整個樣本集的平均誤差,對所有損失函式值的平均

目標函式(Object Function)是我們最終要優化的函式,也就是代價函式+正則化函式(經驗風險+結構風險)

 minJ(\theta )=\frac{1}{n}\sum_{i=1}^{n}L(y_{i}, f(x_{i};\theta)) + \lambda \Phi (\theta )

其中,第一部分是代價函式,L代表損失函式;第二部分是正則化函式(也可以稱為懲罰項),可以試L1,也可以試L2或者其他正則函式。整個表示式是要找到是目標函式最好的值。

2. 損失函式

0-1損失函式(0-1 Loss Function)主要用於感知機

平方損失函式(Quadratic Loss Function)主要用於最小二乘法(OLS)

絕對值損失函式(Absolute Loss Function)

對數損失函式(Logarithmic Loss Function,Cross Entropy Loss Function, Softmax Loss Loss Function)主要用於Logistic迴歸與Softmax分類

指數損失函式(Exponential Loss Function)主要用於Adaboost整合學習演算法

鉸鏈損失函式(Hinge Loss Function)主要用於支援向量機(SVM)

2.1 0-1損失函式(0-1 Loss Function)

L(y,f(x))=\left\{\begin{matrix} 1, y \neq f(x)\\ 0, y = f(x) \end{matrix}\right.

當預測錯誤時,損失函式結果為1;當預測正確時,損失函式為0。該預測並不考慮具體的誤差程度,直接進行二值化。

優點:穩定的分類面,不連續,所以不可導,但是次梯度可導

缺點:二階不可導,有時候不存在唯一解

2.2 平方損失函式(Quadratic Loss Function)

L(y, f(x))=(y-f(x))^2

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

優點:容易優化(一階導數連續)

缺點:對outlier點敏感,得不到最優的分類面

2.3 絕對值損失函式(Absolute Loss Function)

L(y, f(x))=|y-f(x)|

與平方損失函式類似,去實際值與測試值的差值的絕對值,但是不會被放大。

2.4 對數損失函式(Logarithmic Loss Function)

L(y, p(y|x)) = -log\ p(y|x)

對數損失函式用到了極大似然估計的思想。P(Y|X)表示在當前模型上,樣本X的預測值為Y的概率,也就是說對於樣本X預測正確的概率。由於統計極大似然估計用到概率乘法,為了將其轉為假髮,對其取對數即可方便展開為加法;由於是損失函式,預測正確的概率應該與損失值成反比,這裡對概率取反得到log(\frac{1}{p(y|x)}),轉化一下可以得到-log\ p(y|x)

優點:穩定的分類面,嚴格凸,且二階導數連續。

2.5 指數損失函式(Exponential Loss Function

L(y,f(x))=e^{-yf(x)}

學過Adaboost的知道它是前向分步加法演算法的特例,是一個加和模型,損失函式就是指數函式。

2.6 鉸鏈損失函式(Hinge Loss Function)

L(w, b)=max\begin{Bmatrix} 0,1-yf(x) \end{Bmatrix},其中y=\pm 1f(x)=wx+b

Hinge Loss function 一般在分類演算法使用的分類函式,尤其使用於SVM。

優點:穩定的分類面,凸函式。可以極大化分類間隔。

3. 代價函式

3.1 均方誤差(Mean Square Error)

MSE=\frac{1}{n}\sum_{i=1}^{n}(y_{i}-f(x_{i}))^2

均方誤差是指引數估計值與引數真值之差平方的期望值,MSE用來評估模型的好壞程度,MSE越小說明預測模型精確度越高。

通常用來做迴歸問題的代價函式。

3.2 均方根誤差(Root Mean Square Error)

RMSE=\sqrt{\frac{1}{n}\sum_{i=1}^{n}(y_{i}-f(x_{i}))^2}

均方根誤差是均方的算術平方根,能夠直觀的觀察預測值與真實值直接的差距。

通常用來作為迴歸演算法的效能指標。

3.3 平均絕對誤差(Mean Absolute Error)

MAE=\frac{1}{n}\sum_{i=1}^{n}|y_{i}-f(x_{i})|

平均誤差是絕對誤差的平均值,平均絕對誤差能更好的反應預測值與實際值的實際誤差情況。

通常用來作為迴歸演算法的效能指標。

3.4 交叉熵代價函式(Cross Entry)

H(p,q)=-\sum_{i=1}^{n}p(x_{i})log\ q(x_{i})

其中p(x)是真實分佈的概率,q(x)是模型通過資料計算出來的概率估計。

交叉熵是用來評估當前訓練得到的概率分佈於真實分佈的差異情況,減少交叉熵損失就是在提高模型的預測的準確率。

通常用來作為分類問題的代價函式。

4. 正則化

4.1 L1正則化

L1正則化假設模型的先驗概率分佈服從拉普拉斯分佈;

\min_{w}E=H(x, w) + \lambda \left \| W \right \|_{2}^{2}

--求解略複雜;

--能夠得到稀疏解

4.2 L2正則化

L2正則化假設模型的先驗概率分佈服從高斯分佈;

\min_{w}E=H(x,w)+\lambda \left | w \right |

--簡單有效

--便於求解

-- 最常用

5. 選擇好的損失函式

什麼樣的損失函式時好的損失函式,那麼多的損失函式,有沒有一定的選擇準則?

 minJ(\theta )=\frac{1}{n}\sum_{i=1}^{n}L(y_{i}, f(x_{i};\theta)) + \lambda \Phi (\theta )

還是需要考慮你的具體要解決的問題及樣本情況。可以簡單遵循幾個準則:

  • L梯度需要有界,魯棒性要有保障
  • 將L1作為L的漸近線,穩定的分類邊界
  • 大分類間隔,保證泛化能力
  • 選擇正確的正則化方法(一般選擇L2)

6. 參考文獻

[1] https://www.cnblogs.com/lliuye/p/9549881.html

[2] https://blog.csdn.net/leo_xu06/article/details/79010218

[3] https://blog.csdn.net/weixin_37136725/article/details/79291818