99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁精彩閱讀機器學習中的損失函數(shù)
機器學習中的損失函數(shù)
2018-08-13
收藏

機器學習中的損失函數(shù)

損失函數(shù)(loss function)是用來估量你模型的預測值f(x)與真實值Y的不一致程度,它是一個非負實值函數(shù),通常使用L(Y, f(x))來表示,損失函數(shù)越小,模型的魯棒性就越好。損失函數(shù)是經(jīng)驗風險函數(shù)的核心部分,也是結構風險函數(shù)重要組成部分。模型的結構風險函數(shù)包括了經(jīng)驗風險項和正則項,通常可以表示成如下式子:

其中,前面的均值函數(shù)表示的是經(jīng)驗風險函數(shù),L代表的是損失函數(shù),后面的是正則化項(regularizer)或者叫懲罰項(penalty term),它可以是L1,也可以是L2,或者其他的正則函數(shù)。整個式子表示的意思是找到使目標函數(shù)最小時的值。下面主要列出幾種常見的損失函數(shù)

一、log對數(shù)損失函數(shù)邏輯回歸

有些人可能覺得邏輯回歸損失函數(shù)就是平方損失,其實并不是。平方損失函數(shù)可以通過線性回歸在假設樣本是高斯分布的條件下推導得到,而邏輯回歸得到的并不是平方損失。在邏輯回歸的推導中,它假設樣本服從伯努利分布(0-1分布),然后求得滿足該分布的似然函數(shù),接著取對數(shù)求極值等等。而邏輯回歸并沒有求似然函數(shù)的極值,而是把極大化當做是一種思想,進而推導出它的經(jīng)驗風險函數(shù)為:最小化負的似然函數(shù)(即max F(y, f(x)) —-> min -F(y, f(x)))。從損失函數(shù)的視角來看,它就成了log損失函數(shù)了。

log損失函數(shù)的標準形式:

L(Y,P(Y|X))=?logP(Y|X)L(Y,P(Y|X))=?log?P(Y|X)
剛剛說到,取對數(shù)是為了方便計算極大似然估計,因為在MLE中,直接求導比較困難,所以通常都是先取對數(shù)再求導找極值點。損失函數(shù)L(Y, P(Y|X))表達的是樣本X在分類Y的情況下,使概率P(Y|X)達到最大值(換言之,就是利用已知的樣本分布,找到最有可能(即最大概率)導致這種分布的參數(shù)值;或者說什么樣的參數(shù)才能使我們觀測到目前這組數(shù)據(jù)的概率最大)。因為log函數(shù)是單調遞增的,所以logP(Y|X)也會達到最大值,因此在前面加上負號之后,最大化P(Y|X)就等價于最小化L了。
邏輯回歸的P(Y=y|x)表達式如下:
P(Y=y|x)=11+exp(?yf(x))P(Y=y|x)=11+exp(?yf(x))


將它帶入到上式,通過推導可以得到logistic的損失函數(shù)表達式,如下:

L(y,P(Y=y|x))=log(1+exp(?yf(x)))L(y,P(Y=y|x))=log?(1+exp(?yf(x)))

邏輯回歸最后得到的目標式子如下:

如果是二分類的話,則m值等于2,如果是多分類,m就是相應的類別總個數(shù)。這里需要解釋一下:之所以有人認為邏輯回歸是平方損失,是因為在使用梯度下降來求最優(yōu)解的時候,它的迭代式子與平方損失求導后的式子非常相似,從而給人一種直觀上的錯覺。

這里有個PDF可以參考一下:Lecture 6: logistic regression.pdf.

二、平方損失函數(shù)最小二乘法, Ordinary Least Squares )

最小二乘法是線性回歸的一種,OLS將問題轉化成了一個凸優(yōu)化問題。在線性回歸中,它假設樣本和噪聲都服從高斯分布(為什么假設成高斯分布呢?其實這里隱藏了一個小知識點,就是中心極限定理,可以參考【central limit theorem】),最后通過極大似然估計(MLE)可以推導出最小二乘式子。最小二乘的基本原則是:最優(yōu)擬合直線應該是使各點到回歸直線的距離和最小的直線,即平方和最小。換言之,OLS是基于距離的,而這個距離就是我們用的最多的歐幾里得距離。為什么它會選擇使用歐式距離作為誤差度量呢(即Mean squared error, MSE),主要有以下幾個原因:

