交叉驗(yàn)證

1、為什么要進(jìn)行交叉驗(yàn)證?
目的:為了得到可靠穩(wěn)定的模型

交叉驗(yàn)證是一種模型選擇方法,其將樣本的一部分用于訓(xùn)練,另一部分用于驗(yàn)證。因此不僅考慮了訓(xùn)練誤差,同時(shí)也考慮了泛化誤差。

2、交叉驗(yàn)證的概念
交叉驗(yàn)證(Cross Validation),簡(jiǎn)稱CV,它是用來(lái)驗(yàn)證分類器的性能一種統(tǒng)計(jì)分析方法。

基本思想
將原始的數(shù)據(jù)集進(jìn)行分組,一部分作訓(xùn)練集,一部分作為驗(yàn)證集,首先用訓(xùn)練集對(duì)分類器進(jìn)行訓(xùn)練,再用驗(yàn)證集來(lái)測(cè)試訓(xùn)練集得到的模型,以此來(lái)作為評(píng)價(jià)分類器的性能指標(biāo)。

為了減少交叉驗(yàn)證結(jié)果的可變性,對(duì)一個(gè)樣本數(shù)據(jù)集進(jìn)行多次不同的劃分,得到不同的互補(bǔ)子集,進(jìn)行多次交叉驗(yàn)證。取多次驗(yàn)證的平均值作為驗(yàn)證結(jié)果。

PRESS:
在給定的建模樣本中,拿出大部分樣本進(jìn)行建模型,留小部分樣本用剛建立的模型進(jìn)行驗(yàn)證,并求這小部分樣本的驗(yàn)證誤差,記錄它們的平方加和。這個(gè)過(guò)程一直進(jìn)行,直到所有的樣本都被驗(yàn)證了一次而且僅被驗(yàn)證一次。把每個(gè)樣本的預(yù)報(bào)誤差平方加和,叫PRESS(predicted Error Sum of Squares)。

3、交叉驗(yàn)證有哪些方法?
(一)Hold-Out Method
思路:
將原始數(shù)據(jù)分為兩組,一組是訓(xùn)練集,一組是驗(yàn)證集,利用訓(xùn)練集來(lái)訓(xùn)練分類器,然后利用驗(yàn)證集驗(yàn)證模型。進(jìn)行多次劃分,用均值來(lái)表示效能。
優(yōu)點(diǎn):
簡(jiǎn)單,只需要將原始數(shù)據(jù)隨機(jī)的分成兩組就行了。
缺點(diǎn):
(1)沒(méi)有達(dá)到交叉的效果。
(2)隨機(jī)分組,驗(yàn)證集分類的準(zhǔn)確率與原始數(shù)據(jù)分組的關(guān)系很大。
(3)有些數(shù)據(jù)可能從未做過(guò)訓(xùn)練或測(cè)試數(shù)據(jù);而有些數(shù)據(jù)不止一次選為訓(xùn)練或測(cè)試數(shù)據(jù)。

(二)K-fold Cross Validation(K-CV)
思路:
將原始數(shù)據(jù)均分成K組,每個(gè)子集數(shù)據(jù)分別做一次驗(yàn)證集,其余的K-1組子集數(shù)據(jù)作為訓(xùn)練集,這樣會(huì)得到K個(gè)模型,用這K個(gè)模型最終驗(yàn)證集的分類準(zhǔn)確率的平均數(shù)作為此K-CV分類器下的性能指標(biāo)。

K的取值:
一般是大于等于2,只有在原始數(shù)據(jù)集合數(shù)據(jù)量小的時(shí)候才會(huì)取2

優(yōu)點(diǎn):
有效的避免過(guò)擬合和欠擬合

(三)Leave-One-Out Cross Validation(LOO-CV)
思路:
假設(shè)原始數(shù)據(jù)有N個(gè)樣本,其實(shí)LOO-CV也就是N-CV,每個(gè)樣本單獨(dú)的作為驗(yàn)證集,其余的N-1個(gè)樣本作為訓(xùn)練集,所以LOO-CV會(huì)得到N個(gè)模型,用這N個(gè)模型的最終的驗(yàn)證集的分類準(zhǔn)確率的平均數(shù)作為此LOO-CV分類器的性能指標(biāo)。

