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

熱線電話:13121318867

登錄
首頁精彩閱讀從曲線擬合問題窺視機(jī)器學(xué)習(xí)中的相關(guān)概念
從曲線擬合問題窺視機(jī)器學(xué)習(xí)中的相關(guān)概念
2017-03-20
收藏

從曲線擬合問題窺視機(jī)器學(xué)習(xí)中的相關(guān)概念

一直徘徊在機(jī)器學(xué)習(xí)的邊緣未敢輕易造次并畏懼其基本原理思想,從每一本厚厚的參考資料中都可以看出機(jī)器學(xué)習(xí)是一門跨越概率論、決策論、信息論以及最優(yōu)化的學(xué)科的綜合學(xué)科,今天終于鼓足勇氣向其挑戰(zhàn),選擇該領(lǐng)域經(jīng)典書籍PRML研讀,希望能有點(diǎn)收獲。后面的一系列的文章都是從一個初學(xué)者的角度來學(xué)習(xí)機(jī)器學(xué)習(xí)領(lǐng)域的知識。

1.   曲線擬合問題

定義:給定一系列輸入xi以及目標(biāo)值ti,目標(biāo)是找到一個關(guān)于x的函數(shù)f(x)能夠比較好的擬合給定的輸入,并且能夠?qū)π陆o出的x值預(yù)測其輸出。

問題本身就是一個學(xué)習(xí)問題,那什么是機(jī)器學(xué)習(xí)呢?通過有限的輸入數(shù)據(jù)以及對應(yīng)的目標(biāo)值(也稱訓(xùn)練數(shù)據(jù))學(xué)習(xí)到一個模型或者推斷函數(shù),并且利用這個模型或者推斷函數(shù)對新數(shù)據(jù)進(jìn)行預(yù)測。這里的機(jī)器學(xué)習(xí)一般是指統(tǒng)計機(jī)器學(xué)習(xí),即基于數(shù)據(jù)和統(tǒng)計方法。統(tǒng)計學(xué)習(xí)方法是基于數(shù)據(jù)構(gòu)建統(tǒng)計模型從而對數(shù)據(jù)進(jìn)行預(yù)測與分析,可以分為:監(jiān)督學(xué)習(xí)和非監(jiān)督學(xué)習(xí)。

a)監(jiān)督學(xué)習(xí):訓(xùn)練數(shù)據(jù)包括給定的輸入及其相應(yīng)的輸出,可以根據(jù)輸入和輸出的類型分為分類問題、標(biāo)注問題和回歸問題。

1) 分類問題: 輸出變量為有限個離散變量的預(yù)測問題,可以根據(jù)離散變量k的個數(shù)分為二分類問題(k=2)和多分類問題(k>2),常用方法包括k近鄰法、感知機(jī)、樸素貝葉斯決策樹

2) 回歸問題:輸入變量和輸出變量均為連續(xù)變量的預(yù)測問題,可以根據(jù)參數(shù)的系數(shù)k分為線性回歸(k=1)和非線性回歸(k>1)。

3) 標(biāo)注問題:輸入變量和輸出變量均為變量序列的預(yù)測問題,常用方法包括隱馬爾科夫模型(HMM)、條件隨機(jī)場(CRF)

b)非監(jiān)督學(xué)習(xí):訓(xùn)練數(shù)據(jù)僅包括輸入沒有指定相應(yīng)的輸出。

1)聚類:在雜亂的數(shù)據(jù)中發(fā)現(xiàn)相似的簇或者數(shù)據(jù)集合

2)密度估計:發(fā)現(xiàn)輸入數(shù)據(jù)的概率密度函數(shù)

3)可視化:通過降維實現(xiàn)數(shù)據(jù)可視化

2.   曲線擬合數(shù)據(jù)源

在實驗中訓(xùn)練數(shù)據(jù)的來源是人工生成的,即根據(jù)某個函數(shù)按照一定的分布隨機(jī)抽取N個數(shù)據(jù)以及對應(yīng)的函數(shù)值作為訓(xùn)練數(shù)據(jù)。然后一般真實數(shù)據(jù)由于種種原因均會產(chǎn)生一定的誤差,不會與一個分布完全吻合,所以目標(biāo)值一般加上一個隨機(jī)誤差(誤差分布滿足高斯分布)。

本例中選取f(x)=sin(2πx),按照均勻分布隨機(jī)選取N個數(shù)據(jù)。

其中綠色曲線為sin(2πx),藍(lán)色圓圈為加上隨機(jī)誤差后的結(jié)果。

3.   多項式擬合

首先選擇一個比較簡單的模型進(jìn)行學(xué)習(xí)和預(yù)測,即多項式曲線,

y(x,w)=w0+w1x+w2x2+...+wmxM

其中w為自變量x的系數(shù),M為自變量x的項數(shù),也是整個多項式最大的項。學(xué)習(xí)的目標(biāo)是找到合適的w和M,使其能夠更好的擬合訓(xùn)練數(shù)據(jù)。由于不同的w和M值對應(yīng)不同的曲線,即不同的模型或者推斷函數(shù),如何去衡量生成的模型好壞呢?

誤差函數(shù)(error function):用于衡量不同模型的優(yōu)劣,即度量預(yù)測錯誤的程度,也稱之為損失函數(shù)或者代價函數(shù),一般有以下幾種:

a)0-1損失函數(shù)

L(y,f(x))=1,y != f(x);0,y=f(x)

b)平方損失函數(shù)

L(y,f(x))=(y-f(x))2

c)絕對損失函數(shù)

