損失函數定義
機器學習模型關於單個樣本的預測值與真實值的差稱爲損失。損失越小,模型越好,如果預測值與真實值相等,就是沒有損失。用於計算損失的函數稱爲損失函數。模型每一次預測的好壞用損失函數來度量。
機器通過損失函數進行學習。這是一種評估特定算法對給定數據建模程度的方法。如果預測值與實際結果偏離較遠,損失函數會得到一個非常大的值。在一些優化函數的輔助下,損失函數逐漸學會減少預測值的誤差。
通俗的講損失函數
衡量模型預測的好壞。
損失函數就是用來表現預測與實際數據的差距程度。
比如你做一個線性迴歸,實際值和你的 預測值肯定會有誤差,那麼我們找到一個函數表達這個誤差就是損失函數。
假設我們令真實值爲Y 預測值爲f(x) 損失函數爲L(Y,f(x))他們的關係就是下圖:
損失函數(loss function)是用來估量你模型的預測值f(x)與真實值Y的不一致程度,它是一個非負實值函數,通常使用L(Y, f(x))來表示,損失函數越小,模型的魯棒性就越好。
舉例
接下來,我們舉個例子來講解下損失函數:
首先我們假設要預測一個公司某商品的銷售量:
X:門店數 Y:銷量
我們會發現銷量隨着門店數上升而上升。於是我們就想要知道大概門店和銷量的關係是怎麼樣的呢?
我們根據圖上的點描述出一條直線:
似乎這個直線差不多能說明門店數X和Y得關係了:我們假設直線的方程爲Y=a0+a1X(a爲常數係數)。假設a0=10 a1=3 那麼Y=10+3X(公式1)
我們希望我們預測的公式與實際值差值越小越好,所以就定義了一種衡量模型好壞的方式,即損失函數(用來表現預測與實際數據的差距程度)。於是乎我們就會想到這個方程的損失函數可以用絕對損失函數表示:
公式Y-實際Y的絕對值,數學表達式:[1]
上面的案例它的絕對損失函數求和計算求得爲:6
爲後續數學計算方便,我們通常使用平方損失函數代替絕對損失函數:
公式Y-實際Y的平方,數學表達式:L(Y,f(X))= [1]
上面的案例它的平方損失函數求和計算求得爲:10
以上爲公式1模型的損失值。
假設我們再模擬一條新的直線:a0=8,a1=4
公式2 Y=8+4X
絕對損失函數求和:11 平方損失函數求和:27
公式1 Y=10+3X
絕對損失函數求和:6 平方損失函數求和:10
從損失函數求和中,就能評估出公式1能夠更好得預測門店銷售。
統計學習中常用的損失函數有以下幾種
(1)0-1損失函數(gold standard 標準式)
0-1損失是指,預測值和目標值不相等爲1,否則爲0:
該損失函數不考慮預測值和真實值的誤差程度,也就是說只要預測錯誤,預測錯誤差一點和差很多是一樣的。感知機就是用的這種損失函數,但是由於相等這個條件太過嚴格,我們可以放寬條件,即滿足|Y−f(X)|<T時認爲相等。
這種損失函數用在實際場景中比較少,更多的是用倆衡量其他損失函數的效果。
(2)絕對損失函數(absoluteloss function)
(3)平方損失函數(squared loss)
實際結果和觀測結果之間差距的平方和,一般用在線性迴歸中,可以理解爲最小二乘法:
(4)對數損失函數(logarithmic loss)
主要在邏輯迴歸中使用,樣本預測值和實際值的誤差符合高斯分佈,使用極大似然估計的方法,取對數得到損失函數:
損失函數L(Y,P(Y|X))L(Y,P(Y|X))是指樣本X在分類Y的情況下,使概率P(Y|X)達到最大值。
經典的對數損失函數包括entropy和softmax,一般在做分類問題的時候使用(而回歸時多用絕對值損失(拉普拉斯分佈時,μ值爲中位數)和平方損失(高斯分佈時,μ值爲均值))。
(5)指數損失函數(Exp-Loss)
在boosting算法中比較常見,比如Adaboosting中,標準形式是:
(6)鉸鏈損失函數(Hinge Loss)
鉸鏈損失函數主要用在SVM中,Hinge Loss的標準形式爲:
y是預測值,在-1到+1之間,t爲目標值(-1或+1)。其含義爲,y的值在-1和+1之間就可以了,並不鼓勵|y|>1|y|>1,即並不鼓勵分類器過度自信,讓某個正確分類的樣本的距離分割線超過1並不會有任何獎勵,從而使分類器可以更專注於整體的分類誤差。
邏輯迴歸的損失函數
線性迴歸的損失函數是平方損失。邏輯迴歸的損失函數是對數損失函數,定義如下:
其中:
- (xy)ϵD 是包含很多有標籤樣本 (x,y) 的數據集。
- “y”是有標籤樣本中的標籤。由於這是邏輯迴歸,因此“y”的每個值必須是 0 或 1。
- “y’”是對於特徵集“x”的預測值(介於 0 和 1 之間)。
總結
損失函數越小,模型就越好。
損失函數可以很好得反映模型與實際數據差距的工具,理解損失函數能夠更好得對後續優化工具(梯度下降等)進行分析與理解。
借鑑了以下大佬的文章:
https://blog.csdn.net/l18930738887/article/details/50615029
https://blog.csdn.net/google19890102/article/details/50522945?depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-4&utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-4
https://blog.csdn.net/qq_24753293/article/details/78788844
https://blog.csdn.net/chkay399/article/details/81878157
https://developers.google.cn/machine-learning/crash-course/logistic-regression/model-training