大盤點:隨機森林的優缺點以及如何用Python解釋

2020-12-22 讀芯術

全文共1755字,預計學習時長3分鐘

本文來自The Learning Machine——一個開放原始碼的新項目,該項目旨在為不同背景的人群創建交互式路線圖,其中包含對概念、方法、算法及其在Python或R中的代碼裡實現所有的解釋。

隨機森林

隨機森林是一種靈活的、便於使用的機器學習算法,即使沒有超參數調整,大多數情況下也會帶來好的結果。它可以用來進行分類和回歸任務。通過本文,你將會學習到隨機森林算法是如何解決分類和回歸問題的。

為了理解什麼是隨機森林算法,首先要熟悉決策樹。

決策樹往往會產生過擬合問題,尤其會發生在存在整組數據的決策樹上。有時決策樹仿佛變得只會記憶數據了。下面是一些過擬合的決策樹的典型例子,既有分類數據,也有連續數據。

1. 分類數據:

如果一位年齡在15歲到25歲之間的美國男性,他喜歡吃冰激凌,有位德國朋友,厭惡鳥類,2012年8月25日曾吃過薄煎餅——那麼他很有可能下載Pokemon Go。

2. 連續數據:

隨機森林阻止了這類問題的發生:它是多重決策樹的組合,而不只是一棵決策樹。隨機森林算法下決策樹的數量越多,泛化的結果更好。

更準確地說,隨機森林的工作原理如下:

1. 從數據集(表)中隨機選擇k個特徵(列),共m個特徵(其中k小於等於m)。然後根據這k個特徵建立決策樹。

2. 重複n次,這k個特性經過不同隨機組合建立起來n棵決策樹(或者是數據的不同隨機樣本,稱為自助法樣本)。

3. 對每個決策樹都傳遞隨機變量來預測結果。存儲所有預測的結果(目標),你就可以從n棵決策樹中得到n種結果。

4. 計算每個預測目標的得票數再選擇模式(最常見的目標變量)。換句話說,將得到高票數的預測目標作為隨機森林算法的最終預測。

*針對回歸問題,隨機森林中的決策樹會預測Y的值(輸出值)。通過隨機森林中所有決策樹預測值的平均值計算得出最終預測值。而針對分類問題,隨機森林中的每棵決策樹會預測最新數據屬於哪個分類。最終,哪一分類被選擇最多,就預測這個最新數據屬於哪一分類。

例子:

詹姆斯要決定在巴黎的一周要去哪些景點。他拜訪了一位曾在巴黎住過一年的朋友,問朋友曾去過哪些景點,是否覺得有趣。基於自己的經驗,這位朋友會給詹姆斯一些建議。

這是典型的決策樹算法方法。詹姆斯的朋友根據自己的經驗,告訴詹姆斯可以去哪些景點遊覽。

之後,詹姆斯問了很多在巴黎待過的朋友,詢問建議,他們推薦了自己去過的景點。然後詹姆斯選擇了被推薦次數最多的景點,這就是典型的隨機森林算法。

因此,隨機森林是一種在共擁有m個特徵的決策樹中隨機選擇k個特徵組成n棵決策樹,再選擇預測結果模式(如果是回歸問題,選擇平均值)。

優缺點

優點:

1. 可以用來解決分類和回歸問題:隨機森林可以同時處理分類和數值特徵。

2. 抗過擬合能力:通過平均決策樹,降低過擬合的風險性。

3. 只有在半數以上的基分類器出現差錯時才會做出錯誤的預測:隨機森林非常穩定,即使數據集中出現了一個新的數據點,整個算法也不會受到過多影響,它只會影響到一顆決策樹,很難對所有決策樹產生影響。

缺點:

1. 據觀測,如果一些分類/回歸問題的訓練數據中存在噪音,隨機森林中的數據集會出現過擬合的現象。

2. 比決策樹算法更複雜,計算成本更高。

3. 由於其本身的複雜性,它們比其他類似的算法需要更多的時間來訓練。

重要的超參數

隨機森林中的超參數既可以用來提高模型的預測能力,也可以加快建模的速度。下面介紹了sklearn內置隨機森林函數的超參數:

1. 提高預測能力

· 子模型的數量:在利用最大投票數或平均值來預測之前,你想要建立子樹的數量。一般來說,子樹的數量越多,越能提高性能,預測的準確性就越穩定,但是也會放緩計算過程。

· 節點分裂時參與判斷的最大特徵數:隨機森林允許單個決策樹使用特徵的最大數量。Sklearn提供了幾個選項,如文檔中所述。

· 葉子節點最小樣本數:內部節點再劃分所需最小樣本數。

2. 加快建模速度

· 並行數:允許使用處理器的數量。如果輸出值為1,只能使用一個處理器。輸出值為-1則意味著沒有限制。

· 隨機數生成器:使模型的輸出可複製。當模型具有一個確定的隨機數,並且給定相同的超參數和相同的訓練數據時,模型將始終產生相同的結果。

· 是否計算袋外得分:也稱作袋外抽樣——它是一種隨機森林交叉驗證方法。在這個樣本中,大約三分之一的數據不是用來訓練模型,而是用來評估模型的性能。這些樣品被稱為袋外樣品。這一方法與留一法交叉驗證非常相似,但幾乎沒有額外的計算負擔。

留言 點讚 發個朋友圈

我們一起分享AI學習與發展的乾貨

歡迎關注全平臺AI自媒體 「讀芯術」

相關焦點

  • Python隨機森林 - CodeProject
    這意味著隨機森林中包括多種決策樹,並將每個決策樹結果的平均值作為隨機森林的最終輸出。決策樹有一些缺點,比如訓練集的過擬合導至很高的差異性,不過這在隨機森林中已經可以通過Bagging(Bootstrap Aggregating)的幫助解決。因為隨機森林實際上是由多種不同的決策樹組成的,所以我們最好先了解一下決策樹算法,然後再學習隨機森林的相關知識。
  • 隨機森林算法入門(Python)
    隨機森林能夠用於分類和回歸問題,可以處理大量特徵,並能夠幫助估計用於建模數據變量的重要性。這篇文章是關於如何使用Python構建隨機森林模型。隨機森林可以用於幾乎任何一種預測問題(包括非線性問題)。它是一個相對較新的機器學習策略(90年代誕生于貝爾實驗室)可以用在任何方面。它屬於機器學習中的集成學習這一大類。
  • python實現隨機森林
    所以隨機森林是基於多顆決策樹的一種集成學習算法,常見的決策樹算法主要有以下幾種:1. ID3:使用信息增益g(D,A)進行特徵選擇2. C4.5:信息增益率 =g(D,A)/H(A)3. CART:基尼係數一個特徵的信息增益(或信息增益率,或基尼係數)越大,表明特徵對樣本的熵的減少能力更強,這個特徵使得數據由不確定性到確定性的能力越強。
  • 實戰:用Python實現隨機森林
    因為有Scikit-Learn這樣的庫,現在用Python實現任何機器學習算法都非常容易。實際上,我們現在不需要任何潛在的知識來了解模型如何工作。雖然不需要了解所有細節,但了解模型如何訓練和預測對工作仍有幫助。比如:如果性能不如預期,我們可以診斷模型或當我們想要說服其他人使用我們的模型時,我們可以向他們解釋模型如何做出決策的。
  • 理解隨機森林:基於Python的實現和解釋
    數據科學家 William Koehrsen 用 Python 實現並解釋了決策樹和隨機森林的工作過程。這使得我們可以在模型表現不如預期時對模型進行診斷,或解釋我們的模型做決策的方式——這能幫助我們說服他人使用我們的模型。本文將介紹如何使用 Python 構建和使用隨機森林。我們不只是簡單地展示代碼,而會盡力解釋模型的工作方式。
  • 獨家 | 一文讀懂隨機森林的解釋和實現(附python代碼)
    本文從單棵決策樹講起,然後逐步解釋了隨機森林的工作原理,並使用sklearn中的隨機森林對某個真實數據集進行預測。如今由於像Scikit-Learn這樣的庫的出現,我們可以很容易地在Python中實現數百種機器學習算法。它們是如此易用,以至於我們通常都不需要任何關於模型底層工作機制的知識就可以使用它們。
  • 隨機森林的原理及Python代碼實現
    根據個體學習器的生成方式,目前的集成學習方法大致可分為兩大類,即個體學習器之間存在強依賴關係,必須串行生成的序列化方法,以及個體學習器間不存在強依賴關係,可同時生成的並行化方法;前者的代表是Boosting,後者的代表是Bagging
  • 用Python實現隨機森林算法
    隨機森林算法(Random forest algorithm)是對 bagging 算法的擴展。除了仍然根據從訓練數據樣本建立複合模型之外,隨機森林對用做構建樹(tree)的數據特徵做了一定限制,使得生成的決策樹之間沒有關聯,從而提升算法效果。本文章旨在探討如何用 Python 實現隨機森林算法。
  • Python代碼實踐|隨機森林是「黑盒子」?不存在的,擼完代碼你就懂了
    介紹隨機森林集成是一個分而治之的方法,用來提高單個弱決策樹模型的能力。背後的主要原則是通過一組「弱學習器」,組合起來形成一個「強學習器」。每個分類器都是一個獨立的「弱學習器」,所有的分類器一起組成一個「強學習器」。隨機森林集成隨機森林的核心概念就是對一些決策樹的結果取平均。隨機森林是對那些不熟悉機器學習的人解釋預測背後的直覺的一個常用的工具。
  • 原理+代碼|深入淺出Python隨機森林預測實戰
    能夠理解基本原理並將代碼用於實際的業務案例是本文的目標,本文將詳細介紹如何利用Python實現集成學習中隨機森林這個經典的方法來預測寬帶客戶的流失,主要將分為兩個部分:本文的主角是隨機森林,所以我們將以隨機森林所屬的分支 —— 裝袋法 入手,深入淺出該集成學習方法的原理步驟
  • 一文看懂隨機森林 - Random Forest(附 4 個構造步驟+4 種實現方式評測+10 個優缺點)
    本文將介紹隨機森林的基本概念、4 個構造步驟、4 種方式的對比評測、10 個優缺點和 4 個應用方向。什麼是隨機森林?隨機森林屬於 集成學習 中的 Bagging(Bootstrap AGgregation 的簡稱) 方法。如果用圖來表示他們之間的關係如下:
  • 隨機森林算法
    這是我從第一堂課中學到的東西,這是一個1小時17分鐘的視頻,介紹了隨機森林。課的主題是隨機森林,傑裡米(講師)提供了一些基本信息以及使用Jupyter Notebook的提示和技巧。Jeremy談到的一些重要的事情是,數據科學並不等同於軟體工程。在數據科學中,我們做的是設計模型。雖然軟體工程有自己的一套實踐,但數據科學也有自己的一套最佳實踐。
  • 獨家 | 決策樹VS隨機森林——應該使用哪種算法?(附代碼&連結)
    utm_source=blog&utm_medium=decision-tree-vs-random-forest-algorithm註:本文的想法是比較決策樹和隨機森林。因此,我不會詳細解釋基本概念,但是我將提供相關連結以便於你可以進一步探究。決策樹算法很容易理解和解釋。但是通常來說,一棵簡單的樹並不能產生有效的結果。這就是隨機森林算法的用武之地。
  • 隨機森林入門攻略
    Amit, Gemen和Ho Tim Kam各自獨立地介紹了特徵隨即選擇的思想,並且運用了Breiman的「套袋」思想構建了控制方差的決策樹集合。在此之後,Deitterich在模型中引入了隨即節點優化的思想,對隨機森裡進行了進一步完善。什麼是隨機森林?隨機森林是一種多功能的機器學習算法,能夠執行回歸和分類的任務。
  • 那些有趣/用的 Python 庫,15篇 Python 技術熱文
    註:以下文章,點擊標題即可閱讀《那些有趣/用的 Python 庫》本文整理了一些有趣有用的 Python 庫,其中包括圖片處理,視頻下載,財經數據接口包等等,需要的童鞋可以看過來啦。《Python 爬蟲實戰:股票數據定向爬蟲》本文爬蟲實戰目標是運用python3.5, 獲取上交所和深交所所有股票的名稱和交易信息,輸出到保存文件中。學習Python爬蟲的初學者可以看過來。
  • R包randomForest的隨機森林回歸模型以及對重要變量的選擇
    關於隨機森林(random forest),前文「隨機森林分類以及對重要變量的選擇」中已經對其基本原理作了簡單概括。  首先來看一篇與植物根系微生物組有關研究,將文中涉及到隨機森林回歸的部分內容節選出來以幫助大家理解。Edwards等(2018)分析了來自兩個地區(加利福尼亞州、阿肯色州)以及三個連續種植季(2014、2015、2016)的水稻根系微生物組,意在闡述水稻根系微生物群落的時間動態特徵,並解釋驅動微生物群落組建的成因。
  • 科悟學院講解Python是什麼以及Python的應用
    今天科悟學院的講師就為你介紹一下Python是什麼以及Python的應用,希望對你有所幫助。Python 是一種解釋型、面向對象、動態數據類型的強類型高級程序設計語言。1.程式語言簡介和特點程式語言主要從以下幾個角度為進行分類,編譯型和解釋型、靜態語言和動態語言、強類型定義語言和弱類型定義語言,每個分類代表什麼意思呢,我們一起來看一下。
  • R語言 | randomForest包的隨機森林回歸模型以及對重要變量的選擇
    關於隨機森林(random forest),前文「隨機森林分類以及對重要變量的選擇」中已經對其基本原理作了簡單概括。  首先來看一篇與植物根系微生物組有關研究,將文中涉及到隨機森林回歸的部分內容節選出來以幫助大家理解。Edwards等(2018)分析了來自兩個地區(加利福尼亞州、阿肯色州)以及三個連續種植季(2014、2015、2016)的水稻根系微生物組,意在闡述水稻根系微生物群落的時間動態特徵,並解釋驅動微生物群落組建的成因。
  • Python機器學習筆記——隨機森林算法!最詳細的筆記沒有之一
    1,隨機森林既可以用於分類問題,也可以用於回歸問題2,過擬合是個關鍵的問題,可能會讓模型的結果變得糟糕,但是對於隨機森林來說,如果隨機森林的樹足夠多,那麼分類器就不會過擬合模型3,隨機森林分類器可以處理缺失值4,隨機森林分類器可以用分類值建模三,隨機森林的構建過程1,從原始訓練集中使用Bootstraping方法隨機有放回採樣取出m個樣本
  • WePay機器學習反欺詐實踐:Python+scikit-learn+隨機森林
    WePay採用了流行的Python、scikit-learn開源學習機器學習工具以及隨機森林算法。以下是文章內容:什麼是shellselling?雖然欺詐幾乎涉及各種領域,但相對於傳統的買方或賣方僅僅擔心對方是否是騙子,支付平臺需要擔心的是交易雙方。如果其中任何一方存在信用詐騙,真正的持卡人發現和撤銷費用,平臺自身就要進行帳單償還。