0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

機(jī)器學(xué)習(xí)算法之隨機(jī)森林算法詳解及工作原理圖解

nlfO_thejiangme ? 來源:未知 ? 作者:龔婷 ? 2018-03-14 16:10 ? 次閱讀

隨機(jī)森林是一種靈活且易于使用的機(jī)器學(xué)習(xí)算法,即便沒有超參數(shù)調(diào)優(yōu),也可以在大多數(shù)情況下得到很好的結(jié)果。它也是最常用的算法之一,因?yàn)樗芎?jiǎn)易,既可用于分類也能用于回歸任務(wù)。 在這篇文章中,你將了解到隨機(jī)森林算法的工作原理以及適用范圍。

機(jī)器學(xué)習(xí)算法之隨機(jī)森林算法工作原理

隨機(jī)森林是一種有監(jiān)督學(xué)習(xí)算法。 就像你所看到的它的名字一樣,它創(chuàng)建了一個(gè)森林,并使它擁有某種方式隨機(jī)性。 所構(gòu)建的“森林”是決策樹的集成,大部分時(shí)候都是用“bagging”方法訓(xùn)練的。 bagging方法,即bootstrap aggregating,采用的是隨機(jī)有放回的選擇訓(xùn)練數(shù)據(jù)然后構(gòu)造分類器,最后組合學(xué)習(xí)到的模型來增加整體的效果。

簡(jiǎn)而言之:隨機(jī)森林建立了多個(gè)決策樹,并將它們合并在一起以獲得更準(zhǔn)確和穩(wěn)定的預(yù)測(cè)。隨機(jī)森林的一大優(yōu)勢(shì)在于它既可用于分類,也可用于回歸問題,這兩類問題恰好構(gòu)成了當(dāng)前的大多數(shù)機(jī)器學(xué)習(xí)系統(tǒng)所需要面對(duì)的。 接下來,將探討隨機(jī)森林如何用于分類問題,因?yàn)榉诸愑袝r(shí)被認(rèn)為是機(jī)器學(xué)習(xí)的基石。 下圖,你可以看到兩棵樹的隨機(jī)森林是什么樣子的:

除了少數(shù)例外,隨機(jī)森林分類器使用所有的決策樹分類器以及bagging 分類器的超參數(shù)來控制整體結(jié)構(gòu)。 與其先構(gòu)建bagging分類器,并將其傳遞給決策樹分類器,您可以直接使用隨機(jī)森林分類器類,這樣對(duì)于決策樹而言,更加方便和優(yōu)化。要注意的是,回歸問題同樣有一個(gè)隨機(jī)森林回歸器與之相對(duì)應(yīng)。

隨機(jī)森林算法中樹的增長(zhǎng)會(huì)給模型帶來額外的隨機(jī)性。與決策樹不同的是,每個(gè)節(jié)點(diǎn)被分割成最小化誤差的最佳特征,在隨機(jī)森林中我們選擇隨機(jī)選擇的特征來構(gòu)建最佳分割。因此,當(dāng)您在隨機(jī)森林中,僅考慮用于分割節(jié)點(diǎn)的隨機(jī)子集,甚至可以通過在每個(gè)特征上使用隨機(jī)閾值來使樹更加隨機(jī),而不是如正常的決策樹一樣搜索最佳閾值。這個(gè)過程產(chǎn)生了廣泛的多樣性,通??梢缘玫礁玫哪P?。

一個(gè)更容易理解算法的例子

想象一下,一個(gè)名叫安德魯?shù)娜耍胫酪荒甑募倨诼眯兄兴麘?yīng)該去哪些地方。他會(huì)向了解他的朋友們咨詢建議。

起初,他去尋找一位朋友,這位朋友會(huì)問安德魯他曾經(jīng)去過哪些地方,他喜歡還是不喜歡這些地方?;谶@些回答就能給安德魯一些建議,這便是一種典型的決策樹算法。

朋友通過安德魯?shù)幕卮?,為其制定出一些?guī)則來指導(dǎo)應(yīng)當(dāng)推薦的地方。隨后,安德魯開始尋求越來越多朋友們的建議,他們會(huì)問他不同的問題,并從中給出一些建議。 最后,安德魯選擇了推薦最多的地方,這便是典型的隨機(jī)森林算法。

