在離線建模環節,需要對模型進行評估,這就需要對總樣本進行划分,一部分用於訓練,模型從訓練集學習規則,一部分用於測試,檢驗模型的泛化能力。
下面介紹幾種樣本划分方法。
留出法
方法:將樣本集 D 分成兩個互斥的樣本集合,訓練集為S,測試集為T,S∩T=Ø,SUT=D
這種方法非常簡單,但不能充分利用數據訓練模型,而且樣本划分對模型效果影響很大。
a. 只利用了部分數據訓練模型,得到的模型很可能和全量數據D得到的模型偏差很大,訓練集越小,偏差越大
b. 如果訓練集較大,測試集較小,則模型可信度降低
c. 划分前后數據分布不同,比如總樣本1500正1500負,划分后,測試樣本50正950負,這顯然會影響模型的效果。
樣本集划分數量會導致模型偏差,通常做法是 2/3做訓練集,1/3做測試集;
類別分布不同也會影響模型效果,可采用分層抽樣的方法,特別是類別不均衡問題;
鑒於留出法的不確定性,可進行多次留出法實驗,最終取平均值
適用場景:樣本具有明顯的時間序列因素
如 6月需要訓練模型,可拿1-4月作為訓練集,5月作為測試集
交叉驗證
這是最常用的方法,老生常談了,直接貼圖片吧
交叉驗證明顯比留出法更復雜,
當k=2時,其仍不同於留出法,因為留出法是1個訓練集,而交叉驗證是2個訓練集;
當k=n,n為樣本數,此時測試集為一個樣本,這稱為留一法,(Leave-One-Out,LOO),
// 這種方法訓練n個模型,每個模型基本用到全部數據,接近“真實”模型;
// 但是n很大時,其計算量太大;故n不能太大
另外,
交叉驗證在處理類別不均衡問題時,也采用了分層采樣的方式,即對每個類進行 k折划分;
由於交叉驗證在划分時也帶有隨機性,可能產生不穩定現象,故可進行多次交叉驗證;
自助法
自助法(bootstrapping) 以自主采樣(bootstrap sampling)為基礎,采用有放回重復抽樣的方式構建訓練集、測試集。
比如D中有m個樣本,每次從中隨機拿一個,存入訓練集,然后放回D中,下次再從D中隨機拿一個,存入訓練集...最終產生m個樣本的訓練集;
當然訓練集中可能有重復的樣本,有些樣本被多次選中,也有些樣本從未被選中,沒被選中的作為測試集;
樣本在m次采樣中從未被選中的概率為 (1-1/m)m,取極限
也就是說測試集大概占總樣本的0.368,大概1/3,
這種測試結果,稱為“包外估計”
自助法在數據集較小,且難以有效划分訓練/測試時很有用,而且自助法能從數據集中產生多個訓練集,很適合集成學習,隨機森林用的就是自助法;
自助法產生的訓練集改變了數據分布,這會引入估計偏差;
所以在數據量足夠時,優先選擇 留出法和交叉驗證。
最后需要注意一點,盡管我們在模型訓練時用的部分樣本,但是當經過測試集調試,模型參數固定時,需要重新在整個數據集上訓練該模型,這個模型才是最終需要交付的模型。【請注意】