標籤:

機器學習篇-數據劃分

在機器學習中,通常將所有數據劃分為三份,分別為:

訓練數據集:用於構建機器學習模型

驗證數據集:輔助構建模型,用於在構建過程中評估模型,為模型提供無偏估計,進而調整模型超參數

測試數據集:用來評估訓練好的最終模型的性能(測試集是始終不參與訓練的)

為了劃分數據集,可以選擇採用:留出法,K-折交叉驗證法,自助法,滑窗法等

留出法:

直接將數據劃分為互斥的集合,如通常選擇70%數據作為訓練集,30%數據作為測試集

需要注意的是保持劃分後集合數據分布的一致性,避免劃分過程中引入額外的偏差而對最終結果產生影響,通常來說,單次使用留出法得到的結果往往不夠穩定可靠,一般採用若干次隨機換分,重複進行實驗評估後取平均值作為留出法的評估結果

圖1

圖2

圖3

根據上圖展示的情況可以看出,我們使用留出法進行數據劃分的時候,最好採用分層抽樣的方式,這樣才能保證數據分布的一致性

K-折交叉驗證法:

使用單獨的測試集或者驗證集具有一定的局限性:

  1. 測試集是對模型的單次評估,無法完全展現評估結果的不確定性。
  2. 將大的測試集劃分成測試集和驗證集會增加模型性能評估的偏差。
  3. 分割的測試集樣本規模太小。
  4. 模型可能需要每一個可能存在的數據點來確定模型值。
  5. 不同測試集生成的結果不同,這造成測試集具備極大的不確定性。
  6. 重採樣方法可對模型在未來樣本上的性能進行更合理的預測。

所以在實際應用中,可以選擇K-折交叉驗證的方式來評估模型(CV),其偏差低,性能評估變化小。

交叉驗證是將一個整體數據平均劃分為K份,(保證數據分布)

先取第一份子集數據作為測試集,剩下的K-1份子集數據作為訓練集

再取第二份子集數據作為測試集,剩下的K-1份子集數據作為訓練集

......

不斷往複,重複K次

然後將得到的結果進行加權平均,作為最終的評估結果

在平常的使用當中,10折交叉驗證比較常見,當然還有5折交叉驗證以及3折交叉驗證

n-折交叉驗證也可以進行重複試驗然後再取平均值的方式。比如:5次10折交叉驗證

特例:留一交叉驗證(leave one out)

我們令樣本劃分次數K等於數據集合D的樣本數量n,即對樣本集合D劃分為n份子集。

優點:訓練集與原始數據集非常接近,並且可以做到訓練集和測試集是對立的

缺點:計算開銷很大

自助法:

以自主採樣為基礎:每次隨機的從初始數據D中選擇一個樣本拷貝到結果數據集D`中,樣本再放回到初始數據集D中,這樣重複m次,就得到了含有m個樣本的數據集D`,這樣就可以將D`作為訓練集,D - D`作為測試集,這樣,樣本在m次採樣中始終不被採樣的概率為0.368

這樣一個樣本在訓練集中沒出現的概率就是m次都未被選中的概率,即(1-1/m)^m。當m趨於無窮大時,這一概率就將趨近於e-1=0.368

自助法的性能評估變化小,在數據集小、難以有效劃分數據集時很有用。另外,自助法也可以從初始數據中產生多個不同的訓練集,對集成學習等方法有好處。

然而,自助法產生的數據集改變了初始數據的分布,會引入估計偏差。因而,數據量足夠時,建議使用留出法和交叉驗證法。

滑窗法:

對於具有時序特徵的數據一般採用滑窗法進行數據劃分

因為時序相關的問題來說,是利用以前的歷史數據來預測未來的事情,一定要避免數據穿越的問題(即用未來的數據預測當前的信息)

滑窗的間隔可以自己選定,一星期,三個月等等

畢竟滑窗數據之間存在overlap,使得滑窗格子之間可能存在一定的相關性

可以採用滑窗的方法得到多份訓練數據集,特徵區間越小,得到的訓練數據集越多。以下是一種劃分方式:

劃取多份訓練集,一方面可以增加訓練樣本,另一方面可以做交叉驗證實驗,方便調參。

參考:

http://chuansong.me/n/1587609551617chuansong.me

數據集拆分 · 機器學習筆記feisky.xyz

K折交叉驗證評估模型性能 · Python機器學習ljalphabeta.gitbooks.io圖標wepe/O2O-Coupon-Usage-Forecastgithub.com圖標文章詳情tianchi.aliyun.com


推薦閱讀:

機器學習入門之泰坦尼克案例
《機器學習基石》課程學習總結(一)
一文弄懂神經網路中的反向傳播法——BackPropagation
實現屬於自己的TensorFlow(三) - 反向傳播與梯度下降實現

TAG:機器學習 |