集成模型的五個(gè)基礎(chǔ)問題

責(zé)任編輯:editor006

作者:SUNIL RAY

2015-10-21 16:06:35

摘自:Analytics Vidhya

如果你曾經(jīng)參加過數(shù)據(jù)科學(xué)競賽,你一定意識到集成模型(Ensemble Modeling)舉足輕重的作用。集成方法常用于解決數(shù)據(jù)科學(xué)問題方面的一個(gè)非常好的例子就是隨機(jī)森林算法(使用多層分類回歸樹模型)。

引言

如果你曾經(jīng)參加過數(shù)據(jù)科學(xué)競賽,你一定意識到集成模型(Ensemble Modeling)舉足輕重的作用。事實(shí)上,集成模型提供了最有說服力的方式之一,來建立高度精確的預(yù)測模型。Bagging和Boosting算法進(jìn)一步加強(qiáng)了這一方法的精確性。

所以,你下次構(gòu)建預(yù)測模型的時(shí)候,考慮使用這種算法吧。你肯定會贊同我的這個(gè)建議。如果你已經(jīng)掌握了這種方法,那么太棒了。我很想聽聽你在集成模型上的經(jīng)驗(yàn),請把你的經(jīng)驗(yàn)分享在下面的評論區(qū)。

對于其他人,我將會分享一些集成模型中常見的問題。如果你想評估一個(gè)人對集成模型方面的知識程度,你可以大膽地提出這些問題,來檢查他/她的知識水平。另外,這些都是最簡單的問題,因此你不希望他們回答錯(cuò)誤!

  哪些是常見的問題(關(guān)于集成模型)?

在分析各種數(shù)據(jù)科學(xué)論壇后,我已經(jīng)確定了5個(gè)集成模型最常見的問題。這些問題與剛接觸集成模型的數(shù)據(jù)科學(xué)家高度相關(guān)。以下就是這些問題:

什么是集成模型?

什么是bagging,boosting和stacking?

我們可以集成多個(gè)具有相同機(jī)器學(xué)習(xí)算法的模型嗎?

我們?nèi)绾未_定不同模型的權(quán)重?

集成模型的好處是什么?

1、什么是集成模型?

我們先從解決一個(gè)分類問題來理解它。

場景問題:建立垃圾郵件過濾規(guī)則。

  解決方案:我們可以制定各種垃圾郵件分類規(guī)則,我們來看看其中的幾個(gè):

1、垃圾郵件

郵件少于20個(gè)單詞;

只有圖片(宣傳圖片);

具有某些關(guān)鍵詞,比如“賺大錢”和“減肥”;

許多拼寫錯(cuò)誤的單詞。2、非垃圾郵件

從經(jīng)過驗(yàn)證域名發(fā)來的郵件;

來自家庭成員或者郵件聯(lián)系人的郵件

在上面,我已經(jīng)列出了一些過濾垃圾郵件的常見規(guī)則。你認(rèn)為這些規(guī)則能單獨(dú)預(yù)測正確的分類嗎?

大部分人可能都會認(rèn)為不能——事實(shí)也是這樣!與使用單個(gè)規(guī)則進(jìn)行預(yù)測相比,結(jié)合使用這些規(guī)則會產(chǎn)生魯棒的預(yù)測效果。這就是集成模型的原則。集成模型集合使用多個(gè)“單獨(dú)的”(不同的)模型,并提供出色的預(yù)測能力。

如果用現(xiàn)實(shí)生活中的例子說明集成模型,就比如一群人總能做出比單個(gè)人要好的決策,特別是當(dāng)群成員的背景各不相同時(shí)。對于機(jī)器學(xué)習(xí)來說也是這樣?;旧希墒且环N監(jiān)督式學(xué)習(xí)技術(shù),它將多個(gè)弱學(xué)習(xí)模塊/模型集成起來,產(chǎn)生強(qiáng)學(xué)習(xí)模塊。如果我們集成低相關(guān)性模型的話,集成模型的工作效果會更好。

集成方法常用于解決數(shù)據(jù)科學(xué)問題方面的一個(gè)非常好的例子就是隨機(jī)森林算法(使用多層分類回歸樹模型)。在分類新對象上,比使用單個(gè)分類回歸樹性能要更好,每一棵樹都給類進(jìn)行“投票”,然后森林選擇得票最高(在森林所有的樹中)的作為目標(biāo)分類。如果是回歸問題,那么將取不同樹的輸出均值。

你也可以參考這篇文章《集成學(xué)習(xí)基礎(chǔ)通俗簡介》來了解更多集成模型知識。

2、什么是Bagging,Boosting和Stacking?

讓我們分別來看看這三個(gè)是什么,并了解這些術(shù)語之間的區(qū)別:

Bagging(Bootstrap匯總)是一種集成方法。首先,我們創(chuàng)建隨機(jī)訓(xùn)練數(shù)據(jù)集樣本(訓(xùn)練數(shù)據(jù)集的子集)。然后我們?yōu)槊總€(gè)樣本建立分類器。最后,這些多分類器的結(jié)果將結(jié)合起來,使用平均或多數(shù)投票。Bagging有助于降低方差。

