本文主要解釋許多交叉驗(yàn)證技術(shù)中的一些技術(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ā)生,我們需要一種方法來確保我們的模型已經(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)確度?,F(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)證的類型 1. 留一交叉驗(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ì)模型性能的可靠且無偏的估計(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ā)生的觀察。因此,未來的觀察不能用于構(gòu)建預(yù)測(cè)。 預(yù)測(cè)精度是通過對(duì)測(cè)試集進(jìn)行平均來計(jì)算的。此過程有時(shí)被稱為“對(duì)滾動(dòng)預(yù)測(cè)原點(diǎn)的評(píng)估”,因?yàn)轭A(yù)測(cè)所基于的“原點(diǎn)”會(huì)及時(shí)前滾。 使用 Scikit-learn 的實(shí)際實(shí)現(xiàn)的代碼請(qǐng)關(guān)注我們或聯(lián)系作者獲取。 結(jié)論 |
|