融合模型(Aggregation Model)
如果我們已經(jīng)得到了一些特征或者假設(shè),它們和我們做機(jī)器學(xué)習(xí)的目標(biāo)有若干的一致性的話框仔,我們可以將這些假設(shè)綜合起來,讓預(yù)測效果變得更好鲫惶,這樣的模型被稱為融合模型习瑰。
融合模型是通過混合(mix)和組合(combine)一些假設(shè)的方式,得到更好的預(yù)測結(jié)果抡笼。
下面列舉了四種不同的混合組合方式苏揣,并給出了數(shù)學(xué)表示形式:
當(dāng)有多個假設(shè)時,我們選擇檢驗誤差最小的假設(shè)作為我們最信任的目標(biāo)函數(shù):
-
我們現(xiàn)在有多個假設(shè)推姻,我們可以給每個假設(shè)一個投票的權(quán)利平匈,綜合所有假設(shè)的投票結(jié)果:
-
現(xiàn)在有多個假設(shè),我們可以根據(jù)對于不同假設(shè)的信任程度藏古,給予不同假設(shè)不同的票數(shù)增炭,這種情況綜合了前兩種情況:
-
如果可以給每個假設(shè)指定一個函數(shù)作為系數(shù),這個函數(shù)說明了在不同的條件下拧晕,票數(shù)的情況:
舉例
如果現(xiàn)在有一些比較弱的假設(shè)(如下圖中隙姿,只能進(jìn)行橫軸和縱軸的分類平面),如果我們能將這些弱的分類器組合起來厂捞,就可以把數(shù)據(jù)有效的分隔開输玷,得到一個強(qiáng)的分類器(弱分類器的組合)。
融合模型使得模型的能力更加強(qiáng)大靡馁,通過組合弱分類器的形式欲鹏,類似之前介紹的特征轉(zhuǎn)換的能力;而通過組合和混合臭墨,得到了一個泛化能力更強(qiáng)的假設(shè)赔嚎,又類似之前介紹的正則化的作用。所以,融合模型將特征轉(zhuǎn)換和正則化結(jié)合起來尤误,一個合理的融合模型侠畔,從理論上是可以得到一個很好的假設(shè)的。
Blending
用于分類問題的Uniform Blending
這里像上面描述的那樣袄膏,通過每個假設(shè)投票的結(jié)果践图,得到對于每個數(shù)據(jù)的預(yù)測掺冠。這個投票的結(jié)果實際上反應(yīng)了少數(shù)服從多數(shù)的原則沉馆,通過多數(shù)意見修正少數(shù)的意見,少數(shù)的意見可能是有一些錯誤德崭。
最終斥黑,通過民主投票的機(jī)制得到一個更加復(fù)雜的分類邊界。
用于回歸問題的Uniform Blending
在回歸問題中眉厨,最終的假設(shè)其實是一系列假設(shè)的平均锌奴。
這里的大概意思是,對于同樣的待預(yù)測數(shù)據(jù)x憾股,有些假設(shè)低估了實際的目標(biāo)鹿蜀,gt(x) < f(x);而有些假設(shè)高估了實際的目標(biāo),gt(x) > f(x)服球。這樣平均下來的結(jié)果茴恰,可能有低估有高估,就減少了誤差的結(jié)果斩熊,平均下來得到一個更穩(wěn)定往枣、更準(zhǔn)確的估計方式。
Uniform Blending的理論分析
我們這里分析一下任意一個gt(x)與目標(biāo)函數(shù)的均方差的平均和綜合之后的假設(shè)G與目標(biāo)函數(shù)的均方差的關(guān)系粉渠。
得到的這個式子告訴我們分冈,avg((gt-f)2)和(G-f)2是有關(guān)系的,中間差了一個avg((gt-G)^2)霸株。
以此類推雕沉,對于測試數(shù)據(jù)集,我們分析一下預(yù)測誤差去件,得到下面的式子坡椒。說明Eout(gt)的平均要比Eout(G)大,這說明理論上Uniform Blending的誤差要比gt的平均預(yù)測誤差更小箫攀,預(yù)測效果也更好肠牲。
小結(jié)
現(xiàn)在假設(shè)每次從一組數(shù)據(jù)分布中抽取N筆數(shù)據(jù)構(gòu)造gt,平均T個gt靴跛,得到G缀雳。如果對這一動作取極限,得到期望值g hat梢睛。
我們下面用g hat代替上一小節(jié)中的G肥印,得到gt和g hat的關(guān)系识椰。
- g_hat代表了一些gt的共同意見,共識深碱,consensus
- avg(Eout(gt))代表了該算法作用于不同的數(shù)據(jù)集的平均表現(xiàn)腹鹉,是演算法表現(xiàn)的期望值
- avg(ε(gt-g_hat)^2)代表了gt與共識差別多大,說明了不同gt的意見有多么不一樣敷硅,多么分散功咒,稱為variance
- Eout(g_hat)代表了共識的表現(xiàn)如何,稱為bias
我們可以知道平均的目的就是想辦法消除variance的過程绞蹦,得到更穩(wěn)定的表現(xiàn)力奋。
Linear Blending
假設(shè)現(xiàn)在我們已經(jīng)得到一些假設(shè)gt,Linear Blending是分配給不同的gt不同的票數(shù)幽七,即給gt不同權(quán)重αt景殷。最終得到的是gt的線性組合。
(1)得到使得模型訓(xùn)練誤差最小的α
那么我們該如何得到最好的αt呢?一般的思路自然是要使得訓(xùn)練誤差最小的αt,即min Ein(α)乌奇。
上面的式子和之前介紹過的進(jìn)行特征轉(zhuǎn)換后的線性回歸模型很類似,這里要求αt>=0這個限制條件绩蜻。這樣我們可以將gt(·)當(dāng)做是特征轉(zhuǎn)換,然后利用線性回歸模型的方式求解α就可以了梁厉。
(2)忽略α的限制條件
在之前的線性回歸模型中辜羊,我們沒有用到系數(shù)的限制條件,這里我們該如何轉(zhuǎn)化αt>=0這個限制條件的問題呢词顾?
上面的式子告訴我們八秃,當(dāng)αt < 0的時候,我們可以將αt·gt(x)看做是一個正的系數(shù)|αt|乘上一個反向的gt肉盹。
我們可以設(shè)想二元分類的情況昔驱,如果有一個假設(shè),其錯誤率是99%上忍,那么當(dāng)我們反過來用的時候骤肛,可以得到一個錯誤為1%的假設(shè),即正確率為99%的假設(shè)窍蓝。從這個角度來看腋颠,我們可以不用在意αt的正負(fù)問題。
(3)gt的選擇
我們使用Blending算法吓笙,需要一些gt淑玫,那么gt通常是怎么得到呢?一般的,g從不同的模型絮蒿,通過求最好的Ein得到的尊搬。
但是通過最小化Ein的方式進(jìn)行選擇最好的gt,需要付出復(fù)雜度代價很大土涝,所以我們要使用最小化驗證誤差進(jìn)行g(shù)的選擇佛寿。所以,如果使用Ein來得到Linear Blending的gt就需要付出更大的復(fù)雜度代價了但壮,很容易出現(xiàn)過擬合的問題冀泻。
實際上,Blending算法通過選擇使得驗證誤差Eval最小的αt
茵肃,而不是Ein腔长;同時袭祟,為了讓驗證誤差Eval和之前得到的gt
相互獨立验残,故之前得到的gt
是從訓(xùn)練集合Etrain
中得到的gt-
。
具體的流程是這樣的:
從比較小的
Dtrain
數(shù)據(jù)集中得到一堆g1-
巾乳,g2-
您没,...,gT-
胆绊,然后將驗證集合Dval
中的數(shù)據(jù)通過g-
轉(zhuǎn)換成Z空間的數(shù)據(jù)
Linear Blending可以通過線性模型學(xué)習(xí)經(jīng)過轉(zhuǎn)換得到的(zn,yn)氨鹏,最后輸出的是通過g-
得到的α
,和使用所有現(xiàn)有數(shù)據(jù)訓(xùn)練得到的g
而不再是g-
同樣的道理,我們也可以使用同樣的流程來運用非線性的模型求解這個問題压状,這樣就可以使得模型的能力更強(qiáng)仆抵,進(jìn)而延伸到有條件的Blending模型(conditional blending)上,其缺點是可能出現(xiàn)過擬合的問題
如果上面不太明白g
和g-
的區(qū)別种冬,請看一下【機(jī)器學(xué)習(xí)基礎(chǔ)】驗證小結(jié)的介紹镣丑。
Bagging(Bootstrap Aggregation)
之前我們假設(shè)事先已經(jīng)得到一對g
,然后去做Blending的動作娱两,現(xiàn)在我們可不可以一邊學(xué)習(xí)g
莺匠,一邊將這些g
綜合起來?
如何得到不同的g
首先十兢,我們要考慮一下可以通過什么方式得到不同的g:
- 從不同的模型得到不同的g
- 同一個模型趣竣,不同的參數(shù)得到不同的g
- 如果是算法本來是有隨機(jī)的部分,可以得到不同的g
- 不一樣的數(shù)據(jù)集得到不同的g旱物,比如在進(jìn)行交叉驗證的時候遥缕,不一樣的數(shù)據(jù)集切割可以得到不一樣的g-
我們能不能通過一份數(shù)據(jù)得到不同的g呢?這就是我們接下來要做的工作宵呛。
再次回顧一下之前介紹的理論結(jié)果单匣,即演算法的表現(xiàn)可以分成Bias和Variance。
這個理論背后的意義是,大家的共識比單一的意見(g)要好封孙。
我們在之前的推導(dǎo)中要求有一組不同的數(shù)據(jù)迹冤,但是我們現(xiàn)在只有一筆數(shù)據(jù)可用,那么我們該如何做呢虎忌?
在上面的式子中的g的平均(g拔),是通過無限個數(shù)據(jù)集得到的g泡徙,然后進(jìn)行平均;為了近似g的平均膜蠢,我們使用有限個堪藐,但是很大的數(shù)量T代替;其次挑围,利用統(tǒng)計學(xué)中bootstrapping方法來根據(jù)現(xiàn)有數(shù)據(jù)模擬生成新的數(shù)據(jù)礁竞。
bootstrapping
bootstrap采樣的數(shù)據(jù)是通過在原有N個數(shù)據(jù)中隨機(jī)平均地取出,記錄下來之后再放回去重新抽取杉辙,這樣取N次之后模捂,得到的數(shù)據(jù)在統(tǒng)計學(xué)上稱為bootstrap sample。
Bagging
bootstrap aggregation(BAGging)的方法是通過bootstapping的機(jī)制生成一系列不同的
gt
蜘矢,然后這些gt
用Uniform的方式投票狂男,綜合起來。
舉例
下面的例子是用Pocket演算法求出的分類邊界品腹,這里的步驟是用boostrap的方法得到不同的數(shù)據(jù)集岖食,然后對每一筆數(shù)據(jù)集運用Pocket算法,讓每個Pocket算法跑1000次舞吭,得到25個分類線(灰色線)泡垃,將這些分類線綜合起來得到最終的非線性的邊界(黑色線)。
轉(zhuǎn)載請注明作者Jason Ding及其出處
GitCafe博客主頁(http://jasonding1354.gitcafe.io/)
Github博客主頁(http://jasonding1354.github.io/)
CSDN博客(http://blog.csdn.net/jasonding1354)
簡書主頁(http://www.reibang.com/users/2bd9b48f6ea8/latest_articles)
百度搜索jasonding1354進(jìn)入我的博客主頁