資料集的劃分

2022-04-13 17:58:37 字數 2163 閱讀 2671

在機器學習演算法中,我們通常將原始資料集劃分為三個部分(劃分要盡可能保持資料分布的一致性):

(1)training set(訓練集):訓練模型

(2)validation set(驗證集):選擇模型

(3)testing set(測試集):評估模型

其中validation set的作用是用來避免過擬合的。在訓練過程中,我們通常用它來確定一些超引數(例:根據validation set的accuracy來確定early stoping的epoch大小,根據validation set確定learning rate等等)。之所以不用testing set,是因為隨著訓練的進行,網路會慢慢過擬合測試集,導致最後的testing set沒有參考意義。因此training set用來計算梯度更新權重,即訓練模型,validation set用來做模型選擇,testing set則給出乙個accuracy以判斷網路效能的好壞。

資料集的劃分通常有三種方法:

(1)留出法(hold-out)

​ 將資料集\(d\)劃分為兩個互斥的集合,其中乙個集合作為訓練集\(s\),另乙個集合作為測試集\(t\),即\(d=s\cup t\),\(s\cap t = \varnothing\)。在\(s\)上訓練出模型後,用\(t\)來評估其誤差。andrew ng老師在《deep learning》課程中對資料集的劃分講解如下:

​ (a)previous era of machine learning。資料量為10000左右。如果只是劃成訓練集和測試集則為:70%驗證集,30%測試集。如果劃成訓練集、驗證集和測試集則為:60%訓練集,20%驗證集,20%測試集。

​ (b)big data era:資料量為百萬級別。 驗證集和測試集佔資料總量的比例會趨向變得更小。比如有1000000條資料,只需各拿出10000條作為驗證集和測試集。

(2)交叉驗證法(cross validation)

​ 將資料集\(d\)劃分為 \(k\) 個大小相似的互斥子集,即\(d=d_1\cup d_2 \cup \cdots \cup d_k\),\(d_i \cap d_j = \varnothing(i \not = j)\)。每個子集都要盡可能保持資料分布的一致性,即從d中通過分層取樣得到。然後用 \((k-1)\) 個子集的並集作為訓練集,餘下的子集作為測試集。這樣就可以獲得 \(k\) 組訓練/測試集,從而可以進行 \(k\) 次訓練和測試,最終返回的是 \(k\) 個測試結果的均值。交叉驗證法評估結果的穩定性和保真性在很大程度上取決於 \(k\) 的取值。如10折交叉驗證:

​ 交叉驗證法優點和缺點:

​ (a)優點:從有限的資料中盡可能挖掘多的資訊,從各種角度去學習我們現有的有限的資料,避免出現區域性的極值。在這個過程中無論是訓練樣本還是測試樣本都得到了盡可能多的學習。

​ (b)缺點:當資料集比較大時,訓練模型的開銷較大。

​ 每次隨機從初始資料集 \(d\) 中選擇乙個樣本拷貝到結果資料集 \(d'\) 中,重複操作 \(m\) 次 ,就得到了含有 \(m\) 個樣本的資料集 \(d'\) (注意:\(d\) 中有部分樣本會在 \(d'\) 中多次出現)。將 \(d'\) 作為訓練集,\(d\setminus d'\) 作為驗證集(測試集)。樣本在 \(m\) 次取樣中始終不被採集到的概率是 \((1-\frac)^m\) ,取極限為:

\[\lim_(1-\frac)^m = \frac=0.368

\]通過自助取樣,初始資料集中約有36.8%的樣本未出現在取樣集 \(d'\) 中。

​ 自助法優點和缺點:

​ (a)優點:自助法在資料集較小、難以有效劃分訓練集和測試集時很有用。此外,自助法能從初始資料集中產生多個不同的訓練集,這對整合學習等方法有很大的好處。

​ (b)缺點:自助法產生的資料集改變了初始資料集的分布,這會引入估計偏差。因此在初始資料量足夠時,留出法和交叉驗證法更加常用一些。

reference:

正則化方法:l1和l2 regularization、資料集擴增、dropout

【七】機器學習之路——訓練集、測試集及如何劃分

資料集劃分

資料集按類劃分 資料集劃分方法

留出法 直接將資料集d劃分為兩個互斥的集合,乙個為訓練集s,乙個為測試集t,即d s t,s t 在s上進行模型學習,然後用t來評估其測試誤差,作為對泛化誤差的估計。單次使用留出法得到的估計結果往往不夠穩定可靠,在使用留出法時,一般要採用若干次隨機劃分 重複進行模型評估後取平均值作為留出法的評估結果...

劃分資料集

如果要在乙個二維資料散點圖中間畫一條線將資料集分開,是按照x劃分還是y劃分呢 from math import log defcreatedataset dataset 1,1,yes 1,1,yes 1,0,no 0,1,no 0,1,no labels no su cing flippers r...

劃分資料集

import glob import shutil total file total file.txt train train.txt val val.txt bin path data l v bin 總的點雲資料集檔案路徑 如果是自己的路徑,就是 自己點雲資料夾 bin bin train di...