機(jī)器學(xué)習(xí)算法之隨機(jī)森林算法的特征的重要性

隨機(jī)森林算法的另一個(gè)優(yōu)點(diǎn)是可以很容易地測(cè)量每個(gè)特征對(duì)預(yù)測(cè)的相對(duì)重要性。 Sklearn為此提供了一個(gè)很好的工具,它通過查看使用該特征減少了森林中所有樹多少的不純度,來衡量特征的重要性。它在訓(xùn)練后自動(dòng)計(jì)算每個(gè)特征的得分,并對(duì)結(jié)果進(jìn)行標(biāo)準(zhǔn)化,以使所有特征的重要性總和等于1。

如果你不了解決策樹是如何工作對(duì),也不知道什么是葉子或節(jié)點(diǎn),可以參考維基百科的描述:在決策樹中,每個(gè)內(nèi)部節(jié)點(diǎn)代表對(duì)一類屬性的“測(cè)試”(例如,拋硬幣的結(jié)果是正面還是反面),每個(gè)分支代表測(cè)試的結(jié)果,每個(gè)葉節(jié)點(diǎn)代表一個(gè)類標(biāo)簽(在計(jì)算所有屬性之后作出的決定)。葉子就是沒有下一分支的節(jié)點(diǎn)。

通過查看特征的重要性,您可以知道哪些特征對(duì)預(yù)測(cè)過程沒有足夠貢獻(xiàn)或沒有貢獻(xiàn),從而決定是否丟棄它們。這是十分重要的,因?yàn)橐话愣詸C(jī)器學(xué)習(xí)擁有的特征越多,模型就越有可能過擬合,反之亦然。

下面你可以看到一個(gè)表格和一個(gè)可視化圖表,顯示了13個(gè)特征的重要性,我在有監(jiān)督分類項(xiàng)目中使用了kaggle上著名的Titanic 數(shù)據(jù)集。

決策樹與隨機(jī)森林的區(qū)別

正如我先前提到的,隨機(jī)森林是決策樹的集合,但仍有一些區(qū)別。

如果您將帶有特征和標(biāo)簽的訓(xùn)練數(shù)據(jù)集輸入到?jīng)Q策樹中,它將制定一些規(guī)則集,用于預(yù)測(cè)。

例如,如果您想預(yù)測(cè)某人是否會(huì)點(diǎn)擊在線廣告,可以收集該廣告的過去點(diǎn)擊人員以及能夠描述其做決定的特征。一旦你將這些特征和標(biāo)簽放入決策樹中,它會(huì)生成節(jié)點(diǎn)和一些規(guī)則,然后你就可以預(yù)測(cè)廣告是否會(huì)被點(diǎn)擊。但決策樹通常通過計(jì)算信息增益和基尼指數(shù)來生成節(jié)點(diǎn)和規(guī)則時(shí),相比之下,隨機(jī)森林則是隨機(jī)的。

另一個(gè)區(qū)別是“深度”決策樹往往會(huì)遭遇過擬合問題。而隨機(jī)森林則可以通過創(chuàng)建隨機(jī)的特征子集并使用這些子集構(gòu)建較小的樹,隨后組成子樹,這種方法可以防止大部分情況的過擬合。要注意的是,這同時(shí)會(huì)使得計(jì)算速度變慢,并取決于隨機(jī)森林構(gòu)建的樹數(shù)。

機(jī)器學(xué)習(xí)算法之隨機(jī)森林算法重要的超參數(shù)

隨機(jī)森林中的參數(shù)要么用來增強(qiáng)模型的預(yù)測(cè)能力,要么使模型更快。 以下將討論sklearns內(nèi)置的隨機(jī)森林函數(shù)中的超參數(shù)。

提高模型預(yù)測(cè)準(zhǔn)確性

首先,“n_estimators”超參數(shù)表示算法在進(jìn)行最大投票或采取預(yù)測(cè)平均值之前建立的樹數(shù)。 一般來說,樹的數(shù)量越多,性能越好,預(yù)測(cè)也越穩(wěn)定,但這也會(huì)減慢計(jì)算速度。

