1. 程式人生 > >機器學習模型評估方法

機器學習模型評估方法

實際的機器學習專案中,我們往往只知道包含m個樣例的資料集D,D={(x1,y1),(x2,y2),(x3,y3),...(xm,ym)},通過對資料集D進行適當的處理,劃分為訓練集和測試集,訓練集構建模型,然後用該模型計算測試資料集的測試誤差,最後以測試集的測試誤差近似為模型的泛化能力,根據泛化能力來評價模型的優劣。

我們在構建最優機器模型的前提是假設資料集D是獨立同分布的,用抽樣的觀點來解釋就是我們從真實的總體樣本中隨機抽樣m次,得到抽樣樣本集D,機器學習模型評估方法是討論如何劃分為訓練集和測試集的方法,我們可以通過概率學的角度來理解評估方法。

本文中,我們首先引入了資料集概率分佈的概念,然後逐一介紹目前常用的模型評估方法,最後對這些方法進行總結。

 

                                                                              1、資料集的概率分佈


假設總體樣本服從某一分佈P(X),資料集D是從總體樣本中獨立隨機抽樣m次獲取的,資料集D={(x1,y1),(x2,y2),(x3,y3),...(xm,ym)}。

資料集D的概率分佈:

                                            

若再次從總體樣本隨機抽樣m次得到資料集D1,資料集D1 = {(x1’,y1),(x2’,y2),(x3’,y3’),...(xm’,ym)},若資料集不同,那麼用資料集構建的最優模型也有所不同。

                                                                                2、模型評估方法


模型評估方法是對資料集D如何劃分為訓練集S和測試集T的方法,目前常見的做法有留出法、交叉驗證法和自助法。

2.1 留出法

“留出法”(hold-out)直接將資料集D劃分為兩個互斥集合,其中一個集合為訓練集S,另一個作為測試集T,即 

                                                                      

訓練集S具體劃分為訓練集和驗證集,訓練集構建模型,驗證集對該模型進行引數擇優,選擇最優模型,測試集T測試最優模型的泛化能力。

訓練集和測試集的劃分要儘可能保持資料分佈的一致性,避免因資料劃分過程引入額外的偏差而對最終結果產生影響。如資料集D包含500個正樣本,500個負樣本,資料集D劃分為70%樣本的訓練集和30%樣本的測試集,為了保證訓練和測試正負樣本的比例與資料D比例相同,採用分層抽樣的方法,先從500個正樣本隨機抽取350次,500個負樣本隨機抽取350次,然後剩下的樣本集作為測試集,分層抽樣保證了訓練集的正負樣本的比例與資料集D的正負樣本比例相同。

留出法的另一個問題是訓練集S和測試集T是從資料集D隨機抽樣得到的,因此偶然因素較大,需要多次進行留出法計算每次的測試誤差率,然後對每次的測試誤差求平均(如下圖),減小偶然因素。

                                      

                                                                                圖1  平均留出法

 

初始資料集D的概率分佈:

                                                                     

第一次留出法抽樣的訓練集的概率分佈:P(S1)

留出法的訓練集只包含了一定比例的初始資料集,留出法訓練資料集S1和初始資料集D的概率分佈不一樣,因此用留出法估計的模型存在估計偏差。

2.2 交叉驗證法

“交叉驗證法”(cross validation)先將資料集D劃分為k個大小相似的互斥子集

                                          

每個子集Di通過分層取樣得到(如上節所述,為了保證正負樣本的比例與資料集D的比例相同),然後用k-1個子集的並集作為訓練集,餘下的子集作為測試集;這樣就獲得k組訓練/測試集,從而進行k次訓練和測試,最終返回的是這k個測試結果的均值。通常把交叉驗證法稱為”k折交叉驗證法“,k最常用的取值是10,此時稱為10折交叉驗證。下圖為10折交叉驗證的示意圖。

                                          

初始資料集的概率分佈:

                                          

十折交叉驗證的第一折的訓練集的概率分佈:

                                        

十折交叉驗證的訓練集只包含了初始資料集的90%,訓練資料集D’和初始資料集D的概率分佈不一樣,因此用十折交叉驗證估計的模型存在估計偏差。

若資料集D包含m個樣本,先將資料集D劃分為m個大小相似的子集,每個子集只有一個樣本資料,則得到了交叉驗證法的一個特例,留一法(Leave-One-Out,簡稱LOO)。因為留一法的訓練資料集相比原始樣本資料集D只少了一個樣本,因此留一法的評估結果比較準確。但是留一法在訓練資料比較大時,訓練m個模型的計算開銷可能是難以忍受的(例如資料集包含1百萬個樣本,則需訓練1百萬個模型),若考慮模型引數優化的情況下,計算量則會成倍的增加。

2.3 自助法

我們希望評估的是用原始資料集D訓練出的模型,但是留出法和交叉驗證法訓練的資料集比原始的資料集D小,這必然會引入因訓練資料集不同導致的估計偏差,留一法受訓練樣本規模變化的影響較小,但是計算複雜度太高。

”自助法“(bootstrapping)是有放回抽樣,給定包含m個樣本的資料集D,我們對它進行取樣產生資料集D’:每次隨機從D中挑選一個樣本,將該樣本拷貝放入D’,然後再將該樣本放回初始資料集D中,下次抽樣時仍有可能被採到;重複執行m次該過程,我們就得到了包含m個樣本資料集D’,這就是自助取樣的結果。初始資料集D中有一部分樣本會在資料集D’中多次出現,也有一部分樣本不會在資料集D’中出現。

樣本在m次取樣中始終不被採到的概率是:

                                                                  

對m取極限得到:

                                                                   

 

    上式可知,通過自助取樣,初始資料集D中約有36.8%的樣本未出現在取樣資料集D’,於是我們可將D’用作訓練集,實際評估的模型與期望評估的模型都使用m個訓練樣本,我們仍有資料總量約1/3的、沒在訓練集中出現的樣本作為測試集用於測試,這樣的測試結果,亦稱”包外估計“(out-of-bag estimate)。

自助法在資料集較小、難以有效劃分訓練/測試集時很有用;此外,自助法能從初始資料集中產生多個不同的訓練集,這對整合學習(強學習分類器)等方法有很大的好處,然而,自助法產生資料集改變了初始資料集的分佈,這會引入估計偏差(如下圖)。

資料集D分為D1,D2,D3,D4資料集,假設知道自助取樣的資料集結果,比較自助法取樣產生的資料集分佈和初始資料集的分佈。

                                                       

    

由上述表示式可知道,初始資料集與自助取樣資料集D1’、自助取樣資料集D2’的概率分佈不一樣,且自助法取樣的資料集正負類別比例與原始資料集不同,因此用自助法取樣的資料集代替初始資料集來構建模型存在估計偏差。

 

                                                                                    3、討論


本文討論了三種機器學習模型評估方法;留出法、交叉驗證法和自助法。留出法和交叉驗證法雖然通過分層抽樣的方法沒有改變初始資料集正負類比的比例,但是訓練資料集的樣本數少於原始資料集,訓練資料集的概率分佈與原始資料集的概率分佈不一樣,因此留出法和交叉驗證法在構建模型時存在估計偏差;自助法雖然樣本容量和初始資料集一樣,但是改變了初始資料集的分佈和正負類別比例,用自助法抽樣的資料集分佈來代替初始資料集的分佈,同樣存在估計偏差。

因此,若對於小樣本的資料集,個人建議採用自助法抽樣的方法,然後用強訓練分類器構建模型;若對於大一點的樣本資料集則建議採用十折交叉驗證法,超大樣本資料及則建議採用留出法構建模型。

                                            

參考:

《機器學習》  周志華著  清華大學出版社