留出法(hold-out)
留出法,直接將數據集D DD划分為兩個互斥的集合,其中一個集合作為訓練集S SS,另一個作為測試集T TT,一般做法是將2/3~4/5的樣本作為訓練集,其余部分作為測試集;
在使用留出法時,一般采用多次隨即划分、重復進行實驗評估后,取平均值作為留出法的評估結果。
交叉驗證法(cross validation)
交叉驗證法,或k kk折交叉驗證法(k-fold cross validation),先將數據集D DD划分為大小相似的k kk個互斥子集,然后進行k kk次實驗,每次實驗使用k − 1 k-1k−1個子集作為訓練集,剩下的1個子集作為測試集,其中,每個子集都作為測試集進行過一次實驗;
在使用交叉驗證法時,通常要隨機使用不同划分重復p pp次,最終的評估結果是p pp次k kk折交叉驗證結果的平均值。
例如,10次10折交叉驗證法,進行了100次實驗。
特別地,當k = m k=mk=m時(m mm為樣本數),k kk折交叉驗證法,即為留一法(Leave-one-out),此方法只有一種划分子集的划分方式,即每個子集包含一個樣本。
自助法(bootstrapping)
自助法,對於包含m mm個樣本的數據集D DD,每次隨機抽取一個樣本作為訓練樣本,又放回地抽取,執行m mm次抽取操作,得到訓練樣本集,剩余部分則為測試集;
當m趨於無窮時,樣本在測試集中出現的概率趨於1 / e 1/e1/e,即約0.368,如下面公式所示:
lim m → ∞ ( 1 − 1 m ) m = 1 e \lim_{m \to \infty} \big(1-\frac{1}{m}\big)^m=\frac{1}{e}lim(1−m1)m=e1
自助法適用於數據集較小,難以有效划分訓練集和測試集的情況;
自助法產生的數據集改變了初始數據集的分布,引入了估計偏差;
因此,在數據量足夠的情況下,一般使用留出法或交叉驗證法。
注意事項
測試集至少包含30個樣例;
測試集/訓練集划分時,要盡可能保持數據分布的一致性,例如,分類任務中保持樣本類別比例相似(分層采樣,stratified sampling)。