【機(jī)器學(xué)習(xí)基礎(chǔ)】混合和裝袋

融合模型(Aggregation Model)

如果我們已經(jīng)得到了一些特征或者假設(shè),它們和我們做機(jī)器學(xué)習(xí)的目標(biāo)有若干的一致性的話,我們可以將這些假設(shè)綜合起來,讓預(yù)測效果變得更好,這樣的模型被稱為融合模型。
融合模型是通過混合(mix)和組合(combine)一些假設(shè)的方式,得到更好的預(yù)測結(jié)果。
下面列舉了四種不同的混合組合方式,并給出了數(shù)學(xué)表示形式:

  1. 當(dāng)有多個假設(shè)時,我們選擇檢驗(yàn)誤差最小的假設(shè)作為我們最信任的目標(biāo)函數(shù):


  1. 我們現(xiàn)在有多個假設(shè),我們可以給每個假設(shè)一個投票的權(quán)利,綜合所有假設(shè)的投票結(jié)果:


  2. 現(xiàn)在有多個假設(shè),我們可以根據(jù)對于不同假設(shè)的信任程度,給予不同假設(shè)不同的票數(shù),這種情況綜合了前兩種情況:


  3. 如果可以給每個假設(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é)果實(shí)際上反應(yīng)了少數(shù)服從多數(shù)的原則,通過多數(shù)意見修正少數(shù)的意見,少數(shù)的意見可能是有一些錯誤。
最終,通過民主投票的機(jī)制得到一個更加復(fù)雜的分類邊界。


用于回歸問題的Uniform Blending


在回歸問題中,最終的假設(shè)其實(shí)是一系列假設(shè)的平均。
這里的大概意思是,對于同樣的待預(yù)測數(shù)據(jù)x,有些假設(shè)低估了實(shí)際的目標(biāo),gt(x) < f(x);而有些假設(shè)高估了實(shí)際的目標(biāo),gt(x) > f(x)。這樣平均下來的結(jié)果,可能有低估有高估,就減少了誤差的結(jié)果,平均下來得到一個更穩(wěn)定、更準(zhǔn)確的估計(jì)方式。

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ù)雜度代價很大,所以我們要使用最小化驗(yàn)證誤差進(jìn)行g(shù)的選擇。所以,如果使用Ein來得到Linear Blending的gt就需要付出更大的復(fù)雜度代價了,很容易出現(xiàn)過擬合的問題。
實(shí)際上,Blending算法通過選擇使得驗(yàn)證誤差Eval最小的αt,而不是Ein;同時,為了讓驗(yàn)證誤差Eval和之前得到的gt相互獨(dú)立,故之前得到的gt是從訓(xùn)練集合Etrain中得到的gt-。

具體的流程是這樣的:

從比較小的Dtrain數(shù)據(jù)集中得到一堆g1-,g2-,...,gT-,然后將驗(yàn)證集合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-

同樣的道理,我們也可以使用同樣的流程來運(yùn)用非線性的模型求解這個問題,這樣就可以使得模型的能力更強(qiáng),進(jìn)而延伸到有條件的Blending模型(conditional blending)上,其缺點(diǎn)是可能出現(xiàn)過擬合的問題

如果上面不太明白gg-的區(qū)別,請看一下【機(jī)器學(xué)習(xí)基礎(chǔ)】驗(yàn)證小結(jié)的介紹。

Bagging(Bootstrap Aggregation)

之前我們假設(shè)事先已經(jīng)得到一對g,然后去做Blending的動作,現(xiàn)在我們可不可以一邊學(xué)習(xí)g,一邊將這些g綜合起來?
如何得到不同的g
首先,我們要考慮一下可以通過什么方式得到不同的g:

  1. 從不同的模型得到不同的g
  1. 同一個模型,不同的參數(shù)得到不同的g
  2. 如果是算法本來是有隨機(jī)的部分,可以得到不同的g
  3. 不一樣的數(shù)據(jù)集得到不同的g,比如在進(jìn)行交叉驗(yà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)計(jì)學(xué)中bootstrapping方法來根據(jù)現(xiàn)有數(shù)據(jù)模擬生成新的數(shù)據(jù)。

bootstrapping

bootstrap采樣的數(shù)據(jù)是通過在原有N個數(shù)據(jù)中隨機(jī)平均地取出,記錄下來之后再放回去重新抽取,這樣取N次之后,得到的數(shù)據(jù)在統(tǒng)計(jì)學(xué)上稱為bootstrap sample。

Bagging


bootstrap aggregation(BAGging)的方法是通過bootstapping的機(jī)制生成一系列不同的gt,然后這些gt用Uniform的方式投票,綜合起來。

舉例

下面的例子是用Pocket演算法求出的分類邊界,這里的步驟是用boostrap的方法得到不同的數(shù)據(jù)集,然后對每一筆數(shù)據(jù)集運(yùn)用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.itdecent.cn/users/2bd9b48f6ea8/latest_articles)
百度搜索jasonding1354進(jìn)入我的博客主頁

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

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

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