另一個(gè)重要的超參數(shù)是“max_features”,它表示隨機(jī)森林在單個(gè)樹中可擁有的特征最大數(shù)量。 Sklearn提供了幾個(gè)選項(xiàng),在他們的文檔中有描述:

http://scikit-learn.org/stable/modules/generated/sklearn.ensemble.RandomForestClassifier.html

最后一個(gè)重要的超參數(shù)是“min_sample_leaf”,正如其名稱所述,這決定了葉子的數(shù)量。

加快模型計(jì)算速度

“n_jobs”超參數(shù)表示引擎允許使用處理器的數(shù)量。 若值為1,則只能使用一個(gè)處理器。 值為-1則表示沒有限制。

“random_state”,表示隨機(jī)數(shù)種子,保證模型的輸出具有可復(fù)制性。 當(dāng)它被賦于一個(gè)指定值,且模型訓(xùn)練具有相同的參數(shù)和相同的訓(xùn)練數(shù)據(jù)時(shí),該模型將始終產(chǎn)生相同的結(jié)果。

最后,還有一個(gè)“oob_score”(也稱為oob采樣),它是一種隨機(jī)森林交叉驗(yàn)證方法。 在這個(gè)抽樣中,大約三分之一的數(shù)據(jù)不用于模型訓(xùn)練,而用來評(píng)估模型的性能。這些樣本被稱為袋外樣本。它與留一法交叉驗(yàn)證方法非常相似,但幾乎沒有附加的計(jì)算負(fù)擔(dān)。

優(yōu)缺點(diǎn)分析

就像我之前提到的那樣,隨機(jī)森林的一個(gè)優(yōu)點(diǎn)是它可以用于回歸和分類任務(wù),并且很容易查看模型的輸入特征的相對(duì)重要性。

隨機(jī)森林同時(shí)也被認(rèn)為是一種非常方便且易于使用的算法,因?yàn)樗悄J(rèn)的超參數(shù)通常會(huì)產(chǎn)生一個(gè)很好的預(yù)測(cè)結(jié)果。超參數(shù)的數(shù)量也不是那么多,而且它們所代表的含義直觀易懂。

機(jī)器學(xué)習(xí)中的一個(gè)重大問題是過擬合,但大多數(shù)情況下這對(duì)于隨機(jī)森林分類器而言不會(huì)那么容易出現(xiàn)。因?yàn)橹灰种杏凶銐蚨嗟臉洌诸惼骶筒粫?huì)過度擬合模型。

隨機(jī)森林的主要限制在于使用大量的樹會(huì)使算法變得很慢,并且無法做到實(shí)時(shí)預(yù)測(cè)。一般而言,這些算法訓(xùn)練速度很快,預(yù)測(cè)十分緩慢。越準(zhǔn)確的預(yù)測(cè)需要越多的樹,這將導(dǎo)致模型越慢。在大多數(shù)現(xiàn)實(shí)世界的應(yīng)用中,隨機(jī)森林算法已經(jīng)足夠快,但肯定會(huì)遇到實(shí)時(shí)性要求很高的情況,那就只能首選其他方法。

當(dāng)然,隨機(jī)森林是一種預(yù)測(cè)性建模工具,而不是一種描述性工具。也就是說,如果您正在尋找關(guān)于數(shù)據(jù)中關(guān)系的描述,那建議首選其他方法。

適用范圍

隨機(jī)森林算法可被用于很多不同的領(lǐng)域,如銀行,股票市場(chǎng),醫(yī)藥和電子商務(wù)。 在銀行領(lǐng)域,它通常被用來檢測(cè)那些比普通人更高頻率使用銀行服務(wù)的客戶,并及時(shí)償還他們的債務(wù)。 同時(shí),它也會(huì)被用來檢測(cè)那些想詐騙銀行的客戶。 在金融領(lǐng)域,它可用于預(yù)測(cè)未來股票的趨勢(shì)。 在醫(yī)療保健領(lǐng)域,它可用于識(shí)別藥品成分的正確組合,分析患者的病史以識(shí)別疾病。 除此之外,在電子商務(wù)領(lǐng)域中,隨機(jī)森林可以被用來確定客戶是否真的喜歡某個(gè)產(chǎn)品。

