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