R語言caret包的學習(三)--數據分割


本文將就caret包中的數據分割部分進行介紹學習。主要包括以下函數:createDataPartition(),maxDissim(),createTimeSlices(),createFolds(),createResample(),groupKFold()等

基於輸出結果的簡單分割

createDataPartition函數用於創建平衡數據的分割。如果函數中的參數y是一個因子向量,則對每一類隨機抽樣,並且保持數據整體類別的分類。

 createDataPartition(y, times = 1, p = 0.5, list = TRUE, groups = min(5, length(y))) 

  •  y  結果向量
  • times  創建分區的數目
  • p 將要用於訓練的數據的百分比
  • list  邏輯值。true時,返回結果為列表形式,否則,為floor(p * length(y))行 times列的矩陣
  • groups  對於數值y,樣本根據百分位數分成組,並在這些子組內進行采樣。百分比的數量通過groups參數設置。

基於特征變量的分割

函數maxDissim應用最大相異方法(maximum dissimiarity approach)創建子樣本。假設有一個m個樣本的數據集A和具有n個樣本的一個大數據集B。我們希望從B中抽取和A不同的子樣本。為了這樣做,對於B中的每一個樣本,函數計算與A中每一樣本點的相異性。把B中最大相異性的點加到A並繼續。注意,計算相異性時,要加載proxy包

 maxDissim(a, b, n = 2, obj = minDiss, useNames = FALSE, randomFrac = 1, verbose = FALSE, ...) 

  • a  小樣本數據集,矩陣或數據框
  • b  大樣本數據集,矩陣或數據框
  • n  子樣本的大小,其實就是最后想要找出的相異性樣本的個數
  • obj  衡量總體差異的函數,常用的有minDiss,sumDiss
  • useNames  邏輯值,true返回行名,false返回行索引
  • randomFrac  在(0,1]中的數值,用於從剩余候選值中進行子采樣
  • verbose  邏輯值,是否顯示每步過程

時間序列的數據分割

時間序列簡單隨機抽樣並不是對時間序列抽樣的最好的方法。Hyndman和Athanasopoulos(2013)討論了rolling forecasting origin技術。caret包 包含了createTimeSlices函數,它能創建這種類型的切片。

 createTimeSlices(y, initialWindow, horizon = 1, fixedWindow = TRUE, skip = 0) 

  • y  結果向量,按年代或其他時間順序
  • initialWindow  每個訓練集樣本中連續值的初始數量
  • horizon  測試樣本中的連續值的數量
  • fixedWindow  邏輯值,false時,所有訓練樣本從1開始
  • skip  整數,how many (if any) resamples to skip to thin the total amount

horizon參數值不同時的情形:horizon分別為1,3時,測試樣本的數量分別為1,3

fixedWindow分別為TRUE和FALSE時的情形,可見為false時,訓練樣本總是從頭開始。

skip參數,注意skip為3時,不同訓練樣本的第一個索引依次加4

 

其他類似函數

此外,在制造訓練集時,還有以下可能用到的函數

1、 createFolds(y, k = 10, list = TRUE, returnTrain = FALSE) 

 其中,k是folds的數目,list,是否以列表形式返回,returnTrain,false時返回的是測試集的索引,true時返回的是訓練集的索引(僅當list=TRUE時,returnTrain=TRUE才有效)

2、  createResample(data,k) 

其中,k是創建訓練樣本的個數

3、   groupKFold(group, k = length(unique(group))) 

其中,k是folds的數目

 

參考:http://topepo.github.io/caret/data-splitting.html (其中文翻譯見


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM