機(jī)器學(xué)習(xí)中必學(xué)的四種交叉驗(yàn)證技術(shù)
?介紹
考慮在數(shù)據(jù)集上創(chuàng)建模型,但它在看不見的數(shù)據(jù)上失敗。
我們不能簡(jiǎn)單地將模型擬合到我們的訓(xùn)練數(shù)據(jù)中,然后坐等它在真實(shí)的、看不見的數(shù)據(jù)上完美運(yùn)行。
這是一個(gè)過度擬合的例子,我們的模型已經(jīng)提取了訓(xùn)練數(shù)據(jù)中的所有模式和噪聲。為了防止這種情況發(fā)生,我們需要一種方法來(lái)確保我們的模型已經(jīng)捕獲了大多數(shù)模式并且不會(huì)拾取數(shù)據(jù)中的每一點(diǎn)噪聲(低偏差和低方差)。處理此問題的眾多技術(shù)之一是交叉驗(yàn)證。
了解交叉驗(yàn)證
假設(shè)在一個(gè)特定的數(shù)據(jù)集中,我們有 1000 條記錄,我們train_test_split()在上面執(zhí)行。假設(shè)我們有 70% 的訓(xùn)練數(shù)據(jù)和 30% 的測(cè)試數(shù)據(jù)random_state = 0,這些參數(shù)導(dǎo)致 85% 的準(zhǔn)確度。現(xiàn)在,如果我們?cè)O(shè)置random_state = 50假設(shè)準(zhǔn)確度提高到 87%。
這意味著如果我們繼續(xù)選擇不同random_state的精度值,就會(huì)發(fā)生波動(dòng)。為了防止這種情況,一種稱為交叉驗(yàn)證的技術(shù)開始發(fā)揮作用。
交叉驗(yàn)證的類型
留一交叉驗(yàn)證 (LOOCV)
在LOOCV中,我們選擇 1 個(gè)數(shù)據(jù)點(diǎn)作為測(cè)試,剩下的所有數(shù)據(jù)都將是第一次迭代中的訓(xùn)練數(shù)據(jù)。在下一次迭代中,我們將選擇下一個(gè)數(shù)據(jù)點(diǎn)作為測(cè)試,其余的作為訓(xùn)練數(shù)據(jù)。我們將對(duì)整個(gè)數(shù)據(jù)集重復(fù)此操作,以便在最終迭代中選擇最后一個(gè)數(shù)據(jù)點(diǎn)作為測(cè)試。
通常,要計(jì)算迭代交叉驗(yàn)證過程的交叉驗(yàn)證 R2,您需要計(jì)算每次迭代的 R2 分?jǐn)?shù)并取它們的平均值。
盡管它會(huì)導(dǎo)致對(duì)模型性能的可靠且無(wú)偏的估計(jì),但它的執(zhí)行計(jì)算成本很高。
2. K-fold 交叉驗(yàn)證
在K-fold CV中,我們將數(shù)據(jù)集拆分為 k 個(gè)子集(稱為折疊),然后我們對(duì)所有子集進(jìn)行訓(xùn)練,但留下一個(gè) (k-1) 個(gè)子集用于評(píng)估訓(xùn)練后的模型。
假設(shè)我們有 1000 條記錄并且我們的 K=5。這個(gè) K 值意味著我們有 5 次迭代。對(duì)于測(cè)試數(shù)據(jù)要考慮的第一次迭代的數(shù)據(jù)點(diǎn)數(shù)從一開始就是 1000/5=200。然后對(duì)于下一次迭代,隨后的 200 個(gè)數(shù)據(jù)點(diǎn)將被視為測(cè)試,依此類推。
為了計(jì)算整體準(zhǔn)確度,我們計(jì)算每次迭代的準(zhǔn)確度,然后取其平均值。
我們可以從這個(gè)過程中獲得的最小準(zhǔn)確度將是所有迭代中產(chǎn)生的最低準(zhǔn)確度,同樣,最大準(zhǔn)確度將是所有迭代中產(chǎn)生的最高準(zhǔn)確度。
3.分層交叉驗(yàn)證
分層 CV是常規(guī) k 折交叉驗(yàn)證的擴(kuò)展,但專門針對(duì)分類問題,其中的分割不是完全隨機(jī)的,目標(biāo)類之間的比率在每個(gè)折中與在完整數(shù)據(jù)集中的比率相同。
假設(shè)我們有 1000 條記錄,其中包含 600 條是和 400 條否。因此,在每個(gè)實(shí)驗(yàn)中,它都會(huì)確保填充到訓(xùn)練和測(cè)試中的隨機(jī)樣本的方式是,每個(gè)類的至少一些實(shí)例將是存在于訓(xùn)練和測(cè)試分裂中。
4.時(shí)間序列交叉驗(yàn)證?
在時(shí)間序列 CV中有一系列測(cè)試集,每個(gè)測(cè)試集都包含一個(gè)觀察值。相應(yīng)的訓(xùn)練集僅包含在形成測(cè)試集的觀察之前發(fā)生的觀察。因此,未來(lái)的觀察不能用于構(gòu)建預(yù)測(cè)。
預(yù)測(cè)精度是通過對(duì)測(cè)試集進(jìn)行平均來(lái)計(jì)算的。此過程有時(shí)被稱為“對(duì)滾動(dòng)預(yù)測(cè)原點(diǎn)的評(píng)估”,因?yàn)轭A(yù)測(cè)所基于的“原點(diǎn)”會(huì)及時(shí)前滾。
結(jié)論
在機(jī)器學(xué)習(xí)中,我們通常不想要在訓(xùn)練集上表現(xiàn)最好的算法或模型。相反,我們需要一個(gè)在測(cè)試集上表現(xiàn)出色的模型,以及一個(gè)在給定新輸入數(shù)據(jù)時(shí)始終表現(xiàn)良好的模型。交叉驗(yàn)證是確保我們能夠識(shí)別此類算法或模型的關(guān)鍵步驟。