將資料集分解為訓練集,可以幫助我們了解模型,這對於模型如何推廣到新的看不見資料非常重要。如果模型過度擬合可能無法很好地概括新的看不見的數據。因此也無法做出良好的預測。
擁有適當的驗證策略是成功創建良好預測,使用AI模型的業務價值的第一步,本文就整理出一些常見的資料拆分策略。
將資料集分為訓練和驗證2個部分,並以80%的訓練和20%的驗證。可以使用Scikit的隨機取樣來執行此操作。
首先需要固定隨機種子,否則無法比較獲得相同的資料拆分,在除錯時無法獲得結果的複現。如果資料集很小,則不能保證驗證拆分可以與訓練拆分不相關。如果資料不平衡,也無法獲得相同的拆分比例。
所以簡單的拆分只能幫助我們開發和調試,真正的訓練還不夠完善,所以下面這些拆分方法可以幫助u我們結束這些問題。
將資料集分割為k個分割區。在下面的圖像中,資料集分為5個分區。
選擇一個分區作為驗證資料集,而其他分區則是訓練資料集。這樣將在每組不同的分區上訓練模型。
最後,將最終獲得K個不同的模型,後面推理預測時使用整合的方法將這些模型一同使用。
K通常設定為[3,5,7,10,20]
如果要檢查模型效能低偏差,則使用較高的K [20]。如果要建立用於變數選擇的模型,則使用低k [3,5],模型將具有較低的變異數。
優點:
問題:
可以保留每折中不同類別之間的比率。如果資料集不平衡,例如Class1有10個範例,且Class2有100個範例。 Stratified-kFold創建的每個折中分類的比率都與原始資料集相同
這個想法類似於K折的交叉驗證,但是每個折疊的比率與原始資料集相同。
每個分折都可以保留類別之間的初始比率。如果您的資料集很大,K折的交叉驗證也可能會保留比例,但是這個是隨機的,而Stratified-kFold是確定的,並且可以用於小資料集。
Bootstrap和Subsampling類似於K-Fold交叉驗證,但它們沒有固定的折。它從數據集中隨機選取一些數據,並使用其他數據作為驗證並重複n次
Bootstrap=交替抽樣,這個我們在以前的文章中有詳細的介紹。
什麼時候使用他呢? bootstrap和Subsamlping只能在評估度量誤差的標準誤差較大的情況下使用。這可能是由於資料集中的異常值造成的。
通常在機器學習中,使用k折交叉驗證作為開始,如果資料集不平衡則使用Stratified-kFold,如果異常值較多可以使用Bootstrap或其他方法進行數據分折改進。
以上是如何正確拆分資料集?常見的三種方法總結的詳細內容。更多資訊請關注PHP中文網其他相關文章!