機器學習-損失函數
來源:劉帝偉 (中國統計網特邀認證作者)
編輯:Gemini
損失函數(loss function)是用來估量你模型的預測值f(x)與真實值Y的不一致程度,它是一個非負實值函數,通常使用L(Y, f(x))來表示,損失函數越小,模型的魯棒性就越好。損失函數是經驗風險函數的核心部分,也是結構風險函數重要組成部分。
模型的結構風險函數包括了經驗風險項和正則項,通常可以表示成如下式子:
θ∗=argminθ1N∑i=1NL(yi,f(xi;θ))+λ Φ(θ)
θ∗=argminθ1N∑i=1NL(yi,f(xi;θ))+λ Φ(θ)
其中,前面的均值函數表示的是經驗風險函數,L代表的是損失函數,後面的
ΦΦ是正則化項(regularizer)或者叫懲罰項(penalty term),它可以是L1,也可以是L2,或者其他的正則函數。整個式子表示的意思是找到使目標函數最小時的
θθ值。下面主要列出幾種常見的損失函數。一、log對數損失函數(邏輯回歸)
有些人可能覺得邏輯回歸的損失函數就是平方損失,其實並不是。
平方損失函數可以通過線性回歸在假設樣本是高斯分布的條件下推導得到,而邏輯回歸得到的並不是平方損失。
在邏輯回歸的推導中,它假設樣本服從伯努利分布(0-1分布),然後求得滿足該分布的似然函數,接著取對數求極值等等。而邏輯回歸併沒有求似然函數的極值,而是把極大化當做是一種思想,進而推導出它的經驗風險函數為:最小化負的似然函數(即max F(y, f(x)) —-> min -F(y, f(x)))。從損失函數的視角來看,它就成了log損失函數了。
log損失函數的標準形式:
L(Y,P(Y|X))=−logP(Y|X)L(Y,P(YX))=−logP(YX)
剛剛說到,取對數是為了方便計算極大似然估計,因為在MLE中,直接求導比較困難,所以通常都是先取對數再求導找極值點。
損失函數L(Y, P(Y|X))表達的是樣本X在分類Y的情況下,使概率P(Y|X)達到最大值(換言之,就是利用已知的樣本分布,找到最有可能(即最大概率)導致這種分布的參數值;或者說什麼樣的參數才能使我們觀測到目前這組數據的概率最大)。
因為log函數是單調遞增的,所以logP(Y|X)也會達到最大值,因此在前面加上負號之後,最大化P(Y|X)就等價於最小化L了。
邏輯回歸的P(Y=y|x)表達式如下(為了將類別標籤y統一為1和0,下面將表達式分開表示):
將它帶入到上式,通過推導可以得到logistic的損失函數表達式,如下:
邏輯回歸最後得到的目標式子如下:
上面是針對二分類而言的。
這裡需要解釋一下:之所以有人認為邏輯回歸是平方損失,是因為在使用梯度下降來求最優解的時候,它的迭代式子與平方損失求導後的式子非常相似,從而給人一種直觀上的錯覺。
這裡有個PDF可以參考一下:Lecture 6: logistic regression.pdf.
二、平方損失函數(最小二乘法, Ordinary Least Squares )
最小二乘法是線性回歸的一種,OLS將問題轉化成了一個凸優化問題。
在線性回歸中,它假設樣本和噪聲都服從高斯分布(為什麼假設成高斯分布呢?
其實這裡隱藏了一個小知識點,就是中心極限定理,可以參考【central limit theorem】),最後通過極大似然估計(MLE)可以推導出最小二乘式子。
最小二乘的基本原則是:最優擬合直線應該是使各點到回歸直線的距離和最小的直線,即平方和最小。
換言之,OLS是基於距離的,而這個距離就是我們用的最多的歐幾裡得距離。
為什麼它會選擇使用歐式距離作為誤差度量呢(即Mean squared error, MSE),主要有以下幾個原因:
簡單,計算方便;
歐氏距離是一種很好的相似性度量標準;
在不同的表示域變換後特徵性質不變。
平方損失(Square loss)的標準形式如下:
L(Y,f(X))=(Y−f(X))2L(Y,f(X))=(Y−f(X))2
當樣本個數為n時,此時的損失函數變為:
Y-f(X)表示的是殘差,整個式子表示的是殘差的平方和,而我們的目的就是最小化這個目標函數值(註:該式子未加入正則項),也就是最小化殘差的平方和(residual sum of squares,RSS)。
而在實際應用中,通常會使用均方差(MSE)作為一項衡量指標,公式如下:
上面提到了線性回歸,這裡額外補充一句,我們通常說的線性有兩種情況,一種是因變量y是自變量x的線性函數,一種是因變量y是參數
αα的線性函數。在機器學習中,通常指的都是後一種情況。三、指數損失函數(Adaboost)
學過Adaboost算法的人都知道,它是前向分步加法算法的特例,是一個加和模型,損失函數就是指數函數。在Adaboost中,經過m此迭代之後,可以得到
fm(x)fm(x):
Adaboost每次迭代時的目的是為了找到最小化下列式子時的參數
αα 和G:而指數損失函數(exp-loss)的標準形式如下
可以看出,Adaboost的目標式子就是指數損失,在給定n個樣本的情況下,Adaboost的損失函數為:
關於Adaboost的推導,可以參考Wikipedia:AdaBoost或者《統計學習方法》P145.
四、Hinge損失函數(SVM)
在機器學習算法中,hinge損失函數和SVM是息息相關的。在線性支持向量機中,最優化問題可以等價於下列式子:
下面來對式子做個變形,令:
於是,原式就變成了:
如若取
可以看出,該式子與下式非常相似:
前半部分中的
ll就是hinge損失函數,而後面相當於L2正則項。Hinge 損失函數的標準形式
L(y)=max(0,1−yy~),y=±1L(y)=max(0,1−yy~),y=±1
可以看出,當|y|>=1時,L(y)=0。
補充一下:在libsvm中一共有4中核函數可以選擇,對應的是-t參數分別是:
0-線性核;
1-多項式核;
2-RBF核;
3-sigmoid核。
五、其它損失函數
除了以上這幾種損失函數,常用的還有:
0-1損失函數
絕對值損失函數
下面來看看幾種損失函數的可視化圖像,對著圖看看橫坐標,看看縱坐標,再看看每條線都表示什麼損失函數,多看幾次好好消化消化。
OK,暫時先寫到這裡,休息下。最後,需要記住的是:參數越多,模型越複雜,而越複雜的模型越容易過擬合。過擬合就是說模型在訓練數據上的效果遠遠好於在測試集上的性能。此時可以考慮正則化,通過設置正則項前面的hyper parameter,來權衡損失函數和正則項,減小參數規模,達到模型簡化的目的,從而使模型具有更好的泛化能力。
End.
往期精彩文章:
第一個被認為「科學家」的人:泰勒斯
數學思維比數學運算更重要
二十世紀的十大科學騙局
瞎扯現代數學的基礎
x背後的軼聞趣事
主宰這個世界的10大算法
16個讓你燒腦讓你暈的悖論
機器學習中距離和相似性度量方法
傳說中的快排是怎樣的
玻璃秘史:一個人 改變了全世界
程序人生的四個象限和兩條主線
比特幣的原理及運作機制
概率論公式,你值得擁有
分類算法之樸素貝葉斯算法
採樣定理:有限個點構建出整個函數
長按二維碼識別
歡迎大家把獨特見解分享出來,投稿郵箱:
math_alg@163.com