1. 程式人生 > >模型評估方法

模型評估方法

規模 可靠 另一個 isp 隨機 如果 方式 此外 family

  當我們用“訓練集”訓練好一個模型之後,首先希望看看它的性能如何,一般情況下,我們通常使用一個“測試集”來測試模型對新樣本的判別能力,然後以測試集上的“測試誤差”來作為泛化誤差的近似,通常我們假設測試樣本也是從樣本真實分布中獨立同分布采樣得到的,但是,測試集應盡可能與訓練集互斥,因為只有當測試樣本沒有在訓練過程中使用過時,才能檢驗模型對新樣本的判別能力。

  可是,我們只有一個包含m個樣例的數據集D={(x1,y1),(x2,y2),......,(xm,ym)},既要訓練,又要測試,我們該怎麽對D進行適當的處理,才能從中產生合適的訓練集S和測試集T呢。常見的做法有以下三種:

留出法:

  “留出法”直接將數據集D劃分為兩個互斥的集合,其中一個集合作為訓練集S,另一個作為測試集T,即D=SUT,S∩T=?,在S上訓練出模型後,用T來評估其測試誤差,作為對泛化誤差的估計。

以二分類任務為例,假定D包含1000個樣本,將其劃分為S包含700個樣本,T包含300個樣本,用S進行訓練後,如果模型在T上有90個樣本分類錯誤,那麽其錯誤率為(90/300)*100%=30%,相應的,精度為1-30%=70%。

  一方面,訓練集和測試集的劃分要盡可能保持數據分布的一致性,避免因數據劃分過程引入額外的偏差而對最終結果產生影響,從采樣的角度來說,則是要采用“分層采樣”的方式,例如D包含500個正例和500個反例,則通過分層采樣獲得含70%樣本的訓練集S和含30%樣本的測試集S,即S包含350個正例和350個反例,而T包含150個正例和150個反例,如果S,T中樣本類別比例差別很大,則誤差估計將由於訓練集和測試集數據分布的差異而產生偏差。另一方面,即使給定訓練集和測試集的比例後,仍然存在多種方式對初始數據集進行分割,例如對D中的樣本進行排序,可以把前350個正例給訓練集,也可以把後350個正例給訓練集,......這些不同的劃分將導致不同的訓練集和測試集,相應的,模型評估的結果也會有差別,因此,單次使用留出法得到的結果往往不夠穩定可靠,在使用留出法時,一般要采用若幹次隨機劃分,重復進行實驗評估後取平均值作為留出法的評測結果。、

  此外,我們希望評估的是用D訓練出的模型的性能,但留出法需劃分訓練集和測試集,這就產生了矛盾:若令訓練集S包含絕大多數樣本,則訓練出的模型可能更接近用D訓練出的模型,但由於T比較小,評估結果可能不夠穩定準確,若令測試集T多包含一些樣本,則訓練集S與D的差別更大了,被評估的模型與用D訓練出的模型相比可能有較大差別,從而降低了評估結果的保真性,這個問題沒有完美的解決方案,常見做法是將大學2/3~4/5的樣本用於訓練,剩余樣本用於測試。

交叉驗證法:

  “交叉驗證法”先將數據集D劃分為k個大小相似的互斥子集,即D=D1D2Dk,DiDj=(i!=j)。每個子集Di都盡可能保持數據分布的一致性,即從D中通過分層采用得到,然後每次用k-1個子集的並集作為訓練集,余下的那個子集作為測試集,這樣就可獲得k組訓練/測試集,從而進行k次訓練和測試,最終取k個測試結果的平均值,顯然,交叉驗證法評估結果的穩定性和保真性在很大程度上取決於k的取值,通常我們把交叉驗證法稱為“K折交叉驗證”,k最常用的取值是10,稱為10折交叉驗證,下圖給出了10折交叉驗證的示意圖

技術分享圖片

  與留出法類似,存在多種方式將數據集D劃分為k個子集,為減小因樣本劃分不同而引入的差別,通常隨機使用不同的劃分重復p次,最終的評估結果是這p次k折交叉驗證結果的均值,常見的是“10次10折交叉驗證”。

  假設數據集D有m個樣本,若令k=m,則得到交叉驗證的一個特例:留一法,顯然,留一法不受隨機樣本劃分方式的影響,因為m個樣本劃分為m個子集只有一種方式,而且每個子集中只有一個樣本,這使得訓練集只比原始數據集少了一個樣本,從而實際評估的模型與期望評估的用D訓練的模型很相似,所以,留一法的評估結果往往被認為比較準確,然而,留一法也有其缺陷,當數據集比較大時,訓練m個模型的計算開銷將會非常巨大。

自助法:

  我們希望評估的是用原始數據集D訓練出的模型,但在留出法和交叉驗證法中,都保留了一小部分樣本用於測試,因此實際評估的模型多使用的訓練集比D少,這必然會引入一些因訓練樣本規模不同而導致的估計偏差,留一法受訓練樣本規模變化的影響較小,但是計算復雜度太高。

  “自助法”可以減少訓練樣本規模不同造成的影響,同時還能比較高效的進行實驗評估,它直接以自主采樣法為基礎,假定原始數據集D包含m個樣本,通過采樣產生數據集D‘,每次隨機從D中挑選一個樣本,將其拷貝放入D‘,然後再將該樣本放回D中,是的該樣本在下次采樣時仍有可能被采到,重復這個過程m次,我們就得到了一個包含m個樣本的數據集D‘,顯然,D中有一部分樣本會在D‘中多次出現,而另一部分不出現,樣本在m次采樣中始終不被采樣到的概率是(1-1/m)m,取極限可得:

技術分享圖片

  通過自助采樣,D中約有36.8%的樣本未出現在采樣數據集D‘中,於是我們可將D‘用作訓練集,D\D‘用作測試集,這樣實際評估的模型與期望評估的模型都使用m個訓練樣本,而我們仍有約1/3未在訓練集中出現的樣本用於測試,這樣的測試結果,亦稱“包外估計”。

  自助法在數據集較小,難以有效劃分訓練集和測試集是很有用,此外,自助法從初始數據集中產生多個不同的訓練集,這對集成學習等方法有很大的好處,然而,自助法產生的數據集改變初始數據集的分布,這會引入估計偏差,因此,在初始數據量足夠時,留出法和交叉驗證法更常用一些。

模型評估方法