首頁  >  文章  >  科技週邊  >  如何正確拆分資料集?常見的三種方法總結

如何正確拆分資料集?常見的三種方法總結

WBOY
WBOY轉載
2023-04-08 18:51:071486瀏覽

將資料集分解為訓練集,可以幫助我們了解模型,這對於模型如何推廣到新的看不見資料非常重要。如果模型過度擬合可能無法很好地概括新的看不見的數據。因此也無法做出良好的預測。

擁有適當的驗證策略是成功創建良好預測,使用AI模型的業務價值的第一步,本文就整理出一些常見的資料拆分策略。

簡單的訓練、測試分割

將資料集分為訓練和驗證2個部分,並以80%的訓練和20%的驗證。可以使用Scikit的隨機取樣來執行此操作。

如何正確拆分資料集?常見的三種方法總結

首先需要固定隨機種子,否則無法比較獲得相同的資料拆分,在除錯時無法獲得結果的複現。如果資料集很小,則不能保證驗證拆分可以與訓練拆分不相關。如果資料不平衡,也無法獲得相同的拆分比例。

所以簡單的拆分只能幫助我們開發和調試,真正的訓練還不夠完善,所以下面這些拆分方法可以幫助u我們結束這些問題。

K折交叉驗證

將資料集分割為k個分割區。在下面的圖像中,資料集分為5個分區。

如何正確拆分資料集?常見的三種方法總結

選擇一個分區作為驗證資料集,而其他分區則是訓練資料集。這樣將在每組不同的分區上訓練模型。

最後,將最終獲得K個不同的模型,後面推理預測時使用整合的方法將這些模型一同使用。

K通常設定為[3,5,7,10,20]

如果要檢查模型效能低偏差,則使用較高的K [20]。如果要建立用於變數選擇的模型,則使用低k [3,5],模型將具有較低的變異數。

優點:

  • 透過平均模型預測,可以提高從相同分佈中提取的未見資料的模型效能。
  • 這是一種廣泛使用的來獲取良好的生產模型的方法。
  • 可以使用不同的整合技術可以為資料集中的每個資料創建預測,並且利用這些預測進行模型的改善,這稱為OOF(out- fold prediction)。

問題:

  • 如果有不平衡的資料集,請使用Stratified-kFold。
  • 如果在所有資料集上重新訓練一個模型,那麼就不能將其效能與使用k-Fold進行訓練的任何模型進行比較。因為這個的模型是在k-1上訓練的,不是對整個資料集。

Stratified-kFold

可以保留每折中不同類別之間的比率。如果資料集不平衡,例如Class1有10個範例,且Class2有100個範例。 Stratified-kFold創建的每個折中分類的比率都與原始資料集相同

這個想法類似於K折的交叉驗證,但是每個折疊的比率與原始資料集相同。

如何正確拆分資料集?常見的三種方法總結

每個分折都可以保留類別之間的初始比率。如果您的資料集很大,K折的交叉驗證也可能會保留比例,但是這個是隨機的,而Stratified-kFold是確定的,並且可以用於小資料集。

Bootstrap和Subsampling

Bootstrap和Subsampling類似於K-Fold交叉驗證,但它們沒有固定的折。它從數據集中隨機選取一些數據,並使用其他數據作為驗證並重複n次

Bootstrap=交替抽樣,這個我們在以前的文章中有詳細的介紹。

什麼時候使用他呢? bootstrap和Subsamlping只能在評估度量誤差的標準誤差較大的情況下使用。這可能是由於資料集中的異常值造成的。

總結

通常在機器學習中,使用k折交叉驗證作為開始,如果資料集不平衡則使用Stratified-kFold,如果異常值較多可以使用Bootstrap或其他方法進行數據分折改進。

以上是如何正確拆分資料集?常見的三種方法總結的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:51cto.com。如有侵權,請聯絡admin@php.cn刪除