介紹
第一部分 參數(shù)方法——類密度模型參數(shù)估計
第二部分 監(jiān)督學(xué)習(xí)——分類(基于似然的方法)
第三部分 監(jiān)督學(xué)習(xí)——分類(基于判別式的方法)(參數(shù)方法——判別式參數(shù)估計)
第四部分 監(jiān)督學(xué)習(xí)——回歸
第五部分 監(jiān)督學(xué)習(xí)——關(guān)聯(lián)規(guī)則
第六部分 維度規(guī)約(特征的提取和組合)
第七部分 半?yún)?shù)方法
第八部分 非監(jiān)督學(xué)習(xí)——聚類
第九部分 非參數(shù)方法——密度估計
第十部分 非參數(shù)方法——決策樹實現(xiàn)的判別式
第十一部分 多層感知器——非參數(shù)估計器
第十二部分 局部模型
第十三部分 支持向量機(jī)與核機(jī)器
第十四部分 隱馬爾科夫模型
第十五部分 參數(shù)的貝葉斯估計
第十六部分 集成學(xué)習(xí)——組合多學(xué)習(xí)器
第十七部分 增強(qiáng)學(xué)習(xí)
第十八部分 機(jī)器學(xué)習(xí)實驗
第十九部分 特征工程與數(shù)據(jù)預(yù)處理
集成學(xué)習(xí)是由多個學(xué)習(xí)系統(tǒng)組成的模型。在任何應(yīng)用中唯灵,都可以使用一個學(xué)習(xí)算法來解決問題毕荐。每個學(xué)習(xí)算法都是構(gòu)建在一組超參數(shù)或假設(shè)上的某種模型。
但當(dāng)假設(shè)在數(shù)據(jù)上不成立時噩死,這種歸納偏倚就會帶來誤差。學(xué)習(xí)是一個不適定問題,在有限的數(shù)據(jù)上闻蛀,不同的學(xué)習(xí)算法會收斂到不同的解宰僧,并在不同的情況下失效材彪。沒有一個學(xué)習(xí)算法可以在任何領(lǐng)域中總產(chǎn)生最準(zhǔn)確的學(xué)習(xí)器。
通常會試驗多個算法琴儿,然后選擇一個在單獨驗證集上表現(xiàn)最好的段化。而集成學(xué)習(xí)的思想考慮通過合適的方式將多個學(xué)習(xí)器組合起來,不同的學(xué)習(xí)器相互補充造成,獲得更高的準(zhǔn)確率显熏。
這里有兩個基本的問題:
- 如何產(chǎn)生互補的學(xué)習(xí)器——產(chǎn)生差異
- 如何組合各學(xué)習(xí)器的輸出,來最大化準(zhǔn)確率——組合差異
得到有差異的學(xué)習(xí)器——產(chǎn)生差異
有差異的學(xué)習(xí)器采用不同的決策晒屎,使它們可以互補喘蟆。差異性的根本就是不同的假設(shè),不論是算法模型假設(shè)鼓鲁,還是模型超參數(shù)假設(shè)蕴轨。不同的假設(shè)要保證學(xué)習(xí)器至少在各自的專門領(lǐng)域是準(zhǔn)確的,并組合它們骇吭。我們的任務(wù)就是最大化個體學(xué)習(xí)器的準(zhǔn)確率和學(xué)習(xí)器之間的差異橙弱。
可通過以下幾個方面來實現(xiàn)。
不同的算法或超參數(shù)
使用不同的學(xué)習(xí)方法來訓(xùn)練基學(xué)習(xí)器。通過組合多個算法的學(xué)習(xí)器膘螟,擺脫單一決策成福。
或使用相同的學(xué)習(xí)方法,但使用不同的超參數(shù)荆残。如多層感知器的隱藏單元數(shù)奴艾、k近鄰的k值、決策樹中的誤差閾值内斯、支持向量機(jī)中的核函數(shù)蕴潦。是否共享高斯分布的協(xié)方差矩陣是一種假設(shè)偏倚,也就是一種超參數(shù)俘闯。也就是說潭苞,對一個學(xué)習(xí)算法模型的假設(shè)偏倚,都是可調(diào)節(jié)的超參數(shù)真朗。訓(xùn)練數(shù)據(jù)的不同運用
首先此疹,不同的基學(xué)習(xí)器可以使用輸入實例的不同表示,不同的表示反應(yīng)的是實例的不同特征遮婶,不同的學(xué)習(xí)器用來更好地識別這些不同蝗碎。輸入的不同表示往往來自于不同的采集途徑。如語音識別中旗扑,聲學(xué)輸入和口型圖像輸入就屬于不同的輸入表示蹦骑。將關(guān)于同一實例的不同傳感器的的數(shù)據(jù),分別用于不同學(xué)習(xí)器的學(xué)習(xí)臀防,類似于傳感器融合眠菇。
而對于只有一種輸入表示的情況,也可以通過維度拆分袱衷,將輸入的不同維度數(shù)據(jù)用來訓(xùn)練不同的學(xué)習(xí)器捎废。這稱為隨機(jī)子空間方法,可以理解成各學(xué)習(xí)器從不同的視角來考查問題致燥。同時缕坎,這樣還有助于減低維災(zāi)難。
另外一種使用訓(xùn)練數(shù)據(jù)的方法篡悟,是數(shù)據(jù)拆分,將訓(xùn)練集中的不同子集用于不同學(xué)習(xí)器匾寝。通過在給定樣本集上隨機(jī)抽取來實現(xiàn)搬葬,這稱作bagging⊙藁冢或串行地依次訓(xùn)練各學(xué)習(xí)器急凰,使前一個學(xué)習(xí)器上預(yù)測不準(zhǔn)的實例在之后的學(xué)習(xí)器中得到更多的重視。這中思想的方法包括boosting,cascading抡锈。
除了隨機(jī)抽取樣本空間疾忍,還可以通過數(shù)據(jù)空間在劃分局部空間來拆分?jǐn)?shù)據(jù),使每個學(xué)習(xí)器在輸入空間的某一局部空間的實例上訓(xùn)練床三。這就像《局部模型》中介紹的混合專家模型一罩。類似地,糾錯輸出碼將主任務(wù)定義為有基學(xué)習(xí)器實現(xiàn)的若干個自任務(wù)撇簿,將問題空間分為多個子問題空間聂渊。
非常重要的一點是,當(dāng)生成多個學(xué)習(xí)器時四瘫,只要它們各自有合理的準(zhǔn)確性即可汉嗽,而不要求每個都非常地精準(zhǔn)。不必對這些基學(xué)習(xí)器進(jìn)行單獨地優(yōu)化來獲得最佳準(zhǔn)確率找蜜。
采用基學(xué)習(xí)器并不是因為它的準(zhǔn)確性饼暑,而是因為它由簡單性問題構(gòu)成總體問題。
我們要求的是基學(xué)習(xí)器是有差異的洗做,即在不同的實例上是準(zhǔn)確的弓叛,專注于問題的子領(lǐng)域。
通過上面介紹的獲得學(xué)習(xí)器差異的幾種方法竭望,可以看到基學(xué)習(xí)器結(jié)果的組合方式是多樣的墩莫。對于學(xué)習(xí)器用于所有的輸入的情況,那么就要求各個學(xué)習(xí)器處處準(zhǔn)確且處處有差異阎姥。如果不同學(xué)習(xí)器用于輸入空間的不同局部空間淑廊,那么差異性直接通過輸入空間的劃分而得到保證,學(xué)習(xí)器只需要保證它的局部準(zhǔn)確性旧烧。
下面介紹一下模型的組合方案影钉。
模型組合方案——組合差異
組合多基學(xué)習(xí)器來產(chǎn)生最終輸出有不同的方法:
-
多專家組合
各基學(xué)習(xí)器并行工作,可分為全局方法和局部方法掘剪。
全局方法又稱學(xué)習(xí)器融合平委,給定一個輸入,所有學(xué)習(xí)器都產(chǎn)生一個輸出夺谁,并將所有這些輸出進(jìn)行組合廉赔。這種方法的例子包括voting和stacking。
局部方法又稱學(xué)習(xí)器選擇匾鸥,如混合專家模型蜡塌,有一個門控模型,根據(jù)輸入來選擇一個(或幾個)學(xué)習(xí)器來產(chǎn)生輸出勿负。 -
多級組合
多級組合是順序方法馏艾,下一個學(xué)習(xí)器旨在前一個學(xué)習(xí)器預(yù)測不夠準(zhǔn)確的實例上進(jìn)行訓(xùn)練或檢驗。一般基學(xué)習(xí)器按復(fù)雜度遞增排序,在前一個較簡單的學(xué)習(xí)器不夠確信的時候琅摩,使用復(fù)雜的學(xué)習(xí)器(參考《監(jiān)督學(xué)習(xí)——分類(基于似然的方法)》中介紹的拒絕操作)铁孵。采用這種方式的有cascading。
下文中房资,用表示基學(xué)習(xí)器
在給定任意維輸入 x 上的預(yù)測蜕劝。當(dāng)每個學(xué)習(xí)器有 K 個輸出
,
志膀,
熙宇。而組合這些學(xué)習(xí)器輸出仍然有K個值
。
組合學(xué)習(xí)器的常用方法
voting
投票方法是最常用的組合學(xué)習(xí)器的方法溉浙。投票的過程只涉及對有差異的學(xué)習(xí)器的組合烫止,有差異的學(xué)習(xí)器可由任意方式獲得。
組合多個學(xué)習(xí)器最簡單的方法就是投票voting(也成系綜ensemble)戳稽,就是取學(xué)習(xí)器的某種組合馆蠕。
最常用的就是對學(xué)習(xí)器取線性組合。在最簡單的情況惊奇,所有的學(xué)習(xí)器有相同的權(quán)重互躬,對應(yīng)于取平均值的輸出
,權(quán)重相等的加權(quán)和颂郎。
取各學(xué)習(xí)器的中位數(shù)吼渡、最小值、最大值也屬于voting的范疇乓序。中位數(shù)對離群點更魯棒寺酪,最小和最大值分別對應(yīng)悲觀和樂觀的輸出。
此外替劈,也可取各學(xué)習(xí)器的乘積寄雀。這時每個學(xué)習(xí)器都有對輸出的否決權(quán),有一個學(xué)習(xí)器的輸出為0陨献,整體輸出就為0盒犹。
加權(quán)和作為最常使用的方法,決定取權(quán)重的方法是重要的一步眨业。
對于分類急膀,采用權(quán)重相等的簡單投票,就是相對多數(shù)表決龄捡。每個學(xué)習(xí)器相當(dāng)于一個投票者卓嫂,得票最多的類取勝。如果每個投票者能提供它們?yōu)槊總€類投票多少的額外信息(如在各學(xué)習(xí)器上的后驗概率)墅茉,經(jīng)規(guī)范化后,這些信息就可作為加權(quán)權(quán)重。
對于回歸就斤,可以使用簡單平均悍募、加權(quán)平均或中位數(shù)來同和融合傳感器的輸出。中位數(shù)對噪聲比平均值更魯棒洋机。
另一種找到的可能方法是在其他驗證集上評估學(xué)習(xí)器的準(zhǔn)確率坠宴,并使用準(zhǔn)確率信息來確定權(quán)重。使得可以對更準(zhǔn)確的學(xué)習(xí)器賦予更高的權(quán)重绷旗。層疊泛化stacking方法就從數(shù)據(jù)中學(xué)習(xí)權(quán)重喜鼓。
回到投票方法,其還可看做貝葉斯框架下的近似衔肢,通過權(quán)重近似先驗?zāi)P透怕首媚P蜎Q策值近似模型條件似然:
這就像是《貝葉斯估計》的“模型的比較——貝葉斯方法”部分中所介紹的模型先驗與后驗比較〗侵瑁可以用模型先驗作為權(quán)重將各模型的結(jié)果組合在一起隅忿。對應(yīng)到簡單投票中,相當(dāng)于對所有的模型假定一致先驗邦尊。
或通過執(zhí)行一個貝葉斯步驟計算樣本上模型的后驗背桐,從中選取一些高概率的模型。
下面討論學(xué)習(xí)器的個數(shù)對結(jié)果的影響蝉揍。假設(shè)是獨立同分布的链峭,期望
,方差
又沾,那么當(dāng)權(quán)重為 1/L 取平均時弊仪,輸出的期望和方差分別是
可以看出期望(也就是偏倚)沒有改變,而方差隨著學(xué)習(xí)器數(shù)量L的增加會減少捍掺。
在一般情況下撼短,不假設(shè)學(xué)習(xí)器之間獨立,有
這表示如果學(xué)習(xí)器之間正相關(guān)挺勿,那么它們會增加方差曲横。那么可以使用不同的算法和輸入來減小學(xué)習(xí)器之間的正相關(guān)性,增大差異性不瓶,來保證準(zhǔn)確性禾嫉。
這正是voting方法的基本思想:在具有高方差低偏倚的模型上投票,通過組合蚊丐,保持偏倚很小同時通過加權(quán)平均來減低方差熙参。
由此也可以看出,要想使用voting方式集成多學(xué)習(xí)器麦备,需要保證各學(xué)習(xí)器的偏倚較小孽椰。
- 調(diào)整voting
當(dāng)然學(xué)習(xí)器組合并非總是能保證減低誤差昭娩,我們需要基學(xué)習(xí)器總是能提高有用的信息。如果一個基函數(shù)不能提高準(zhǔn)確率黍匾,則可以丟棄它栏渺。另外,如果兩個基學(xué)習(xí)器高度相關(guān)锐涯,那么只需要其中一個磕诊。同時,一個不準(zhǔn)確的學(xué)習(xí)器也可能惡化準(zhǔn)確率纹腌,在voting方法中霎终,對于只有兩類的情況,需要超過一般的學(xué)習(xí)器是準(zhǔn)確的才能得到正確的預(yù)測升薯。因此給定一組學(xué)習(xí)器莱褒,使用所有的學(xué)習(xí)器不是一個好辦法。
類似于《維度規(guī)約》中的思想覆劈,可以通過從基學(xué)習(xí)器集合中選擇子集保礼,和組合學(xué)習(xí)器定義新的學(xué)習(xí)器兩個方向來進(jìn)行處理。
stacking
層疊泛化并不一定(像voting方法一樣)要求基學(xué)習(xí)器的組合是線性的责语,它是通過數(shù)據(jù)來學(xué)習(xí)如何組合基學(xué)習(xí)器的一種方法炮障。將組合器系統(tǒng)表示為,相當(dāng)于另外一個學(xué)習(xí)器坤候。在學(xué)習(xí)參數(shù)
時胁赢,不能使用訓(xùn)練基學(xué)習(xí)器的數(shù)據(jù)來訓(xùn)練組合器,因為基學(xué)習(xí)器可能記憶訓(xùn)練數(shù)據(jù)白筹。
如果是線性模型智末,其約束為
,
徒河,這就是上面提到的用stacking學(xué)習(xí)voting權(quán)重的問題系馆。這時最佳權(quán)重,就是受約束的線性回歸問題顽照,可通過最小化訓(xùn)練集上的平方誤差獲得由蘑。
基學(xué)習(xí)器也可以是非線性函數(shù),這可以用一個多層感知器來實現(xiàn)代兵,作為連接權(quán)重尼酿。
在層疊泛化中,希望基學(xué)習(xí)器盡可能不同植影,使它們可以互補裳擎。為此,最好每個基學(xué)習(xí)器都基于不同的學(xué)習(xí)算法思币。
與voting中固定權(quán)重的固定組合規(guī)則相比鹿响,訓(xùn)練組合規(guī)則更靈活并可能具有更小的偏倚羡微。但由于引入了更多待學(xué)習(xí)的參數(shù),也引入了整體系統(tǒng)方差的風(fēng)險惶我,導(dǎo)致過擬合拷淘。同時需要更多的時間和數(shù)據(jù)進(jìn)行訓(xùn)練。
獲得差異學(xué)習(xí)器的常用方法
bagging
袋裝是通過相同算法得到差異學(xué)習(xí)器的方法指孤。通過隨機(jī)地從訓(xùn)練數(shù)據(jù)集中有放回的抽取
個數(shù)據(jù)實例,每次抽得的不同數(shù)據(jù)集
用于訓(xùn)練各學(xué)習(xí)器贬堵。
由于抽樣都來自于同一個數(shù)據(jù)集恃轩,且是又放回地抽取,所以個數(shù)據(jù)集彼此相似黎做,而又因隨機(jī)性而稍有不同叉跛。
袋裝的方法就是通過在這些稍有不同的訓(xùn)練集上訓(xùn)練來獲得差異性。不同的訓(xùn)練集通過自助法(bootstrap)蒸殿,有放回地從原數(shù)據(jù)中抽取數(shù)據(jù)筷厘。
想通過稍有不同的數(shù)據(jù)集訓(xùn)練得到差異性,就需要算法對數(shù)據(jù)敏感宏所。訓(xùn)練集中很小的變化就會引起學(xué)習(xí)器很大的差異酥艳,即學(xué)習(xí)算法具有高方差。具有這樣不穩(wěn)定性的算法爬骤,常見的有決策樹充石、多層感知器。而且在訓(xùn)練中使用較少的數(shù)據(jù)霞玄,則更容易帶來差異性骤铃。
而對組合由此得到的差異學(xué)習(xí)器,常常采用投票的方法坷剧。在回歸的情況下惰爬,可以中位數(shù)取代加權(quán)和作為結(jié)果,更魯棒惫企。
boosting
在袋裝中撕瞧,基學(xué)習(xí)器的差異性,來源于抽樣的偶然性和學(xué)習(xí)算法的不穩(wěn)定性雅任。而在提升方法中风范,通過前一個學(xué)習(xí)器所犯的錯誤來訓(xùn)練下一個學(xué)習(xí)器,是一種串行方法沪么。
原始的boosting方法硼婿,組合三個弱學(xué)習(xí)器來產(chǎn)生一個強(qiáng)學(xué)習(xí)器。弱學(xué)習(xí)器是錯誤率小于1/2的學(xué)習(xí)器禽车,而強(qiáng)學(xué)習(xí)器具有任意小的錯誤率寇漫。
給定一個大訓(xùn)練集刊殉,隨機(jī)劃分為3部分。首先使用訓(xùn)練
州胳。然后用
驗證
记焊,將被錯誤預(yù)測的全部實例 和 被正確預(yù)測的部分實例做為第二個學(xué)習(xí)器
的訓(xùn)練數(shù)據(jù)。接著再取
驗證
和
栓撞,將
和
預(yù)測不一致的數(shù)據(jù)用來訓(xùn)練
遍膜。
盡管這種方法很成功,但這種原始的boosting方法的缺點是需要一個非常大的訓(xùn)練樣本瓤湘。因為后面分類器需要前面分類器錯誤預(yù)測數(shù)據(jù)作為訓(xùn)練數(shù)據(jù)集瓢颅,這只有在有一個很大的樣本時,才能保證錯誤的數(shù)據(jù)集足夠大弛说。
同樣的目的挽懦,只有基學(xué)習(xí)器是簡單的弱學(xué)習(xí)器時,才能保證有足夠的無分類實例用于后面學(xué)習(xí)器的訓(xùn)練木人。
AdaBoost(自適應(yīng)提升)針對這一問題提出了解決思路信柿,它重復(fù)使用相同的訓(xùn)練集,而不要求很大的數(shù)據(jù)集醒第。并且AdaBoosting還可以組合任意多個基學(xué)習(xí)器渔嚷。目前已有多種AdaBoost的變種。這里介紹最原始的AdaBoost稠曼。
基本思想是將實例抽取的概率修改為誤差的函數(shù)圃伶,根據(jù)實例被錯誤預(yù)測的情況修改實例被抽取的概率。
AdaBoost的過程如下:
令表示實例
被抽取用于訓(xùn)練第
個學(xué)習(xí)器的概率蒲列。在開始時窒朋,對所有實例有
。
下面是迭代步驟——
- 每次從訓(xùn)練集
中按
抽取數(shù)據(jù)集
蝗岖,來訓(xùn)練各學(xué)習(xí)器
侥猩。
- 訓(xùn)練后在全數(shù)據(jù)
上進(jìn)行驗證,用
表示
的錯誤率抵赢。
- 如果
則停止算法欺劳,并丟棄學(xué)習(xí)器
。這時學(xué)習(xí)器個數(shù)
铅鲤。
- 定義
划提,如果
正確地被
分類,那么更新抽樣概率
邢享,否則不變
鹏往。之后再對
進(jìn)行規(guī)范化處理。這相當(dāng)于使得那些正確分類的實例被抽取的概率降低骇塘,錯誤分類的實例被抽取的概率提高伊履。
AdaBoost算法使被誤分類的實例在
的訓(xùn)練中得到更多的重視韩容。通過這種方式,使不同的學(xué)習(xí)器使用稍有差異的訓(xùn)練集訓(xùn)練唐瀑。這種差異不同于bagging群凶,靠的是隨機(jī)性,而是前一個學(xué)習(xí)器的誤差函數(shù)哄辣。
像bagging一樣依靠訓(xùn)練集的差異來獲得學(xué)習(xí)器的差異性请梢,那么AdaBoost同樣需要使用不穩(wěn)定的算法。
AdaBoost提升的決策樹被認(rèn)為是最好的機(jī)器學(xué)習(xí)算法之一力穗。
完成訓(xùn)練后溢陪,AdaBoost同樣采用投票方法組合學(xué)習(xí)器。權(quán)重與基學(xué)習(xí)器的準(zhǔn)確率成正比睛廊。權(quán)重
是在每次學(xué)習(xí)迭代中,通過最小化損失函數(shù)
求得的杉编。
cascading
級聯(lián)是一個基學(xué)習(xí)器的的序列超全。按照各基學(xué)習(xí)器的復(fù)雜度和代價對其排序,使得
的代價高于
邓馒。
其基本思想是初期使用簡單的學(xué)習(xí)器處理大多數(shù)實例嘶朱,而更為復(fù)雜的學(xué)習(xí)器僅用于少數(shù)實例,這樣不至于因為少于復(fù)雜實例帶來的復(fù)雜問題顯著增加總體復(fù)雜度光酣。
作為一種多級方法疏遏,級聯(lián)方法只有在前面的學(xué)習(xí)器都不夠確信時,才使用
救军。對每個學(xué)習(xí)器關(guān)聯(lián)一個置信度财异,當(dāng)
時認(rèn)為
的結(jié)果是確信可用的。其中唱遭,
是置信度閾值戳寸。在分類中,置信度函數(shù)設(shè)置為
拷泽。如果 j 前面的所有學(xué)習(xí)器都不確信疫鹊,而 j 確信時,才使用
司致。也就是對前面的學(xué)習(xí)器予以拒絕的策略拆吆。
對于級聯(lián)方法的訓(xùn)練過程,首先給定一個訓(xùn)練集脂矫,從開始訓(xùn)練
枣耀。然后從另一個驗證集中找到所有
不確信的實例,來構(gòu)成
的訓(xùn)練集庭再。
與AdaBoost不同奕枢,除了選擇誤分類的實例娄昆,還學(xué)習(xí)前面基分類器不確信(拒絕)的實例。這些不確信的后驗不夠高的實例缝彬,即便被正確分類萌焰,但它們與判別式之間的距離(邊緣)不夠大。
最后對于那些少數(shù)沒有被任何基分類器覆蓋的實例谷浅,為了不增加基分類器的個數(shù)扒俯,這些實例被作為異常保存下來,并通過一個非參數(shù)分類器(如k-NN)來處理一疯。