總 結(jié)

隨機(jī)森林是一種很好的算法,適合在模型開發(fā)過程的早期進(jìn)行訓(xùn)練,了解它的工作原理,并且由于其簡(jiǎn)易性,很難構(gòu)建出“糟糕”的隨機(jī)森林。 如果您需要在短時(shí)間內(nèi)開發(fā)模型,隨機(jī)森林會(huì)是一個(gè)不錯(cuò)的選擇。 最重要的是,它為你選擇的特征提供了一個(gè)很好的重要性表示。

隨機(jī)森林在性能方面也很難被擊敗。 當(dāng)然,沒有最好只有更好,你總能找到一個(gè)性能更好的模型,比如神經(jīng)網(wǎng)絡(luò),但這類模型通常需要更多的時(shí)間來開發(fā)。 最重要的是,隨機(jī)森林同時(shí)可以處理許多不同屬性的特征類型,如二元的,類別的和數(shù)值的。總的來說,隨機(jī)森林是一個(gè)(相對(duì)大部分而言)快速,簡(jiǎn)單且靈活的工具,盡管它存在一定的局限性。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴

原文標(biāo)題:聊一聊「隨機(jī)森林算法」那些事兒...

文章出處:【微信號(hào):thejiangmen,微信公眾號(hào):將門創(chuàng)投】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    經(jīng)典算法大全(51個(gè)C語(yǔ)言算法+單片機(jī)常用算法+機(jī)器學(xué)十大算法

    試題學(xué)SPFA算法整體來說,機(jī)器學(xué)習(xí)算法可以分為 3 大類:0.1 監(jiān)督學(xué)習(xí) 工作原理:該
    發(fā)表于 10-23 14:31

    機(jī)器學(xué)習(xí)隨機(jī)森林相關(guān)知識(shí)

    機(jī)器學(xué)習(xí)隨機(jī)森林(三)
    發(fā)表于 04-02 10:06

    隨機(jī)森林的相關(guān)知識(shí)

    機(jī)器學(xué)習(xí)隨機(jī)森林(一)
    發(fā)表于 08-27 07:30

    算法圖解學(xué)習(xí)筆記分享

    算法圖解學(xué)習(xí)筆記03:分而治之
    發(fā)表于 06-05 17:42

    隨機(jī)森林的跌倒檢測(cè)算法

    針對(duì)現(xiàn)有跌倒檢測(cè)算法由于缺乏真實(shí)老人跌倒樣本以及使用年輕人仿真跌倒樣本規(guī)模較小導(dǎo)致的過擬合和適應(yīng)性不足等問題,提出了基于隨機(jī)森林的跌倒檢測(cè)算法。該
    發(fā)表于 12-29 14:50 ?2次下載

    隨機(jī)塊模型學(xué)習(xí)算法

    由于隨機(jī)塊模型能夠有效處理不具有先驗(yàn)知識(shí)的網(wǎng)絡(luò),對(duì)其研究成為了機(jī)器學(xué)習(xí)、網(wǎng)絡(luò)數(shù)據(jù)挖掘和社會(huì)網(wǎng)絡(luò)分析等領(lǐng)域的研究熱點(diǎn).如何設(shè)計(jì)出具有模型選擇能力的快速隨機(jī)塊模型
    發(fā)表于 01-09 18:20 ?1次下載

    反向傳播算法工作原理

    反向傳播算法(BP算法)是目前用來訓(xùn)練人工神經(jīng)網(wǎng)絡(luò)的最常用且最有效的算法。作為谷歌機(jī)器學(xué)習(xí)速成課程的配套材料,谷歌推出一個(gè)演示網(wǎng)站,直觀地
    的頭像 發(fā)表于 07-02 16:01 ?9961次閱讀
    反向傳播<b class='flag-5'>算法</b>的<b class='flag-5'>工作原理</b>

    10大常用機(jī)器學(xué)習(xí)算法匯總

    本文介紹了10大常用機(jī)器學(xué)習(xí)算法,包括線性回歸、Logistic回歸、線性判別分析、樸素貝葉斯、KNN、隨機(jī)森林等。
    發(fā)表于 11-20 11:10 ?2644次閱讀

    一種基于數(shù)據(jù)集成的隨機(jī)森林算法

    用于銷售預(yù)測(cè)的歷史數(shù)據(jù)存在稀疏性與波動(dòng)性等特點(diǎn),當(dāng)預(yù)測(cè)周期較長(zhǎng)時(shí),傳統(tǒng)統(tǒng)計(jì)學(xué)或者機(jī)器學(xué)習(xí)領(lǐng)域預(yù)測(cè)算法的預(yù)測(cè)效果較差。為此,利用隨機(jī)森林的集成
    發(fā)表于 03-16 11:37 ?12次下載
    一種基于數(shù)據(jù)集成的<b class='flag-5'>隨機(jī)</b><b class='flag-5'>森林</b><b class='flag-5'>算法</b>

    基于k近鄰的完全隨機(jī)森林算法KCRForest

    針對(duì)有新類的動(dòng)態(tài)數(shù)據(jù)流分類算法檢測(cè)新類性能不高的問題,提出一種基于k近鄰的完全隨機(jī)森林算法( Kcrforest)。該算法利用動(dòng)態(tài)數(shù)據(jù)流中已
    發(fā)表于 04-02 10:01 ?18次下載
    基于k近鄰的完全<b class='flag-5'>隨機(jī)</b><b class='flag-5'>森林</b><b class='flag-5'>算法</b>KCRForest

    基于遺傳算法隨機(jī)森林的XGBoost改進(jìn)方法

    回歸預(yù)測(cè)是機(jī)器學(xué)習(xí)中重要的研究方向之一,有著廣闊的應(yīng)用領(lǐng)域。為了進(jìn)一步提升回歸預(yù)測(cè)的精度,提出了基于遺傳算法隨機(jī)森林的 Gboost改進(jìn)方
    發(fā)表于 04-26 15:44 ?6次下載
    基于遺傳<b class='flag-5'>算法</b>和<b class='flag-5'>隨機(jī)</b><b class='flag-5'>森林</b>的XGBoost改進(jìn)方法

    面向差分?jǐn)?shù)據(jù)挖掘隱私保護(hù)的隨機(jī)森林算法

    數(shù)據(jù)挖掘中的隱私保護(hù)問題是目前信息安全領(lǐng)域的研究熱點(diǎn)之一。針對(duì)隱私保護(hù)要求下的分類問題,提出一種面向差分隱私保護(hù)的隨機(jī)森林算法 REDPP-Gini。將隨機(jī)
    發(fā)表于 05-12 14:14 ?1次下載

    隨機(jī)森林的概念、工作原理及用例

    隨機(jī)森林是一種監(jiān)督式算法,使用由眾多決策樹組成的一種集成學(xué)習(xí)方法,輸出是對(duì)問題最佳答案的共識(shí)。隨機(jī)森林
    的頭像 發(fā)表于 08-05 10:00 ?6532次閱讀

    機(jī)器學(xué)習(xí)有哪些算法?機(jī)器學(xué)習(xí)分類算法有哪些?機(jī)器學(xué)習(xí)預(yù)判有哪些算法?

    機(jī)器學(xué)習(xí)有哪些算法機(jī)器學(xué)習(xí)分類算法有哪些?機(jī)器
    的頭像 發(fā)表于 08-17 16:30 ?1796次閱讀

    基于Python實(shí)現(xiàn)隨機(jī)森林算法

    機(jī)器學(xué)習(xí)算法是數(shù)據(jù)挖掘、數(shù)據(jù)能力分析和數(shù)學(xué)建模必不可少的一部分,而隨機(jī)森林算法和決策樹
    的頭像 發(fā)表于 09-21 11:17 ?1029次閱讀
    基于Python實(shí)現(xiàn)<b class='flag-5'>隨機(jī)</b><b class='flag-5'>森林</b><b class='flag-5'>算法</b>