經(jīng)驗(yàn)誤差與過(guò)擬合
在學(xué)習(xí)過(guò)程中惰爬,我們希望得到一個(gè)在新樣本上能表現(xiàn)得很好的學(xué)習(xí)器徙缴,為了達(dá)到這個(gè)目的伊约,應(yīng)該從訓(xùn)練樣本中盡可能的學(xué)出適用于所有潛在樣本的普遍規(guī)律,然而炸裆,當(dāng)學(xué)習(xí)器把訓(xùn)練樣本學(xué)的太好的時(shí)候垃它,很可能已經(jīng)把訓(xùn)練樣本自身的一些特點(diǎn)當(dāng)做了所有潛在樣本都會(huì)具有的一般性質(zhì),這樣就會(huì)導(dǎo)致泛化性能下降烹看。這種現(xiàn)象在機(jī)器學(xué)習(xí)中稱為過(guò)擬合(overfitting)国拇。與過(guò)擬合相對(duì)的是欠擬合(underfitting),這是指對(duì)訓(xùn)練樣本的一般性質(zhì)尚未學(xué)好惯殊。
欠擬合比較容易克服酱吝,過(guò)擬合才是機(jī)器學(xué)習(xí)面臨的關(guān)鍵障礙,必須認(rèn)識(shí)到過(guò)擬合是無(wú)法徹底避免的土思,我們能做的只是緩解务热。
評(píng)估方法
通常,我們可以通過(guò)實(shí)驗(yàn)測(cè)試來(lái)對(duì)學(xué)習(xí)器的泛化誤差進(jìn)行評(píng)估并進(jìn)而做出選擇己儒,為此崎岂,需使用一個(gè)測(cè)試集來(lái)測(cè)試學(xué)習(xí)器對(duì)新樣本的判別能力,然后以測(cè)試機(jī)上的測(cè)試誤差作為泛化誤差的近似闪湾。需注意的是冲甘,測(cè)試集應(yīng)盡可能與訓(xùn)練集互斥。
可是途样,我們只有一個(gè)包含m個(gè)樣例的數(shù)據(jù)集江醇,既要訓(xùn)練又要測(cè)試,怎么樣才能做到何暇?答案是通過(guò)對(duì)數(shù)據(jù)集進(jìn)行適當(dāng)?shù)奶幚硖找梗瑥闹挟a(chǎn)生出訓(xùn)練集S和測(cè)試集T,下面介紹幾種常見(jiàn)做法裆站。
留出法(hold-out)
直接將數(shù)據(jù)集劃分為兩個(gè)互斥的集合条辟,其中一個(gè)集合作為訓(xùn)練集S黔夭,另一個(gè)作為測(cè)試集T,需注意的是捂贿,訓(xùn)練/測(cè)試集的劃分要盡可能保持?jǐn)?shù)據(jù)分布的一致性纠修,例如在分類任務(wù)中至少要保持樣本的類別比例相似。如果從采樣的角度來(lái)看待數(shù)據(jù)集的劃分過(guò)程厂僧,則保留類別比例的采樣方式通常稱為分層采樣。
使用留出法時(shí)了牛,一般要采用若干次隨機(jī)劃分颜屠、重復(fù)進(jìn)行實(shí)驗(yàn)評(píng)估后取平均值作為留出法的評(píng)估結(jié)果。
留出法的常見(jiàn)做法是將大約2/3~4/5的樣本用于訓(xùn)練鹰祸,剩余樣本用于測(cè)試甫窟,一般而言,測(cè)試集至少應(yīng)含30個(gè)樣例蛙婴。
交叉驗(yàn)證法(cross validation)
先將數(shù)據(jù)集劃分為k個(gè)大小相似的互斥子集粗井,每個(gè)子集都盡可能保持?jǐn)?shù)據(jù)分布的一致性,即從數(shù)據(jù)集中通過(guò)分層采樣得到街图,然后浇衬,每次用k-1個(gè)子集的并集作為訓(xùn)練集,余下的那個(gè)子集作為測(cè)試集餐济,這樣就可獲得k組訓(xùn)練/測(cè)試集耘擂,從而可盡行k次訓(xùn)練和測(cè)試,最終返回的是這k個(gè)測(cè)試結(jié)果的均值絮姆。又稱為k折交叉驗(yàn)證醉冤,k的最常用取值是10。
假定數(shù)據(jù)集中包含m個(gè)樣本篙悯,若令k=m蚁阳,則得到了交叉驗(yàn)證法的一個(gè)特例,留一法(leave-one-out鸽照,簡(jiǎn)稱LOO)螺捐。顯然,留一法不受隨機(jī)樣本劃分方式的影響移宅,其評(píng)估結(jié)果往往被認(rèn)為比較準(zhǔn)確归粉,但在數(shù)據(jù)集比較大時(shí),計(jì)算開(kāi)銷則可能是難以忍受的漏峰。
自助法(bootstrapping)
給定包含m個(gè)樣本的數(shù)據(jù)集糠悼,我們對(duì)他進(jìn)行采樣產(chǎn)生數(shù)據(jù)集:每次隨機(jī)從中挑選一個(gè)樣本,將其拷貝放入浅乔,然后再將該樣本放回初始數(shù)據(jù)集中倔喂,是的該樣本在下次采樣時(shí)仍有可能被采到铝条,這個(gè)過(guò)程重復(fù)執(zhí)行m次后,就得到了包含m個(gè)樣本的額數(shù)據(jù)集席噩,二者差集作為測(cè)試集班缰。
自助法在數(shù)據(jù)集較小,難以有效劃分訓(xùn)練/測(cè)試集時(shí)很有用悼枢,然而自助法產(chǎn)生的數(shù)據(jù)集改變了初始數(shù)據(jù)集的分布埠忘,引入了估計(jì)偏差。因此馒索,在初始數(shù)據(jù)量足夠時(shí)莹妒,留出法和交叉驗(yàn)證法更常用一些。
調(diào)參與最終模型
學(xué)習(xí)算法的很多參數(shù)是在實(shí)數(shù)范圍內(nèi)取值绰上,因此對(duì)每種參數(shù)配置都訓(xùn)練出模型來(lái)是不可行的旨怠,現(xiàn)實(shí)中常用的做法是對(duì)每一個(gè)參數(shù)選定一個(gè)范圍和變化步長(zhǎng)。
學(xué)習(xí)算法和參數(shù)配置若已選定蜈块,此時(shí)應(yīng)用數(shù)據(jù)集重新訓(xùn)練模型鉴腻,這個(gè)模型在訓(xùn)練過(guò)程中使用了所有m個(gè)樣本,這才是我們最終提交給用戶的模型百揭。