優(yōu)點(diǎn):
(1)每輪中幾乎所有的樣本都可以用于訓(xùn)練模型,因此能夠使訓(xùn)練的模型最接近樣本真實(shí)分布,評(píng)估的結(jié)果很可靠。
(2)實(shí)驗(yàn)的過(guò)程中沒(méi)有隨機(jī)因素。

缺點(diǎn):
如果樣本量很大,那么需要建立的模型的數(shù)量也很大,計(jì)算成本高。

**4、模型選擇過(guò)程 **
在了解交叉驗(yàn)證之后,簡(jiǎn)單介紹模型的選擇過(guò)程:
通過(guò)采用不同的輸入訓(xùn)練樣本,來(lái)決定機(jī)器學(xué)習(xí)算法中包含的各個(gè)參數(shù)值,叫做模型選擇。
(1)首先準(zhǔn)備q個(gè)候選的模型
(2)對(duì)每個(gè)模型求解它的學(xué)習(xí)結(jié)果
(3)對(duì)學(xué)習(xí)誤差排序,選擇誤差最小的模型作為最終的模型

舉例:將有標(biāo)注的data分為訓(xùn)練集,(交叉)驗(yàn)證集,測(cè)試集三份:
在做模型選擇,更確切的說(shuō)做模型參數(shù)選擇的時(shí)候,這里以多項(xiàng)式kernel的SVM為例,我們需要選擇的參數(shù)是多項(xiàng)式的階數(shù):
1 訓(xùn)練:先用訓(xùn)練集在一次模型、二次模型、三次模型(幾次指的是的z=Zθ(x) 階數(shù))情況下跑一下,然后用數(shù)值優(yōu)化的算法求得在指定階數(shù)情況下,使Training error最小的參數(shù)θ分別是多少

2 參數(shù)尋優(yōu):用交叉驗(yàn)證集在1中得到的每個(gè)模型M(1,θ1)...M(k,θk)...M(n,θn)跑一下,計(jì)算出Cross Validation error,選擇使這個(gè)error最小的模型次數(shù)k

3 最終訓(xùn)練:給定階數(shù)k,訓(xùn)練得出在Training Set+CV Set上,使Training error最小的參數(shù)θ,得到模型M(k,θk')

總結(jié):
利用n-fold交叉驗(yàn)證,是現(xiàn)在做機(jī)器學(xué)習(xí)實(shí)驗(yàn)最常用的做法
(1)數(shù)據(jù)按比例劃分為訓(xùn)練集A、測(cè)試集B
(2)使用訓(xùn)練數(shù)據(jù)A進(jìn)行n-fold驗(yàn)證,訓(xùn)練集分為a1~an共n份,n份中的每一份ai輪流做CV set,其余n-1份作為Training set,這樣訓(xùn)練n次,取n次所得CV error平均值作為一個(gè)模型最終的CV error,以此選出最優(yōu)模型參數(shù)。
(3) 再用整個(gè)訓(xùn)練集A在選出的最優(yōu)模型參數(shù)下訓(xùn)練出一個(gè)模型。
(4)最后在測(cè)試集B上測(cè)試給出結(jié)果。

NG課程小結(jié):
就拿選擇階數(shù)的例子來(lái)說(shuō),如果我們把數(shù)據(jù)集分成了訓(xùn)練集和測(cè)試集,用訓(xùn)練集來(lái)進(jìn)行參數(shù)的確定,用測(cè)試集來(lái)選擇階數(shù)d,再用測(cè)試集測(cè)模型是不準(zhǔn)的;所以我們分成了三部分:訓(xùn)練集、驗(yàn)證集、測(cè)試集。其中驗(yàn)證集做的就是確定階數(shù)d,用測(cè)試集來(lái)查看其泛化能力。

參考資料:
http://blog.csdn.net/chl033/article/details/4671750
http://blog.sina.com.cn/s/blog_688077cf0100zqpj.html
https://www.zhihu.com/question/23561944
http://www.cnblogs.com/wei-li/archive/2011/12/01/2270244.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容