機器學習中常用的回歸損失有哪些?

浪浪的老唐


較為常用的損失函數有五種

1.均方誤差、平方損失——L2損失

均方誤差(MSE)是最常用的迴歸損失函數,它計算的是預測值與目標值之間差值的平方和。公式如圖:

下圖是均方誤差的曲線分佈圖,可以看到預測值等於目標值時損失函數達到最小值;隨著誤差的增大,損失函數的增加更為迅速。

2.平均絕對誤差——L1損失函數

平均絕對誤差(MAE)是另一種常用的迴歸損失函數。它計算目標值與預測值之差的絕對值之和,以此來衡量預測值的平均誤差幅度,不考慮誤差的方向(我們把考慮方向的函數叫做平均偏差誤差,MBE,計算的是殘差之和)。MAE的公式和曲線分佈圖如下:

3.Huber損失——平滑平均絕對誤差

相比於平方損失來說,Huber損失對局外點不敏感,同時它也在0點可微。它基本上來說是絕對誤差,在誤差很小時變成平方誤差。誤差多小才可以將它變為平方誤差的閾值取決於超參數δ。Huber損失會在δ趨向0時變為MAE,而當δ趨向無窮時變為MSE,表達式與曲線分佈如圖:

δ的選擇對於Huber損失非常重要,因為它決定了怎樣處理局外點。大於δ的殘差會被用L1損失最小化,小於δ的殘差會被L2損失來最小化。

MAE在用梯度下降訓練神經網絡時持續較大的梯度而導致在錯過最優值,而MSE在損失接近最小值時減小梯度使訓練結果更準確。Huber損失則是克服了MAE和MSA的缺點,不僅讓函數有連續的導數,吸收了MSE梯度隨誤差減小二減小的特性,也讓模型對局外點的魯棒性更強。

但是Huber的問題在於超參數δ需要精心訓練。

4.Log-Cosh損失函數(對數雙曲餘弦函數)

對數雙曲餘弦函數是在迴歸任務中比L2更為平滑的函數,它利用雙曲餘弦來計算預測誤差,公式與曲線分佈圖如下:

該損失函數的優點是當誤差很小時,log(cosh(x))與(x**2)/2的值相近,當誤差很大時則與abs(x)-log2相近,這意味著大部分情況下logcosh函數與MSE相似,吸取了MSE的優點,但又不會被局外點過多影響。它有Huber損失的所有優點,但不像Huber損失,logcosh是處處二次可導的。二次可導在很多機器學習的模型中十分重要,比如XGboost使用牛頓法尋找最優解(Hessian矩陣)

但是logcosh損失不是完美的,當誤差非常大時它仍然會遇到梯度和hessian變為常數的問題。

5.分位數損失(Quantile Loss)

實際上分位數迴歸就是MAE的拓展,當分位數為第五十個百分位時它就是MAE。公式和圖如下:

在真實世界的預測問題中我們常常希望知道我們預測的不確定度,相比於僅給出預測點,給出預測區間將會大幅度提升對決策過程的幫助。

分位數損失在我們需要預測取值區間時十分有用。我們在利用最小二乘迴歸來預測是基於取值殘差的方差是常數的假設,而很多線性模型不滿足這一假設,此時分位損失函數和分位迴歸模型就可以拯救回歸模型。即使在非常數和非均勻分佈的殘差下也能表現良好。

上圖是兩種不同的數據分佈,左側是殘差方差為常數的情況,右側是殘差方差變化的情況。用最小二乘法對兩種情況都進行估計後,橙色的線為結果,但是無法得到取值的區間範圍,此時就需要用上分位數損失函數。

圖中上下兩條虛線表示基於0.08和0.95的分位數損失得到的區間,可以清晰地看到預測值的取值範圍。

分位數γ的取值取決於是否想讓正或負的誤差發揮更大的作用,損失函數會基於γ對過擬合和欠擬合的情況施加不同懲罰。


分享到:


相關文章: