SAS學習筆記(五)——關於樣本劃分
資料集可劃分為訓練資料集和測試資料集
劃分時要注意:隨機性和等比例分層(訓練資料和測試資料有相同比例的目標事件)
/*進行等比例分層之前要對分層變數進行排序*/
proc sort data=data_base;
by y; /*y是目標變數*/
run;
/*surveyselect過程*/ 即設定引數的過程
proc surveyselect data=data_base
out=data_base1
samprate=.6667 /*設定分層的比例,例如訓練樣本為n1,測試樣本為n2,那麼samprate=n1/(n1+n2)*/
seed=1234 /*當設定為0時,每次執行surveyselect過程將產生不同的隨機序列,因此每次得到的訓練資料集和測試資料集都不一樣;當取值大於0,就會產生
相同的隨機序列,因此可以得到相同的訓練和測試資料集*/
outall;/* 原始資料全部輸出,新增標識變數1和0,分別屬於訓練和測試資料集*/
strata y;/*定義分層變數,使得最後的目標變數佔比相同*/
run;
/*輸出分層抽樣的比例圖*/
proc freq data=data_base1;
tables selected*y;
run;
/*輸出訓練和測試資料集*/
data train validation;
set data_base1;
if selected=1 then output train;
else output validation;
run;
以上是資料充足的情況下,資料不充足的時候,要採用交叉驗證法:
1)data_base分為A(1/3)和data_base1(2/3);
2)data_base1分為B(1/2)和C(1/2);
訓練資料集 測試資料集
B C A
A B C
A C B
為了建立可靠的預測模型,目標事件觀測數佔訓練資料集總觀測數比例不應該低於10%,一般10%-15%
這樣的樣本成為平衡樣本。
主要處理在samprate=(samprate_1,samprate_2……samprate_n)
這裡引數是目標變數中各層級的取樣比例,例如目標變數是性別,則男女分別的取樣比例。