如何正確拆分?jǐn)?shù)據(jù)集?常見的三種方法總結(jié)
將數(shù)據(jù)集分解為訓(xùn)練集,可以幫助我們了解模型,這對于模型如何推廣到新的看不見數(shù)據(jù)非常重要。 如果模型過度擬合可能無法很好地概括新的看不見的數(shù)據(jù)。因此也無法做出良好的預(yù)測。
擁有適當(dāng)?shù)尿?yàn)證策略是成功創(chuàng)建良好預(yù)測,使用AI模型的業(yè)務(wù)價(jià)值的第一步,本文中就整理出一些常見的數(shù)據(jù)拆分策略。
簡單的訓(xùn)練、測試拆分
將數(shù)據(jù)集分為訓(xùn)練和驗(yàn)證2個(gè)部分,并以80%的訓(xùn)練和20%的驗(yàn)證。 可以使用Scikit的隨機(jī)采樣來執(zhí)行此操作。
首先需要固定隨機(jī)種子,否則無法比較獲得相同的數(shù)據(jù)拆分,在調(diào)試時(shí)無法獲得結(jié)果的復(fù)現(xiàn)。 如果數(shù)據(jù)集很小,則不能保證驗(yàn)證拆分可以與訓(xùn)練拆分不相關(guān)。如果數(shù)據(jù)不平衡,也無法獲得相同的拆分比例。
所以簡單的拆分只能幫助我們開發(fā)和調(diào)試,真正的訓(xùn)練還不夠完善,所以下面這些拆分方法可以幫助u我們結(jié)束這些問題。
K折交叉驗(yàn)證
將數(shù)據(jù)集拆分為k個(gè)分區(qū)。 在下面的圖像中,數(shù)據(jù)集分為5個(gè)分區(qū)。
選擇一個(gè)分區(qū)作為驗(yàn)證數(shù)據(jù)集,而其他分區(qū)則是訓(xùn)練數(shù)據(jù)集。這樣將在每組不同的分區(qū)上訓(xùn)練模型。
最后,將最終獲得K個(gè)不同的模型,后面推理預(yù)測時(shí)使用集成的方法將這些模型一同使用。
K通常設(shè)置為[3,5,7,10,20]
如果要檢查模型性能低偏差,則使用較高的K [20]。如果要構(gòu)建用于變量選擇的模型,則使用低k [3,5],模型將具有較低的方差。
優(yōu)點(diǎn):
- 通過平均模型預(yù)測,可以提高從相同分布中提取的未見數(shù)據(jù)的模型性能。
- 這是一種廣泛使用的來獲取良好的生產(chǎn)模型的方法。
- 可以使用不同的集成技術(shù)可以為數(shù)據(jù)集中的每個(gè)數(shù)據(jù)創(chuàng)建預(yù)測,并且利用這些預(yù)測進(jìn)行模型的改善,這被稱為OOF(out- fold prediction)。
問題:
- 如果有不平衡的數(shù)據(jù)集,請使用Stratified-kFold。
- 如果在所有數(shù)據(jù)集上重新訓(xùn)練一個(gè)模型,那么就不能將其性能與使用k-Fold進(jìn)行訓(xùn)練的任何模型進(jìn)行比較。因?yàn)檫@個(gè)的模型是在k-1上訓(xùn)練的,不是對整個(gè)數(shù)據(jù)集。
Stratified-kFold
可以保留每折中不同類之間的比率。如果數(shù)據(jù)集不平衡,例如Class1有10個(gè)示例,并且Class2有100個(gè)示例。 Stratified-kFold創(chuàng)建的每個(gè)折中分類的比率都與原始數(shù)據(jù)集相同
這個(gè)想法類似于K折的交叉驗(yàn)證,但是每個(gè)折疊的比率與原始數(shù)據(jù)集相同。
每種分折中都可以保留類之間的初始比率。如果您的數(shù)據(jù)集很大,K折的交叉驗(yàn)證也可能會(huì)保留比例,但是這個(gè)是隨機(jī)的,而Stratified-kFold是確定的,并且可以用于小數(shù)據(jù)集。
Bootstrap和Subsampling
Bootstrap和Subsampling類似于K-Fold交叉驗(yàn)證,但它們沒有固定的折。它從數(shù)據(jù)集中隨機(jī)選取一些數(shù)據(jù),并使用其他數(shù)據(jù)作為驗(yàn)證并重復(fù)n次
Bootstrap=交替抽樣,這個(gè)我們在以前的文章中有詳細(xì)的介紹。
什么時(shí)候使用他呢?bootstrap和Subsamlping只能在評估度量誤差的標(biāo)準(zhǔn)誤差較大的情況下使用。這可能是由于數(shù)據(jù)集中的異常值造成的。
總結(jié)
通常在機(jī)器學(xué)習(xí)中,使用k折交叉驗(yàn)證作為開始,如果數(shù)據(jù)集不平衡則使用Stratified-kFold,如果異常值較多可以使用Bootstrap或者其他方法進(jìn)行數(shù)據(jù)分折改進(jìn)。