1. 程式人生 > >交叉驗證等驗證方法

交叉驗證等驗證方法

一.交叉驗證法
1.“交叉驗證法”(cross validation)先將資料集D劃分為k個大小相似的互斥子集,即D=D1並D2並D3…並Dk,每個子集之間沒有交集。
2.然後每次用k-1個子集的並集作為訓練集,餘下的那個作為測試集,這樣得到k組訓練/測試集。
3.可以進行k次訓練和測試,最終返回的是這k個結果的均值。
4.可以隨機使用不同的劃分多次,比如10次10折交叉驗證
通常把交叉驗證法稱為“k折交叉驗證”(k-fold cross validation),k最常用的取值是10,為10折交叉驗證

二.留出法
“留出法”(hold out)直接將資料集D劃分為兩個互斥的集合。其中一個集合作為訓練集S,另一個集合作為測試集T,即D=S並T,S交T=空集。在S上訓練出模型後,用T來評估其測試誤差,作為對泛化誤差的估計。
需要注意的是,訓練/測試集的劃分要儘可能保持資料分佈的一致性

。從取樣的角度看待資料集的劃分過程,則保留類別比例的取樣方式稱為“分層取樣”

三.自助法
“自助法”(bootstrapping)是一個比較好的解決方案,以自助取樣為基礎,給定包含m個樣本的資料集D,進行取樣得資料集D’:每次隨機從D中挑選一個樣本,copy放入D’,並將樣本放回初始資料集D中,使得該樣本在下次取樣還可能被取樣到。該過程重複m次,得到包含m個樣本的資料集D’。
將D’用作訓練集,D/D‘用作測試集,每次使用m個訓練樣本,仍有約1/3沒在訓練集中出現用於測試,稱為“包外估計”。對於資料集較小的樣本較好。