機(jī)器學(xué)習(xí)包括許多算法:線性回歸、邏輯回歸撒轮、決策樹乞旦、SVM、隨機(jī)森林题山、GBDT等等兰粉。那么該如何評價某個算法在數(shù)據(jù)集上的表現(xiàn)呢?這里闡述3個評估方法:交叉驗證顶瞳、留一交叉驗證玖姑、自助法愕秫。
當(dāng)數(shù)據(jù)集數(shù)量有限時,我們需要將一定數(shù)量的數(shù)據(jù)用于訓(xùn)練焰络,剩下的數(shù)據(jù)用于測試戴甩,也就是旁置法。當(dāng)然闪彼,也許不巧:用于訓(xùn)練(或測試)的數(shù)據(jù)不具代表性甜孤,那么需要將數(shù)據(jù)按照某種比例進(jìn)行劃分,也就是分層畏腕。
一個減少由于旁置法取樣而引起的任何偏差的更為通用的方法是缴川,重復(fù)整個過程,用不同的隨機(jī)樣本重復(fù)進(jìn)行多次訓(xùn)練和測試描馅,將每次不同迭代過程中所得的誤差率進(jìn)行平均得到一個綜合誤差率把夸,這就是重復(fù)旁置法的誤差率估計。
在重復(fù)旁置法中流昏,可能在整個過程中扎即,有些數(shù)據(jù)一直作為測試數(shù)據(jù)或者訓(xùn)練數(shù)據(jù),這樣不可避免的由于訓(xùn)練集和測試集數(shù)據(jù)代表性不一致產(chǎn)生了影響况凉。因此,進(jìn)行了一個簡單的變體方法各拷,引出了交叉驗證刁绒。
交叉驗證
在交叉驗證中,需要先固定一個折數(shù)烤黍,也就是劃分。假設(shè)折數(shù)為3速蕊,代表將數(shù)據(jù)集大致劃分為了3等分嫂丙,然后2/3數(shù)據(jù)用于訓(xùn)練,1/3數(shù)據(jù)用于測試规哲,這樣此過程循環(huán)3次跟啤,從而使得每一個實例都可以用來訓(xùn)練和測試。如果同時采用了分層技術(shù)唉锌,這就是分層3折交叉驗證隅肥。
設(shè)折數(shù)為n
,那么會重復(fù)n
次過程袄简,也會產(chǎn)生n
個測試結(jié)果腥放。將n
個測試結(jié)果作平均產(chǎn)生的結(jié)果就是該算法在數(shù)據(jù)集上的綜合誤差估計。
那么n
值如何確定呢绿语?書上說:經(jīng)過大量的實驗表明10折正是獲得最好的錯誤估計的恰當(dāng)選擇秃症,而且也有一些理論根據(jù)可以支持這一點候址。當(dāng)然,為了得到可靠的誤差估計种柑,單次的10折交叉驗證可能不夠岗仑,有一個標(biāo)準(zhǔn)的程序是重復(fù)10次交叉驗證——即10次10折交叉驗證,然后取平均值莹规。(_偶的天赔蒲,變成計算密集型的任務(wù)了,對于加快計算良漱,可以采用并發(fā)舞虱、GPU等方式進(jìn)行。)
留一交叉驗證
留一交叉驗證母市,名字和交叉驗證類似矾兜,事實也是這樣。留一交叉驗證患久,其折數(shù)就是樣本的個數(shù)椅寺,設(shè)樣本個數(shù)為m
,需要重復(fù)m
次蒋失,最后取平均值返帕。這樣的驗證方法與上面的交叉驗證方法比有優(yōu)點也有缺點。
優(yōu)點:
- 每次使用盡可能多的數(shù)據(jù)進(jìn)行訓(xùn)練(只有一個1實例用于測試)篙挽,從而能夠得到更準(zhǔn)確的分類器荆萤。
- 這個方法具有確定性,因為采樣是確定的铣卡,因而最后的誤差估計也是確定的链韭。所以沒有必要重復(fù)留一交叉驗證。
缺點:
- 計算成本較高煮落。需要
m
次訓(xùn)練和預(yù)測敞峭,對于大數(shù)據(jù)集來說,通常不可行(速度太慢了)蝉仇,反而可以在小數(shù)據(jù)集上得到盡可能正確的估計旋讹。 - 因為確定了采樣方式(每次除去1個),因此不能進(jìn)行分層(讓數(shù)據(jù)呈現(xiàn)一定的比例)量淌,所以對數(shù)據(jù)集的某算法誤差估計可能存在問題骗村。這里舉個例子:想象一個完全隨機(jī)的數(shù)據(jù)集,含有數(shù)量相等的兩個類呀枢,面對一個隨機(jī)數(shù)據(jù)胚股,所能給出的最好的預(yù)測方式是預(yù)測它屬于多數(shù)類,其真實誤差率為50%裙秋。但在留一法中琅拌,與測試數(shù)據(jù)相反的類才是多數(shù)類缨伊,因此每次預(yù)測都是錯的,也就是誤差率高達(dá)100%进宝。
自助法
上面方法在采樣時都是一旦從數(shù)據(jù)集中被取出放入訓(xùn)練集或測試集中刻坊,那么它就不能被放回。也就是說党晋,一個實例只能被選擇一次谭胚。而自助法不同,它是有放回的抽樣未玻,那么訓(xùn)練集中數(shù)據(jù)存在重復(fù)灾而。
我們來闡述一個特例:0.632自助法。假設(shè)數(shù)據(jù)集中n
個數(shù)據(jù)扳剿,那么每一個數(shù)據(jù)被取到的概率是1/n
旁趟,抽樣n
次,某個實例不被取到的概率是(1-1/n)^n≈0.368
.也就是說訓(xùn)練集中只有63.2%的數(shù)據(jù)庇绽。因此其訓(xùn)練數(shù)據(jù)比10折交叉驗證(90%的數(shù)據(jù))小锡搜,為了補(bǔ)償這點,將測試集誤差和用訓(xùn)練集數(shù)據(jù)計算的再帶入誤差率組合得到誤差估計值瞧掺。
這方法也存在誤差耕餐,同樣考慮一個完全隨機(jī)的數(shù)據(jù)集,含有數(shù)量相等的兩個類辟狈,面對一個隨機(jī)數(shù)據(jù)蛾方,所能給出的最好的預(yù)測方式是預(yù)測它屬于多數(shù)類,其真實誤差率為50%上陕。但是對于自助法而言,可能存在一個完美的算法拓春,能夠完全預(yù)測正確释簿,導(dǎo)致組合后的誤差估計會過于樂觀。
引用:
威騰, Witten L H, Frank E. 數(shù)據(jù)挖掘: 實用機(jī)器學(xué)習(xí)技術(shù)及 Java 實現(xiàn): 英文版[M]. 機(jī)械工業(yè)出版社, 2003.