Boosting提供了預(yù)測模塊的連續(xù)學(xué)習(xí)功能。第一個(gè)預(yù)測模塊從整個(gè)數(shù)據(jù)集上學(xué)習(xí),下一個(gè)預(yù)測模塊在前一個(gè)的性能基礎(chǔ)上在訓(xùn)練數(shù)據(jù)集上學(xué)習(xí)。首先對原始數(shù)據(jù)集進(jìn)行分類,并給每個(gè)觀測給予同樣的權(quán)重。如果第一個(gè)學(xué)習(xí)模塊錯(cuò)誤預(yù)測了類,那么將會賦予錯(cuò)誤分類觀測較高的權(quán)重。這個(gè)過程將反復(fù)迭代,不斷添加分類學(xué)習(xí)模塊,直到達(dá)到模型數(shù)量或者某個(gè)準(zhǔn)確度。Boosting有比Bagging更好的預(yù)測精準(zhǔn)度,但它有時(shí)也會過度擬合訓(xùn)練數(shù)據(jù)。

Boosting最常見的例子是AdaBoost和梯度提升。你也可以看看這些文章來進(jìn)一步了解Boosting算法。

Getting smart with Machine Learning – AdaBoost and Gradient Boost

Learn Gradient Boosting Algorithm for better predictions (with codes in R)

Stacking工作分為兩個(gè)階段。首先,我們使用多個(gè)基礎(chǔ)分類器來預(yù)測分類。然后,一個(gè)新的學(xué)習(xí)模塊與它們的預(yù)測結(jié)果結(jié)合起來,來降低泛化誤差。

  3、我們可以集成多個(gè)具有相同機(jī)器學(xué)習(xí)算法的模型嗎?

是的,我們可以集成多個(gè)具有相同機(jī)器學(xué)習(xí)算法的模型,但是結(jié)合多個(gè)不同算法生成的預(yù)測結(jié)果通常會得到更好的預(yù)測。這是由于彼此間的多樣化或獨(dú)立性的本質(zhì)。比如,結(jié)合隨機(jī)森林,KNN,樸素貝葉斯得到最終的預(yù)測結(jié)果集比結(jié)合三個(gè)隨機(jī)森林模型得到的結(jié)果要更強(qiáng)。創(chuàng)建一個(gè)強(qiáng)大的集成模型的關(guān)鍵是模型的多樣性。一個(gè)由兩種非常相似技術(shù)組成的集成模型性能要比由具有多樣性模型集組成的集成模型差。

案例:假如我們有三個(gè)模型(A,B和C)。A,B,C的預(yù)測準(zhǔn)確率分別為85%,80%,55%。但是A和B高度相關(guān),而C與A或B都不怎么相關(guān)。那么我們應(yīng)該將A和B集成起來嗎?不,我們不能這么做,因?yàn)檫@兩個(gè)模型高度相關(guān)。因此,我們不能將這兩者集成,因?yàn)檫@對降低泛化誤差沒有幫助。我更傾向于集成A和C或者B和C。

4、我們?nèi)绾未_定不同模型的權(quán)重?

集成模型的一個(gè)最常見的問題就是找到每個(gè)基礎(chǔ)模型的最佳權(quán)重。在一般情況下,我們假定所有基礎(chǔ)模型具有相同的權(quán)重,然后采取預(yù)測的平均值作為結(jié)果。但是,這是最好的解決方案嗎?

找到各個(gè)基礎(chǔ)學(xué)習(xí)模塊的最佳權(quán)重集成有許多方法。這些方法對找到合適的權(quán)重提供了公平的依據(jù)。我在下面將它們羅列了出來:

計(jì)算基礎(chǔ)學(xué)習(xí)模塊之間的共線性表,然后基于這張表來確定用于集成的基礎(chǔ)模型。之后,根據(jù)確定的基礎(chǔ)模型的交叉驗(yàn)證得分(得分之比)來確定權(quán)重。

找到返回基礎(chǔ)學(xué)習(xí)模塊最優(yōu)權(quán)重的算法。你可以參考這篇文章 Finding Optimal Weights of Ensemble Learner using Neural Network來了解此算法。

我們同樣可以使用以下方法來解決這個(gè)問題:

Forward Selection of learners

Selection with Replacement

Bagging of ensemble methods

你也同時(shí)可以看看Kaggle/數(shù)據(jù)科學(xué)競賽勝出的解決方案,以了解解決此問題的其他方法。

5、集成模型的好處是什么?

集成模型有兩大好處:

更好的預(yù)測;

更穩(wěn)定的模型。

集成多個(gè)模型會比其他模型有更少的噪聲。在金融領(lǐng)域,我們稱為“多樣化”,投資許多股票要比投資一個(gè)股票的變化風(fēng)險(xiǎn)要小。這也是為什么使用集成模型要比使用單獨(dú)模型效果要好。使用集成模型需要注意的一個(gè)問題是避免過擬合,雖然Bagging在很大程度上對此進(jìn)行了處理。

后記

在這篇文章中,我們了解了5個(gè)關(guān)于集成模型常常被問及的問題。在回答這些問題時(shí),我們討論了“集成模型”,“集成方法”,“為什么我們要集成不同的模型”,“確定最優(yōu)集成權(quán)重的方法”和“好處”。我建議你看看數(shù)據(jù)科學(xué)競賽前5名的解決方案,看看他們的集成方式以獲得更深入的理解,然后多多實(shí)踐。這會幫助你理解什么方法行得通,什么方法行不通。

你認(rèn)為這篇文章有用嗎?你用過其他方法找到最優(yōu)權(quán)重嗎?或者確定合適的基礎(chǔ)學(xué)習(xí)模塊?歡迎你對此進(jìn)行評論。

如果你喜歡這篇文章并且想繼續(xù)數(shù)據(jù)分析學(xué)習(xí),訂閱我們的郵件,關(guān)注我們的Twitter或Facebook。

鏈接已復(fù)制,快去分享吧

企業(yè)網(wǎng)版權(quán)所有?2010-2024 京ICP備09108050號-6京公網(wǎng)安備 11010502049343號