机器学习中数据集的拆分
轉(zhuǎn)自:https://feisky.xyz/machine-learning/basic/datasets.html
通常將數(shù)據(jù)集分為三類,分為倆類的是留出法。
在機器學(xué)習(xí)中,通常將所有的數(shù)據(jù)劃分為三份:訓(xùn)練數(shù)據(jù)集、驗證數(shù)據(jù)集和測試數(shù)據(jù)集。它們的功能分別為
- 訓(xùn)練數(shù)據(jù)集(train dataset):用來構(gòu)建機器學(xué)習(xí)模型
- 驗證數(shù)據(jù)集(validation dataset):輔助構(gòu)建模型,用于在構(gòu)建過程中評估模型,為模型提供無偏估計,進而調(diào)整模型超參數(shù)
- 測試數(shù)據(jù)集(test dataset):用來評估訓(xùn)練好的最終模型的性能
不斷使用測試集和驗證集會使其逐漸失去效果。也就是說使用相同數(shù)據(jù)來決定超參數(shù)設(shè)置或其他模型改進的次數(shù)越多,對于這些結(jié)果能夠真正泛化到未見過的新數(shù)據(jù)的信心就越低。請注意,驗證集的失效速度通常比測試集緩慢。如果可能的話,建議收集更多數(shù)據(jù)來“刷新”測試集和驗證集。重新開始是一種很好的重置方式。
為了劃分這幾種數(shù)據(jù)集,可以選擇采用留出法、K-折交叉驗證法或者自助法等多種方法。這些方法都對數(shù)據(jù)集有一些基本的假設(shè),包括
- 數(shù)據(jù)集是隨機抽取且獨立同分布的
- 分布是平穩(wěn)的,不會隨時間發(fā)生變化
- 始終從同一個分布中抽取樣本
陷阱:請勿對測試數(shù)據(jù)集進行訓(xùn)練。
留出法
留出法(hold-out)直接將數(shù)據(jù)集劃分為互斥的集合,如通常選擇 70% 數(shù)據(jù)作為訓(xùn)練集,30% 作為測試集。
需要注意的是保持劃分后集合數(shù)據(jù)分布的一致性,避免劃分過程中引入額外的偏差而對最終結(jié)果產(chǎn)生影響。通常來說,單次使用留出法得到的結(jié)果往往不夠穩(wěn)定可靠,一般采用若干次隨機劃分、重復(fù)進行實驗評估后取平均值作為留出法的評估結(jié)果。
K-折交叉驗證法
Kuhn 和 Johnson 在「Data Splitting Recommendations」中指出使用單獨的「測試集」(或驗證集)具有一定的局限性,包括
- 測試集是對模型的單次評估,無法完全展現(xiàn)評估結(jié)果的不確定性。
- 將大的測試集劃分成測試集和驗證集會增加模型性能評估的偏差。
- 分割的測試集樣本規(guī)模太小。
- 模型可能需要每一個可能存在的數(shù)據(jù)點來確定模型值。
- 不同測試集生成的結(jié)果不同,這造成測試集具備極大的不確定性。
- 重采樣方法可對模型在未來樣本上的性能進行更合理的預(yù)測。
所以在實際應(yīng)用中,可以選擇 K-折交叉驗證(k-fold cross-validation)的方式來評估模型,其偏差低、性能評估變化小。
K-折交叉驗證法將數(shù)據(jù)集劃分為?k?個大小相似的互斥子集,并且盡量保證每個子集數(shù)據(jù)分布的一致性。這樣,就可以獲取?k?組訓(xùn)練 - 測試集,從而進行?k?次訓(xùn)練和測試。
k?通常取值 10,此時稱為 10 折交叉驗證。其他常用的?k?值還有 5、20 等。
自助法
自助法(bootstrap method)以自助采樣法為基礎(chǔ):每次隨機的從初始數(shù)據(jù) $D$ 中選擇一個樣本拷貝到結(jié)果數(shù)據(jù)集 $D'$ 中,樣本再放回初始數(shù)據(jù) $D$ 中;這樣重復(fù) $m$ 次,就得到了含有 $m$ 個樣本的數(shù)據(jù)集 $D'$。這樣就可以把 $D'$ 作為訓(xùn)練集,而?D\D'?作為測試集。這樣,樣本在?m?次采樣中始終不被采集到的概率為
\lim_{m\to\infty} (1-\frac{1}{m})^{m} = 1/e = 0.368lim?m→∞??(1??m??1??)?m??=1/e=0.368
自助法的性能評估變化小,在數(shù)據(jù)集小、難以有效劃分?jǐn)?shù)據(jù)集時很有用。另外,自助法也可以從初始數(shù)據(jù)中產(chǎn)生多個不同的訓(xùn)練集,對集成學(xué)習(xí)等方法有好處。
然而,自助法產(chǎn)生的數(shù)據(jù)集改變了初始數(shù)據(jù)的分布,會引入估計偏差。因而,數(shù)據(jù)量足夠時,建議使用留出法和交叉驗證法。
?
總結(jié)
以上是生活随笔為你收集整理的机器学习中数据集的拆分的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。