本文將就caret包中的數據分割部分進行介紹學習。主要包括如下函數:createDataPartition(),maxDissim(),createTimeSlices(),createFolds(),createResample(),groupKFold()等html
createDataPartition函數用於建立平衡數據的分割。若是函數中的參數y是一個因子向量,則對每一類隨機抽樣,而且保持數據總體類別的分類。git
createDataPartition(y, times = 1, p = 0.5, list = TRUE, groups = min(5, length(y))) github
函數maxDissim應用最大相異方法(maximum dissimiarity approach)建立子樣本。假設有一個m個樣本的數據集A和具備n個樣本的一個大數據集B。咱們但願從B中抽取和A不一樣的子樣本。爲了這樣作,對於B中的每個樣本,函數計算與A中每同樣本點的相異性。把B中最大相異性的點加到A並繼續。注意,計算相異性時,要加載proxy包app
maxDissim(a, b, n = 2, obj = minDiss, useNames = FALSE, randomFrac = 1, verbose = FALSE, ...) dom
時間序列簡單隨機抽樣並非對時間序列抽樣的最好的方法。Hyndman和Athanasopoulos(2013)討論了rolling forecasting origin技術。caret包 包含了createTimeSlices函數,它能建立這種類型的切片。函數
createTimeSlices(y, initialWindow, horizon = 1, fixedWindow = TRUE, skip = 0) 學習
horizon參數值不一樣時的情形:horizon分別爲1,3時,測試樣本的數量分別爲1,3測試
fixedWindow分別爲TRUE和FALSE時的情形,可見爲false時,訓練樣本老是從頭開始。大數據
skip參數,注意skip爲3時,不一樣訓練樣本的第一個索引依次加4spa
此外,在製造訓練集時,還有如下可能用到的函數
一、 createFolds(y, k = 10, list = TRUE, returnTrain = FALSE)
其中,k是folds的數目,list,是否以列表形式返回,returnTrain,false時返回的是測試集的索引,true時返回的是訓練集的索引(僅當list=TRUE時,returnTrain=TRUE纔有效)
二、 createResample(data,k)
其中,k是建立訓練樣本的個數
三、 groupKFold(group, k = length(unique(group)))
其中,k是folds的數目
參考:http://topepo.github.io/caret/data-splitting.html (其中文翻譯見)