1. 程式人生 > >機器學習之劃分資料集

機器學習之劃分資料集

目錄

轉載自:

資料擬閤中的訓練集,測試集,驗證集

實際專案中的資料集劃分

訓練集和測試集的劃分方法

留出法

交叉驗證法

自助法(BootStrapping) 


轉載自:

https://blog.csdn.net/c369624808/article/details/78408047

資料擬閤中的訓練集,測試集,驗證集

訓練集(Training Set):用來訓練模型,簡單的說就是通過訓練集的資料讓我們確定擬合曲線的引數。 

驗證集(Validation Set):用來做模型選擇(model selection),即做模型的最終優化及確定的,用來輔助我們的模型的構建,可選; 

測試集(Test Set): 用來測試已經訓練好的模型的精確度。測試集測試的目標: 儘可能檢驗已經訓練號的模型的精確度和健壯性。當然,測試集資料的選擇要格外的“精心”,以求來更好的檢查模型各個的擬合引數的準確度。

實際專案中的資料集劃分

但實際應用中,一般只將資料集分成兩類,即訓練集Training set 和測試集Test set

訓練集和測試集的劃分方法

留出法

留出法的意思是直接將資料集D劃分為兩個互斥的集合,其中一個集合作為訓練集S,另一個集合作為測試集T,即D=S∪TD=S∪T,S∩T=∅S∩T=∅。在S上訓練出模型後,用T來評估其誤差。

注意:

  • 訓練/測試集的劃分均要均有代表性,均勻分佈
  • 二者的樣本的類別比例相似不應相差太大。例如從1000個數據裡,分層取樣獲得70%樣本的訓練集S和30%樣本的測試集T,若D包含500個正例,500個反例,則分層取樣得到的S應包含350個正例,350個反例,T應包含150個正例,150個反例;若S、T中樣本比例差別很大,則最終擬合的誤差將會變大。
  • 一般,在用留出法劃分集合的時候,會通過若干次隨機劃分、重複實驗評估後取平均值作為留出法的評估結果,減少誤差。
  • 訓練集和測試集應該按照什麼比例來劃分呢?這個問題沒有完美的解決方案,常見的做法是將大約2/3~4/5的樣本用於訓練

交叉驗證法

         ”交叉驗證法”先將資料集D劃分為k個大小相似的互斥子集,即D=D1∪D2∪...∪Dk,Di∩Dj=∅(i≠j)D=D1∪D2∪...∪Dk,Di∩Dj=∅(i≠j)。每個子集都儘可能保持資料分佈的一致性,即從D中通過分層取樣得到。然後,每次用k-1個子集的並集作為訓練集,餘下的子集作為測試集;這樣就可以獲得k組訓練/測試集,從而可以進行k次訓練和測試,最終返回的是k個測試結果的均值。 

          顯然,交叉驗證法評估結果的穩定性和保真性在很大程度上取決於k的取值,為了強調這一點,通常把交叉驗證法稱為”k折交叉驗證”(k-fold cross validation),k通常取10—10折交叉驗證。 
           交叉驗證的好處就是從有限的資料中儘可能挖掘多的資訊,從各種角度去學習我們現有的有限的資料,避免出現區域性的極值。在這個過程中無論是訓練樣本還是測試樣本都得到了儘可能多的學習。(By 知乎 張戎 交叉驗證簡介
  交叉驗證法的缺點就是,當資料集比較大時,訓練模型的開銷較大。

自助法(BootStrapping) 

         我們當然想用手頭所有的資料來訓練模型了,這樣才能更好的擬合,留出法和交叉驗證法都將保留了部分資料用於測試,因此實際評估的模型所使用的訓練集比D小,這必然會引入一些因訓練樣本規模不同而導致的估計偏差。 

         自助法是一個比較好的解決方案。給定m個樣本的資料集D,我們對它進行取樣產生資料集D′D′,每次隨機從D中挑選一個樣本,將其拷貝到D′D′,這個過程執行m次後,我們就得到了包含m個樣本的資料集D′D′。顯然,D中有部分樣本會在D′D′中多次出現。做個簡單的估計,樣本在m次取樣中始終不被採到的概率是(1−1m)m(1−1m)m,取極限為 

                            limx→∞(1−1m)m=1e≈0.368limx→∞(1−1m)m=1e≈0.368
          即通過自助取樣,初始資料集D中約有36.8%的樣本未出現在取樣集D′D′裡。於是 ,實際評估的模型與期望評估的模型都是使用m個樣本,而我們仍有資料總量約1/3的沒在訓練集出現過的樣本用於測試。 

          自助法在資料集較小、難以有效劃分訓練/測試集時比較有用。然而自助法產生的測試集改變了初始資料集的分佈,這會引入誤差,因此在資料集比較大時,採用留出法和交叉驗證法較好。