机器学习中数据集的划分
機器學習中數據集的劃分
- 1.如何劃分數據集
- 2.數據集的劃分方法
- 1.留出法(Hold-out)
- 2.交叉驗證法(Cross Validation)
- 3.自助法(BootStrapping)
- 3.劃分方法的選擇
- 4.模型的擬合問題
1.如何劃分數據集
在機器學習算法中,我們通常將原始數據集劃分為三個部分:
我們首先將數據集劃分為訓練集和驗證集,由于模型的構建過程中也需要檢驗模型的配置,以及訓練程度是過擬合還是欠擬合,所以會將訓練數據再劃分為兩個部分,一部分是用于訓練的訓練集,另一部分是進行檢驗的驗證集。
訓練集用于訓練得到神經網絡模型,然后用驗證集驗證模型的有效性,挑選獲得最佳效果的模型。驗證集可以重復使用,主要是用來輔助我們構建模型的。最后,當模型“通過”驗證集之后,我們再使用測試集測試模型的最終效果,評估模型的準確率,以及誤差等。
注意:我們不能用測試集數據進行訓練,之所以不用測試集,是因為隨著訓練的進行,網絡會慢慢過擬合測試集,導致最后的測試集沒有參考意義。
總結一下:
下面給出一個圖片加強理解
2.數據集的劃分方法
數據集的劃分一般有三種方法:
1.留出法(Hold-out)
為了保證數據分布的一致性,通常我們采用分層采樣的方式來對數據進行采樣。
1.如果數據比較少:
只劃分訓練集和測試集則為:70%驗證集,30%測試集;
劃分訓練集、驗證集和測試集則為:60%訓練集,20%驗證集,20%測試集。
2.數據比較多:
只需要取一小部分當做測試集和驗證集,其他的都當做訓練集。
然后使用訓練集來生成模型,驗證集來選擇模型,最后用測試集來測試模型的正確率和誤差,以驗證模型的有效性。
這種方法常見于決策樹、樸素貝葉斯分類器、線性回歸和邏輯回歸等任務中。
缺點:只進行了一次劃分,數據結果具有偶然。
2.交叉驗證法(Cross Validation)
我們經常使用交叉驗證方法來評估模型。有兩種形式:K折交叉驗證和留一法。
K折交叉驗證的基本思想是:把原始訓練數據集分割成K個不重合的子數據集,然后做K次模型訓練和驗證。每一次,使用一個子數據集驗證模型,并使用其它K?1個子數據集來訓練模型。最后,對這K次訓練誤差和驗證誤差分別求平均。
例如如圖所示的10折交叉驗證,將數據分成互不相交的10個子集,標記為D1,D2,D10,第一次將D10作為測試集,其余的作為訓練集,進行實驗,得到測試結果1,第二次將D9作為測試集,其余的作為訓練集,進行實驗,得到測試結果2,重復10次,得到10個測試結果,將這10次測試結果進行平均做為最終結果進行返回。
具體步驟:
交叉驗證是將一個整體數據平均劃分為K份
先取第一份子集數據作為測試集,剩下的K-1份子集數據作為訓練集
再取第二份子集數據作為測試集,剩下的K-1份子集數據作為訓練集
…
不斷往復,重復K次
然后將得到的結果進行加權平均,作為最終的評估結果
優點:降低由一次隨機劃分帶來的偶然性,提高其泛化能力,提高對數據的使用效率。
缺點:可能存在一種情況:數據集有5類,抽取出來的也正好是按照類別劃分的5類。這樣的結果就會導致,模型訓練時沒有學習到測試集中數據的特點,從而導致模型得分很低,甚至為0,
特例:
當 kkk=1的時候,我們稱之為留一法
我們令樣本劃分次數K等于數據集合D的樣本數量n,即把樣本集合D劃分為n份子集。
可以發現,留一法并不需要多次劃分,其劃分方式只有一種。
優點:因為留一法中的 S 與 D 很接近,所以 S 所訓練出來的模型應該與 D 所訓練出來的模型很接近,因此通常留一法得到的結果是比較準確的
缺點:當數據集很大的時候,留一法的運算成本將會非常的高以至于無法忍受。
3.自助法(BootStrapping)
留出法與交叉驗證法都是使用分層采樣的方式進行數據采樣與劃分,而自助法則是使用有放回重復采樣的方式進行數據采樣。
我們每次從數據集D中取一個樣本作為訓練集中的元素,然后把該樣本放回,重復該行為 m 次,這樣我們就可以得到大小為m的訓練集,在這里面有的樣本重復出現,有的樣本則沒有出現過,我們把那些沒有出現過的樣本作為測試集,剩余的作為訓練集。
對任意一個樣本,在m次采樣中沒有被取到的概率為(1?1m)m(1-\frac{1}{m})^{m}(1?m1?)m,取極限為1e≈0.368\frac{1}{e} \approx 0.368e1?≈0.368
優點:自助法在數據集較小、難以有效劃分訓練集和測試集時很有用。此外,自助法能從初始數據集中產生多個不同的訓練集,這對集成學習等方法有很大的好處。
缺點:自助法產生的數據集改變了初始數據集的分布,這會引入估計偏差。因此在初始數據量足夠時,留出法和交叉驗證法更加常用一些。
3.劃分方法的選擇
1.對于數據量充足的時候,通常采用留出法或者k折交叉驗證法來進行訓練/測試集的劃分;
2.對于數據集小且難以有效劃分訓練/測試集時使用自助法;
3.對于數據集小且可有效劃分的時候最好使用留一法來進行劃分,因為這種方法最為準確 。
4.模型的擬合問題
1.如果訓練集和測試集(驗證集)上,正確率都很低,那么,說明模型處于欠擬合狀態,需要調整超參數。
2.如果訓練集上正確率很低,測試集(或驗證集)上正確率較高,說明數據集有問題。
3.如果訓練集上正確率很高,測試集(以及驗證集)上正確率較低,說明模型過擬合,需要進行正則化或者Dropout來抑制過擬合。
4.如果訓練集和驗證集上正確率都很高,但是在測試集上正確率較低,那么說明模型的泛化能力不足,調整方法可參考之前的過擬合情況。
5.如果訓練集和測試集(包括驗證集)上模型的正確率都很高,那么,你成功了!
總結
以上是生活随笔為你收集整理的机器学习中数据集的划分的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【ZBrush笔刷收集】一百多个实用笔刷
- 下一篇: tar打包忽略某个目录