簡單,計算方便;

歐氏距離是一種很好的相似性度量標準;

在不同的表示域變換后特征性質不變。

平方損失(Square loss)的標準形式如下:

(Y,f(X))=(Y?f(X))2L(Y,f(X))=(Y?f(X))2

當樣本個數(shù)為n時,此時的損失函數(shù)變?yōu)椋?br />
Y-f(X)表示的是殘差,整個式子表示的是殘差的平方和,而我們的目的就是最小化這個目標函數(shù)值(注:該式子未加入正則項),也就是最小化殘差的平方和(residual sum of squares,RSS)。

而在實際應用中,通常會使用均方差(MSE)作為一項衡量指標,公式如下:

MSE=1ni=1n(Yi~?Yi)2MSE=1n∑i=1n(Yi~?Yi)2

上面提到了線性回歸,這里額外補充一句,我們通常說的線性有兩種情況,一種是因變量y是自變量x的線性函數(shù),一種是因變量y是參數(shù)的線性函數(shù)。在機器學習中,通常指的都是后一種情況。

三、指數(shù)損失函數(shù)(Adaboost)

學過Adaboost算法的人都知道,它是前向分步加法算法的特例,是一個加和模型,損失函數(shù)就是指數(shù)函數(shù)。在Adaboost中,經(jīng)過m此迭代之后,可以得到:

Adaboost每次迭代時的目的是為了找到最小化下列式子時的參數(shù) 和G:

而指數(shù)損失函數(shù)(exp-loss)的標準形式如下

可以看出,Adaboost的目標式子就是指數(shù)損失,在給定n個樣本的情況下,Adaboost的損失函數(shù)為:

關于Adaboost的推導,可以參考Wikipedia:AdaBoost或者《統(tǒng)計學習方法》P145.

四、Hinge損失函數(shù)SVM

機器學習算法中,hinge損失函數(shù)SVM是息息相關的。在線性支持向量機中,最優(yōu)化問題可以等價于下列式子:

下面來對式子做個變形,令:

于是,原式就變成了:

如若取,式子就可以表示成:

可以看出,該式子與下式非常相似:

前半部分中的就是hinge損失函數(shù),而后面相當于L2正則項。

Hinge 損失函數(shù)的標準形式

可以看出,當|y|>=1時,L(y)=0。

更多內容,參考Hinge-loss。

補充一下:在libsvm中一共有4中核函數(shù)可以選擇,對應的是-t參數(shù)分別是:

0-線性核;

1-多項式核;

2-RBF核;

3-sigmoid核。

五、其它損失函數(shù)

除了以上這幾種損失函數(shù),常用的還有:

0-1損失函數(shù)

絕對值損失函數(shù)

下面來看看幾種損失函數(shù)的可視化圖像,對著圖看看橫坐標,看看縱坐標,再看看每條線都表示什么損失函數(shù),多看幾次好好消化消化。

OK,暫時先寫到這里,休息下。最后,需要記住的是:參數(shù)越多,模型越復雜,而越復雜的模型越容易過擬合過擬合就是說模型在訓練數(shù)據(jù)上的效果遠遠好于在測試集上的性能。此時可以考慮正則化,通過設置正則項前面的hyper parameter,來權衡損失函數(shù)和正則項,減小參數(shù)規(guī)模,達到模型簡化的目的,從而使模型具有更好的泛化能力。


數(shù)據(jù)分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數(shù)據(jù)分析師考試動態(tài)
數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調用 initGeetest 進行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調,回調的第一個參數(shù)驗證碼對象,之后可以使用它調用相應的接口 initGeetest({ // 以下 4 個配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺檢測極驗服務器是否宕機 new_captcha: data.new_captcha, // 用于宕機時表示是新驗證碼的宕機 product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說明請參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計時完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }