1. 程式人生 > >機器學習測試集選取常用方法-《機器學習》周志華

機器學習測試集選取常用方法-《機器學習》周志華

0.      基本術語

資料集(data set):記錄的集合。

示例(instance)或樣本(sample):每條記錄是關於一個事件或者物件的描述。

屬性(attribute)或特徵(feature):反映事件或物件在某方面的表現或性質的事項。

屬性值(attribute value):屬性上的取值。

訓練集(training set):訓練過程中使用的資料。

學習器(learner):找出規律或者逼近真相的模型。

1.      經驗誤差與過擬合

錯誤率(error rate):分類錯誤樣本數佔樣本總數的比例。

錯誤率E=a/m;在m個樣本中有a個樣本分類錯誤。

精度(accuracy)= 1-錯誤率。

誤差(error):學習器的實際預測輸出與樣本的真實輸出之間的差異。

訓練誤差(training error):學習器在訓練集上的誤差。

泛化誤差(generalization):在新樣本上的誤差。

Goal:希望得到泛化誤差小的學習器。

實際中,只能努力使經驗誤差最小化,這樣就可能出現一個經驗誤差很小,在訓練集上表現很好的學習器,對所有訓練樣本都分類正確,即分類錯誤率為零,分類精度為100%,但是在多數情況下都不好。

過擬合:學習能力過於強大,把訓練樣本所包含的不太一般的特性都學到了,導致泛化效能降低。

欠擬合:學習能力低下。

圖片(過擬合,誤認為樹葉必須有鋸齒)

圖片(欠擬合,誤以為綠色的都是樹葉)

通過實驗測試來對學習器的泛化誤差進行評估並改進而做出選擇。為此,需使用一個測試集(testing test)來測試學習器對新樣本的判別能力,然後以測試集上的測試誤差(testing error)作為泛化誤差的近似。

2.      測試集選取

測試集的選取:通常假設測試樣本也是從樣本真是分佈中獨立同分布取樣得到,但是需注意,測試集應該儘可能與訓練集互斥,即測試樣本儘量不在訓練集中出現、未在訓練過程中使用(原因:希望得到泛化效能強的模型,就是學生做題時的舉一反三能力)

已知:一個包含m個樣例的資料集D={(x1,y1),(x2,y2),…,(xm,ym)},既要訓練又要測試。對D進行適當的處理,從中產生訓練集S和測試集T。

2.1留出法(hold-out)

方法:直接將資料集D劃分為兩個互斥的集合,其中一個集合作為訓練集S,另一個作為測試集T,即.在S上訓練出模型後,用T來評估其作為測試誤差,作為對泛化誤差的估計。

舉個栗子:假定D包含1000個樣本,將其劃分為S包含700個樣本,T包含300個樣本,用S進行訓練,如果模型在T上有90個樣本分類錯誤,那麼其錯誤率為,精度為1-30%=70%。

注意事項:

(1)訓練/測試集的劃分要儘可能保持資料分佈的一致性,避免因資料劃分過程引入額外的偏差而對最終結果產生影響。例如在分類任務中至少要保持樣本的類別比例相似,嘗採用分層取樣的方法,即取樣過程中保留類別比例。

         (2)即便在給定訓練/測試集的樣本比例後,仍存在多種劃分方式對初始資料集D進行分割。

因此,單次使用留出法得到的估計結果往往不夠穩定可靠,在使用留出法時,一般要採用若干次隨機劃分、重複進行試驗評估或取平均值作為留出法的評估結果。

在這裡,還有一個窘境:若訓練集S包含絕大多數樣本,則訓練處的模型可能更接近於用D訓練出的模型,但由於T比較小,評估結果可能不夠穩定準確,測試集小,評估結果的方差較大;若令測試集T多包含一些樣本,則訓練集S與差別更大了,被評估的模型與用D訓練出的模型相比可能有較大的差別,從而降低了評估結果的保真性(fidelity)。

常見解決方法:將大約2/3~4/5的樣本用於訓練,剩餘樣本用於測試。

2.2交叉驗證法(crossvalidation)/k折交叉驗證(k-fold cross validation)

方法:將資料集D劃分為k個大小相似的互斥子集,即.每個子集Di都儘可能保持資料分佈的一致性,即從D中通過分層取樣得到。然後每次都用k-1個子集的並集作為訓練集,餘下的那個子集作為測試集;這樣就可獲得k組訓練/測試集,從而可進行k次訓練和測試,最終返回的是這k個測試結果的均值。

tips:

(1)    評估結果的穩定性和保真性很大程度上取決於k的取值,最常用取值為10,此時成為10折交叉驗證;其他常用的k值有5、20.

(2)    為了減小因樣本劃分不同而引入的差別,k折交叉驗證通常要隨機使用不同的劃分重複p次,最終的評估結果是這p次k折交叉驗證結果的均值,例如常見的10次10折交叉驗證。

(3)    特例:留一法:k=m,留一法使用的訓練集與初始資料集相比只是少了一個樣本,留一法中被實際評估的模型與期望評估的用D訓練出的模型很相似,因此結果往往被認為比較準確。缺陷:資料集比較大事訓練m個模型的計算開銷可能過大。

2.3自助法(bootstrapping)

方法:以bootstrap sampling為基礎,給定包含m個樣本的資料集,我們對它進行取樣產生資料集D’:每次隨機從D中挑選一個樣本,將其拷貝放入D’,然後將該樣本放回初始資料集D中,使得該樣本在下次取樣時仍有可能被採到;這個過程重複m次以後,我們就得到了包含m個樣本的資料集D’。將D’用作訓練集,D\D’用作測試集;這樣實際評估的模型與期望評估的模型都使用m個訓練樣本,而仍有資料總量約1/3的、沒在訓練集中出現的樣本用於測試,這樣的測試結果,也成為“包外估計”(out-of bag estimate).

在這個過程中,樣本在m次取樣中始終不被採到的概率是(1-1/m)m,取極限得到

即通過自助取樣,初始資料集D中約有36.8%的樣本未出現在取樣資料集D’中。

使用條件:

(1)在資料集較小,難以有效劃分訓練/測試集時很有用;

(2)可從初始資料集中產生多個不同的訓練集,對整合學習等方法很有用。

總結:自助法產生的資料集改變了初始資料集的分佈,這會引入估計偏差。在初始資料量足夠時,留出法和交叉驗證法更常用一些。