L(y,f(x))=|y-f(x)|

d)對數(shù)損失函數(shù)

L(y,f(x))=-log(p(y|x))

模型選擇:選擇使得誤差函數(shù)最小的參數(shù)。

在本例中選擇平方和作為誤差函數(shù),即。

由于本例選擇的誤差函數(shù)為w單調(diào)的函數(shù),肯定存在最優(yōu)解w*使得E(w)最小。

下圖為M為0、1、3、9時求到的最優(yōu)w*,紅色曲線為求到的多項式曲線。

從上圖可以看出,當(dāng)M為0時曲線的擬合程度最差,M為9時擬合程度最好,即完全擬合使得E(w)為0,這種情況稱之為過擬合。

由于機(jī)器學(xué)習(xí)的目的是對新給定的數(shù)據(jù)進(jìn)行預(yù)測,即不僅僅是完全擬合訓(xùn)練數(shù)據(jù),也要對新數(shù)據(jù)給出一個很好的預(yù)測。學(xué)習(xí)的泛化能力(generalization ability):是指某方法學(xué)習(xí)到的模型對為知數(shù)據(jù)預(yù)測的能力,是學(xué)習(xí)方法本質(zhì)上的重要性質(zhì)。如果一味的追求對訓(xùn)練數(shù)據(jù)的預(yù)測能力,學(xué)習(xí)到的模型往往會比真實模型復(fù)雜度高,即出現(xiàn)過擬合

一般通過測試誤差來評價學(xué)習(xí)方法的泛化能力,這里使用殘留均方差進(jìn)行評價(root mean-square):,下圖展示了M為0-9時,最優(yōu)模型在訓(xùn)練數(shù)據(jù)和測試數(shù)據(jù)上的測試誤差,可以看出當(dāng)M=9時,對訓(xùn)練數(shù)據(jù)的誤差為0,而對測試數(shù)據(jù)的誤差飆升到最大。分析其本質(zhì)原因是當(dāng)M為9時,模型為了更好的擬合數(shù)據(jù)w取值的波動性非常大。

4.   最優(yōu)模型選擇

產(chǎn)生多擬合問題的主要原因是訓(xùn)練數(shù)據(jù)太少導(dǎo)致的,或者說模型復(fù)雜度過高導(dǎo)致的。對于復(fù)雜模型而言,會隨著訓(xùn)練數(shù)據(jù)的增加,減小過擬合問題,下圖是增加訓(xùn)練數(shù)據(jù)時M=9的擬合效果。

在實際應(yīng)用中,一個啟發(fā)式的經(jīng)驗是一個模型要到達(dá)一定得泛化能力,其訓(xùn)練數(shù)據(jù)至少為參數(shù)個數(shù)的5-10倍,當(dāng)然還會有其他方法避免過擬合問題。

最優(yōu)模型選擇有兩種常用的方法:正則化(regularization)和交叉驗證(cross validation)

a)         正則化:一般是在誤差函數(shù)的基礎(chǔ)上加上一個正則化項或者罰項,一般是模型復(fù)雜度的單獨(dú)遞增函數(shù),模型越復(fù)雜,罰值越大。

這里正則項選擇為:,||w||2為向量w的平方和。

下圖展示的是對于不同λ值對應(yīng)的測試誤差

b)         交叉驗證:即將數(shù)據(jù)進(jìn)行分割分為訓(xùn)練數(shù)據(jù)和測試數(shù)據(jù),通過訓(xùn)練數(shù)據(jù)進(jìn)行模型學(xué)習(xí),測試數(shù)據(jù)進(jìn)行模型的選擇。

1)         簡單交叉驗證:例如選擇80%的數(shù)據(jù)位訓(xùn)練數(shù)據(jù),20%作為測試數(shù)據(jù)。

2)         S折交叉驗證:將數(shù)據(jù)分為S份,每次選擇S-1份進(jìn)行訓(xùn)練,1份用于測試,可以重復(fù)S次。

3)         留一交叉驗證:留一條數(shù)據(jù)數(shù)據(jù)作為測試,比較極端的情況。

對于本例來說λ的選擇就可以采用交叉驗證的方法進(jìn)行選擇。

5.   總結(jié)

通過對曲線擬合問題的定義和簡單求解,介紹了機(jī)器學(xué)習(xí)中的概念,當(dāng)然還有大量概念未涉及到,后續(xù)還會繼續(xù)補(bǔ)充。

對于曲線擬合問題,通過多項式擬合只是最簡單的一個方法,后續(xù)還會介紹更優(yōu)美的解決方案。

這里總結(jié)一下一個機(jī)器學(xué)習(xí)任務(wù)的基本步驟:

1)         獲取一個有限的訓(xùn)練數(shù)據(jù)集合

2)         對數(shù)據(jù)進(jìn)行特征抽取

3)         如果有需要,對特征進(jìn)行降維

4)         確定學(xué)習(xí)模型的集合

5)         確定模型選擇的準(zhǔn)則,確定誤差函數(shù)

6)         上線求解最優(yōu)模型的算法,即模型的求解

7)         通過學(xué)習(xí)方法選擇最優(yōu)模型

8)         利用學(xué)習(xí)到的最優(yōu)模型對新數(shù)據(jù)進(jìn)行預(yù)測或者分析


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

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

數(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(), // 加隨機(jī)數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進(jìn)行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個參數(shù)驗證碼對象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺檢測極驗服務(wù)器是否宕機(jī) new_captcha: data.new_captcha, // 用于宕機(jī)時表示是新驗證碼的宕機(jī) 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); }