ML 04、模型评估与模型选择
FROM:http://www.cnblogs.com/ronny/p/4063048.html
機(jī)器學(xué)習(xí)算法 原理、實(shí)現(xiàn)與實(shí)踐——模型評(píng)估與模型選擇
1. 訓(xùn)練誤差與測(cè)試誤差
機(jī)器學(xué)習(xí)的目的是使學(xué)習(xí)到的模型不僅對(duì)已知數(shù)據(jù)而且對(duì)未知數(shù)據(jù)都能有很好的預(yù)測(cè)能力。
假設(shè)學(xué)習(xí)到的模型是Y=f^(X),訓(xùn)練誤差是模型Y=f^(X)關(guān)于訓(xùn)練數(shù)據(jù)集的平均損失:
Remp(f^)=1N∑i=1NL(yi,f^(xi))
其中N是訓(xùn)練樣本容量。
測(cè)試誤差是模型Y=f^(X)關(guān)于測(cè)試數(shù)據(jù)集的平均損失:
etest(f^)=1N′∑i=1NL(yi,f^(xi))
其中N′是測(cè)試樣本容量。
當(dāng)損失函數(shù)是0-1損失時(shí),測(cè)試誤差就變成了常見的測(cè)試數(shù)據(jù)集上的誤差率(預(yù)測(cè)錯(cuò)誤的個(gè)數(shù)除以測(cè)試數(shù)據(jù)的總個(gè)數(shù))。
訓(xùn)練誤差的大小,對(duì)判定給定問題是不是一個(gè)容易學(xué)習(xí)的問題是有意義的,但本質(zhì)上不重要。測(cè)試誤差反映了學(xué)習(xí)方法對(duì)未知數(shù)據(jù)集的預(yù)測(cè)能力,是學(xué)習(xí)中的重要概念。顯然,給定兩種學(xué)習(xí)方法,測(cè)試誤差小的方法具有更好的預(yù)測(cè)能力,是更有效的方法。通常將學(xué)習(xí)方法對(duì)未知數(shù)據(jù)的預(yù)測(cè)能力稱為泛化能力(generalization ability)。
2. 過擬合與模型選擇
我們知道假設(shè)空間理論上有無限個(gè)模型,它們有著不同的復(fù)雜度(一般表現(xiàn)為參數(shù)個(gè)數(shù)的多少),我們希望選擇或?qū)W習(xí)一個(gè)合適的模型。
如果一味提高對(duì)訓(xùn)練數(shù)據(jù)的預(yù)測(cè)能力,所選的模型的復(fù)雜度則往往會(huì)比真實(shí)模型更高。這種現(xiàn)象稱為過擬合。過擬合是指學(xué)習(xí)時(shí)選擇的模型所包含的參數(shù)過多,以致于出現(xiàn)這一模型對(duì)已知數(shù)據(jù)預(yù)測(cè)很好,但對(duì)未知數(shù)據(jù)預(yù)測(cè)很差的現(xiàn)象。
下面,以多項(xiàng)式函數(shù)擬合問題為例,說明過擬合與模型選擇,這是一個(gè)回歸問題。
現(xiàn)在給定一個(gè)訓(xùn)練數(shù)據(jù)集:
T={(x1,y1),(x2,y2),…,(xn,yn)}
其中,xi∈R是輸入x的觀測(cè)值,yi∈R是相應(yīng)的輸出y的觀測(cè)值。多項(xiàng)式函數(shù)擬合的任務(wù)是假設(shè)給定數(shù)據(jù)由M次多項(xiàng)式函數(shù)生成,選擇最有可能產(chǎn)生這些數(shù)據(jù)的M次多項(xiàng)式函數(shù),即在M次多項(xiàng)式函數(shù)中選擇一個(gè)對(duì)已知數(shù)據(jù)以及未知數(shù)據(jù)都有很多預(yù)測(cè)能力的函數(shù)。
設(shè)M次多項(xiàng)式為:
fM(x,w)=w0+w1x+w2x2+?+wMxM=∑j=0Mwjxj
對(duì)于上面這個(gè)問題,模型的復(fù)雜度即為多項(xiàng)式的次數(shù);然后在給定的模型復(fù)雜度下,按照經(jīng)驗(yàn)風(fēng)險(xiǎn)最小化策略,求解參數(shù),即多項(xiàng)式的系數(shù),具體地,求以下經(jīng)驗(yàn)風(fēng)險(xiǎn)最小化:
L(w)=12∑i=1N(f(xi,w)?yi)2
這時(shí),損失函數(shù)為平方損失,系數(shù)12是為了計(jì)算方便。
我們用y=sin(x)生成10個(gè)數(shù)據(jù)點(diǎn),并適當(dāng)?shù)脑?span id="vt6mr5x" class="MathJax_Preview" style="margin:0px; padding:0px; color:rgb(136,136,136)">y值上加了一些誤差,下面我們分別用0~9次多項(xiàng)式對(duì)數(shù)據(jù)進(jìn)行擬合。
??
上圖給出了M=1,M=3,M=9時(shí)多項(xiàng)式擬合的情況。當(dāng)M=1時(shí)多項(xiàng)式曲線是一條直線,數(shù)據(jù)擬合效果很差。相反,如果M=9,多項(xiàng)式曲線通過每個(gè)數(shù)據(jù)點(diǎn),訓(xùn)練誤差為0。從對(duì)給定的訓(xùn)練數(shù)據(jù)擬合的角度來說,效果是最好的。但是因?yàn)橛?xùn)練數(shù)據(jù)本身存在噪聲,這種擬合曲線對(duì)未知數(shù)據(jù)的預(yù)測(cè)能力往往并不是最好的,這時(shí)過擬合現(xiàn)象就會(huì)發(fā)生。
import numpy as np import matplotlib.pyplot as plt import random x = np.linspace(0,1,10) y = np.sin(2*np.pi*x) for i in range(0,10):y[i] = y[i] + random.uniform(-0.4,0.4) p = np.polyfit(x,y,9) t = np.linspace(0,1.0,100) plt.plot(x,y,'o') plt.plot(t,np.sin(np.pi*2*t),label='$y=sin(x)$'); plt.plot(t,np.polyval(p,t),label='$y = \sum_{i=0}^Mw_ix_i,M=9,x_0=0$'); plt.legend() plt.show()3. 正則化與交叉驗(yàn)證
3.1 正則化
前面文章在介紹機(jī)器學(xué)習(xí)策略的時(shí)候,已經(jīng)提到過結(jié)構(gòu)風(fēng)險(xiǎn)最小化的概念。結(jié)構(gòu)風(fēng)險(xiǎn)最小化正是為了解決過擬合問題來提出來的策略,它在經(jīng)驗(yàn)風(fēng)險(xiǎn)上加一個(gè)正則化項(xiàng)。正則化項(xiàng)一般是模型復(fù)雜度的單調(diào)遞增函數(shù),模型越復(fù)雜,正則化值就越大。比如,正則化項(xiàng)可以是模型參數(shù)的向量的范數(shù)。
正則化項(xiàng)可以取不同的形式。例如,回歸問題中,損失函數(shù)是平方損失,正則化項(xiàng)可以是參數(shù)向量的L2范數(shù):
L(w)=1N∑i=1N(f(xi;w)?yi)2+λ2||w||2
這里,||w||表示參數(shù)向量w的L2范數(shù)。
正則化項(xiàng)也可以是參數(shù)向量的L1范數(shù):
L(w)=1N∑i=1N(f(xi;w)?yi)2+λ||w||1
這里,||w||1表示參數(shù)向量w的L1范數(shù)。
正則化符合奧卡姆剃刀(Occam’s razor)原理。奧卡姆剃刀應(yīng)用在模型選擇時(shí)想法是:在所有可能選擇的模型中,能夠很好地解釋已知數(shù)據(jù)并且十分簡(jiǎn)單才是最好的模型,也就是應(yīng)該選擇的模型。從貝葉斯估計(jì)的角度來看,正則化項(xiàng)對(duì)應(yīng)于模型的先驗(yàn)概率。可以假設(shè)復(fù)雜模型有較小的先驗(yàn)概率,簡(jiǎn)單的模型有較大的先驗(yàn)概率。
3.2 交叉驗(yàn)證
如果給定的樣本數(shù)據(jù)充足,進(jìn)行模型選擇的一種簡(jiǎn)單方法是隨機(jī)地將數(shù)據(jù)集切分成三部分,分別為訓(xùn)練集、驗(yàn)證集和測(cè)試集。訓(xùn)練集用來訓(xùn)練模型,驗(yàn)證集用于模型的選擇,而測(cè)試集用于最終對(duì)學(xué)習(xí)方法的評(píng)估。在學(xué)習(xí)到的不同復(fù)雜度的模型中,選擇對(duì)驗(yàn)證集有最小預(yù)測(cè)誤差的模型。
但是在許多實(shí)際應(yīng)用中數(shù)據(jù)是不充分的。為了選擇好的模型,可以采用交叉驗(yàn)證方法。交叉驗(yàn)證的基本想法是重復(fù)地使用數(shù)據(jù);把給定的數(shù)據(jù)進(jìn)行切分,將切分的數(shù)據(jù)集組合為訓(xùn)練集與測(cè)試集,在此基礎(chǔ)上反復(fù)地進(jìn)行訓(xùn)練、測(cè)試以及模型選擇。
1. 簡(jiǎn)單交叉驗(yàn)證
首先隨機(jī)地將已給數(shù)據(jù)分為兩部分,一部分作為訓(xùn)練集,另一部分作為測(cè)試集;然后用訓(xùn)練集在各種條件下訓(xùn)練模型,從而得到不同的模型;在測(cè)試集上評(píng)價(jià)各個(gè)模型的測(cè)試誤差,選出測(cè)試誤差最小的模型。
2. S折交叉驗(yàn)證
這種方法應(yīng)用最多。首先隨機(jī)地將已給的數(shù)據(jù)切分為S個(gè)互不相交的大小相同的子集;然后利用其中的S-1個(gè)子集的數(shù)據(jù)訓(xùn)練模型,然后用余下的子集測(cè)試模型;將這一過程對(duì)可能的S種選擇重復(fù)進(jìn)行;最后選出S次評(píng)測(cè)中平均測(cè)試誤差最小的模型。
3. 留一交叉驗(yàn)證
S折交叉驗(yàn)證的特征情形是S=N,稱為留一交叉驗(yàn)證,往往在數(shù)據(jù)缺乏的情況下使用。這里,N是給定數(shù)據(jù)集的容量。
4. 泛化能力
學(xué)習(xí)方法的泛化能力是指由該方法學(xué)習(xí)到的模型對(duì)未知數(shù)據(jù)的預(yù)測(cè)能力,是學(xué)習(xí)方法本質(zhì)上重要的性質(zhì)?,F(xiàn)實(shí)中采用最多的辦法是通過測(cè)試數(shù)據(jù)集的誤差來評(píng)價(jià)學(xué)習(xí)方法的泛化能力。但是因?yàn)閿?shù)據(jù)是有限的,并不能代表全體未知樣本,所以很有可能按照這樣評(píng)價(jià)到得的結(jié)果是不可靠的。
下面我們從理論上對(duì)學(xué)習(xí)方法的泛化能力進(jìn)行分析。
首先給出泛化誤差的定義。如果學(xué)習(xí)到的模型是f^,那么用這個(gè)模型對(duì)未知數(shù)據(jù)預(yù)測(cè)的誤差即為泛化誤差(generalization error)
Rexp(f^)=EP[L(Y,f^(X))]=∫X×YL(y,f^(x))P(x,y)dxdy
泛化誤差反映了學(xué)習(xí)方法的泛化能力,如果一種方法學(xué)習(xí)的模型比另一種方法學(xué)習(xí)的模型具有更小的泛化誤差,那么這種方法就更有效。事實(shí)上,泛化誤差就是所學(xué)習(xí)到的模型的期望風(fēng)險(xiǎn)。
而我們知道數(shù)據(jù)的聯(lián)合分布函數(shù)我們是不知道的,所以實(shí)際中,學(xué)習(xí)方法的泛化能力分析往往是通過研究泛化誤差的概率上界進(jìn)行的,簡(jiǎn)稱泛化誤差上界(generalization error bound)。具體來說,就是通過比較兩種學(xué)習(xí)方法的泛化誤差上界的大小來比較它們的優(yōu)劣。
對(duì)二分類問題,當(dāng)假設(shè)空間有有限個(gè)函數(shù)的集合F=f1,f2,…,fd時(shí),對(duì)任意一個(gè)函數(shù)f∈F,至少以概率1?δ,以下不等式成立:
R(f)≤R^(f)+ε(d,N,δ)
其中,ε(d,N,δ)=12N(logd+log1δ)??????????????√
不等式左邊R(f)是泛化誤差,右端即為泛化誤差的上界。R^(f)為訓(xùn)練誤差。
總結(jié)
以上是生活随笔為你收集整理的ML 04、模型评估与模型选择的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ML 05、分类、标注与回归
- 下一篇: ML 06、感知机