損失函數(loss function)是用來估量你模型的預測值f(x)與真實值Y的不一致程度,衡量模型預測的好壞。它是一個非負實值函數,通常使用L(Y, f(x))來表示,損失函數越小,模型的魯棒性就越好。
損失函數是經驗風險函數的核心部分,也是結構風險函數重要組成部分。模型的結構風險函數包括了經驗風險項和正則項,通常可以表示成如下式子
其中,前面的均值函數表示的是經驗風險函數,L代表的是損失函數,后面的Φ是正則化項(regularizer)或者叫懲罰項(penalty term),它可以是L1,也可以是L2,或者其他的正則函數。整個式子表示的意思是找到使目標函數最小時的θ值。
下面主要列出幾種常見的損失函數。
一、log對數損失函數(邏輯回歸):
log損失函數的標准形式:
在邏輯回歸的推導中,它假設樣本服從伯努利分布(0-1分布),然后求得滿足該分布的似然函數,接着取對數求極值
把極大化當做是一種思想,進而推導出它的經驗風險函數為:最小化負的似然函數。從損失函數的視角來看,它就成了log損失函數
取對數是為了方便計算極大似然估計,因為在MLE中,直接求導比較困難,所以通常都是先取對數再求導找極值點。損失函數L(Y, P(Y|X))表達的是樣本X在分類Y的情況下,使概率P(Y|X)達到最大值(換言之,就是利用已知的樣本分布,找到最有可能(即最大概率)導致這種分布的參數值;或者說什么樣的參數才能使我們觀測到目前這組數據的概率最大)。因為log函數是單調遞增的,所以logP(Y|X)也會達到最大值
因此在前面加上負號之后,就等價於最小化損失函數了
二、平方損失函數(最小二乘法, Ordinary Least Squares )
最小二乘的基本原則是:最優擬合直線應該是使各點到回歸直線的距離和最小的直線,即平方和最小。
換言之,OLS是基於距離的,而這個距離就是我們用的最多的歐幾里得距離
為什么它會選擇使用歐式距離作為誤差度量呢(即Mean squared error, MSE),主要有以下幾個原因:
* 簡單,計算方便;
* 歐氏距離是一種很好的相似性度量標准;
* 在不同的表示域變換后特征性質不變。
平方損失(Square loss)的標准形式如下:
當樣本個數為n時,此時的損失函數變為:
Y-f(X)表示的是殘差,整個式子表示的是殘差的平方和,而我們的目的就是最小化這個目標函數值(注:該式子未加入正則項),也就是最小化殘差的平方和(residual sum of squares,RSS)。
而在實際應用中,通常會使用均方差(MSE)作為一項衡量指標,公式如下:
三、指數損失函數(Adaboost)
常用在Adaboost之中
在Adaboost中,經過m此迭代之后,可以得到fm(x):
Adaboost每次迭代時的目的是為了找到最小化下列式子時的參數α 和G:
而指數損失函數(exp-loss)的標准形式如下
可以看出,Adaboost的目標式子就是指數損失,在給定n個樣本的情況下,Adaboost的損失函數為:
四、Hinge損失函數(SVM)
Hinge 損失函數的標准形式:
y^為預測值,在-1到1之間,y為目標值(-1或1)。
五、其它損失函數
除了以上這幾種損失函數,常用的還有:0-1損失是指,預測值和目標值不相等為1,否則為0:
0-1損失函數:(注意是不相等時為1,相等時為0)
絕對值損失函數:
參數越多,模型越復雜,而越復雜的模型越容易過擬合。過擬合就是說模型在訓練數據上的效果遠遠好於在測試集上的性能。此時可以考慮正則化,來權衡損失函數和正則項,減小參數規模,達到模型簡化的目的,從而使模型具有更好的泛化能力。
機器學習中的目標函數、損失函數、代價函數有什么區別?
損失函數和代價函數是同一個東西,目標函數是一個與他們相關但更廣的概念,對於目標函數來說在有約束條件下的最小化就是損失函數(loss function)。
上面三個圖的函數依次為 f1(x) ,f2(x) ,f3(x) 。我們是想用這三個函數分別來擬合Price,Price的真實值記為 Y 。
我們給定 x,這三個函數都會輸出一個f(x) ,這個輸出的 f(x) 與真實值 y 可能是相同的,也可能是不同的,為了表示我們擬合的好壞,我們就用一個函數來度量擬合的程度,比如:
這個函數就稱為損失函數(loss function),或者叫代價函數(cost function)。損失函數越小,就代表模型擬合的越好。
那是不是我們的目標就只是讓 loss function 越小越好呢?
答案是否定的。
f(x) 關於訓練集的平均損失稱作經驗風險(empirical risk),即
所以我們的目標就是最小化
稱為經驗風險最小化。
如果到這一步就完了的話,那我們看上面的圖,那肯定是最右面的 f3(x) 的經驗風險函數最小了,因為它對歷史的數據擬合的最好。但是我們從圖上來看f3(x) 肯定不是最好的,因為它過度學習歷史數據,導致它在真正預測時效果會很不好,這種情況稱為過擬合(over-fitting)。
為什么會造成這種結果?大白話說就是它的函數太復雜了,都有四次方了,這就引出了下面的概念,我們不僅要讓經驗風險最小化,還要讓結構風險最小化。這個時候就定義了一個函數 J(f) ,這個函數專門用來度量模型的復雜度,在機器學習中也叫正則化(regularization)。常用的有 L1 ,L2 范數。
到這一步我們就可以說我們最終的優化函數是
即最優化經驗風險和結構風險,而這個函數就被稱為目標函數。
此時結構化風險的定義為
結合上面的例子來分析:最左面的 f1(x)結構風險最小(模型結構最簡單),但是經驗風險最大(對歷史數據擬合的最差);最右面的f3(x) 經驗風險最小(對歷史數據擬合的最好),但是結構風險最大(模型結構最復雜);而 f2(x) 達到了二者的良好平衡,最適合用來預測未知數據集。