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

2020-12-03 讀芯術

全文共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實現隨機森林
    因為有Scikit-Learn這樣的庫,現在用Python實現任何機器學習算法都非常容易。實際上,我們現在不需要任何潛在的知識來了解模型如何工作。雖然不需要了解所有細節,但了解模型如何訓練和預測對工作仍有幫助。比如:如果性能不如預期,我們可以診斷模型或當我們想要說服其他人使用我們的模型時,我們可以向他們解釋模型如何做出決策的。
  • 【乾貨】隨機森林的Python實現
    【新智元導讀】在機器學習中,隨機森林是一個包含多個決策樹的分類器,並且其輸出的類別是由個別樹輸出的類別的眾數而定。隨機森林幾乎是任何預測類問題(甚至非線性問題)的首選。本文介紹了隨機森林的原理、用途,以及用 Python 實現隨機森林的方法。
  • 理解隨機森林:基於Python的實現和解釋
    數據科學家 William Koehrsen 用 Python 實現並解釋了決策樹和隨機森林的工作過程。這使得我們可以在模型表現不如預期時對模型進行診斷,或解釋我們的模型做決策的方式——這能幫助我們說服他人使用我們的模型。本文將介紹如何使用 Python 構建和使用隨機森林。我們不只是簡單地展示代碼,而會盡力解釋模型的工作方式。
  • 用Python實現隨機森林算法
    隨機森林算法(Random forest algorithm)是對 bagging 算法的擴展。除了仍然根據從訓練數據樣本建立複合模型之外,隨機森林對用做構建樹(tree)的數據特徵做了一定限制,使得生成的決策樹之間沒有關聯,從而提升算法效果。本文章旨在探討如何用 Python 實現隨機森林算法。
  • 隨機森林(Random Forest)
    最近幾年的國內外大賽,包括2013年百度校園電影推薦系統大賽、2014年阿里巴巴天池大數據競賽以及Kaggle數據科學競賽,參賽者對隨機森林的使用佔有相當高的比例。此外,據我的個人了解來看,一大部分成功進入答辯的隊伍也都選擇了Random Forest 或者 GBDT 算法。所以可以看出,Random Forest在準確率方面還是相當有優勢的。
  • 一文看懂隨機森林 - Random Forest(附 4 個構造步驟+4 種實現方式評測+10 個優缺點)
    本文將介紹隨機森林的基本概念、4 個構造步驟、4 種方式的對比評測、10 個優缺點和 4 個應用方向。什麼是隨機森林?隨機森林屬於 集成學習 中的 Bagging(Bootstrap AGgregation 的簡稱) 方法。如果用圖來表示他們之間的關係如下:
  • WePay機器學習反欺詐實踐:Python+scikit-learn+隨機森林
    WePay採用了流行的Python、scikit-learn開源學習機器學習工具以及隨機森林算法。以下是文章內容:什麼是shellselling?雖然欺詐幾乎涉及各種領域,但相對於傳統的買方或賣方僅僅擔心對方是否是騙子,支付平臺需要擔心的是交易雙方。
  • python隨機函數random分配應用,隨機分配8名老師到3個教室中
    羽憶教程最近遇到一個問題,要隨機分配8名老師到3個辦公室中,這時小編想要了python中的隨機函數random來進行分配工作,感覺小編像個月老一樣。python隨機函數python隨機函數在python中,想要生成隨機數
  • R語言 | randomForest包的隨機森林回歸模型以及對重要變量的選擇
    關於隨機森林(random forest),前文「隨機森林分類以及對重要變量的選擇」中已經對其基本原理作了簡單概括。  首先來看一篇與植物根系微生物組有關研究,將文中涉及到隨機森林回歸的部分內容節選出來以幫助大家理解。Edwards等(2018)分析了來自兩個地區(加利福尼亞州、阿肯色州)以及三個連續種植季(2014、2015、2016)的水稻根系微生物組,意在闡述水稻根系微生物群落的時間動態特徵,並解釋驅動微生物群落組建的成因。
  • python基礎知識科普:python的起源和發展史以及應用場景
    它是用C語言實現的,並能夠調用C語言的庫文件。從一出生,Python已經具有了 :類,函數,異常處理,包含表和詞典在內的核心數據類型,以及模塊為基礎的拓展系統。Python2python的優缺點:優點:簡單————Python是一種代表簡單主義思想的語言。
  • 玩轉Python 中的隨機數
    開發中我們經常遇到需要隨機數的場景,比如為了用戶密碼更安全我們有時會加鹽,也就是將用戶原密碼連接上一串隨機字符然後加密保存,又比如我們可能需要隨機展示某張圖片等等。今天,我們就來理一理 Python 中的隨機數的玩法,當然,這裡只涉及標準庫。
  • Python學習第128課——在Python中實現醉漢隨機遊走
    【每天幾分鐘,從零入門python編程的世界!】這節我們在2D平面內實現隨機遊走。我們先把原理搞清楚,用代碼實現這個原理。原理分析:我們想像在2D平面內有一個x軸和y軸組成的坐標系,有一個人他是個醉漢,他以(0,0)為原點,隨機遊走,以x和y表示遊走後的坐標值,剛開始x=0,y=0。他每走一步之前,都需要先做一次選擇,選擇往東南西北哪一個方向去走,這個選擇我們需要先引入一個random庫,這是一個可以用來實現隨機數、隨機選擇的庫,用這個庫來實現隨機方向的選擇。
  • Python視頻教程網課編程零基礎入門數據分析網絡爬蟲全套Python...
    教程大合集,包含python所有就業方向,每套課程均來自市面上主流培訓機構的原版教程,價值都在數百元以上 每套課程均包含:視頻課程+課件+原始碼 重要:建議根據自己工作方向和需求,重點選擇2到3套課程學精,吃透,然後在工作 重要:零基礎小白建議先選擇零基礎全能篇的一套課程學精,然後再根據自 己的需求和規劃選擇學習其他方向課程,學完後一定要多實踐
  • 「每日一練」巧用python生成隨機數
    隨機數在我們的生產和生活中有很多的應用場景,比如說登錄驗證的隨機數字等等,那麼你知道在Python中怎麼生成隨機數嗎?往下看,就是這麼簡單!題目python中生成隨機整數、隨機小數、0--1之間小數方法代碼先上代碼~運行效果題目詳述程序分析:隨機整數:random.randint(a,b),生成區間內的整數隨機小數:習慣用numpy庫,利用np.random.randn(5)生成5個隨機小數0-1隨機小數
  • 隨機森林(Random Forest)算法原理
    l隨機森林有很強的抗幹擾能力l對於不平衡數據集來說,隨機森林可以平衡誤差。l……(2)缺點l隨機森林在解決回歸問題時,並沒有像它在分類中表現那麼好,因為它並不能給出一個連續的輸出。l隨機森林對於統計建模者來說,就像一個黑盒子,無法控制模型內部的運行。l可能有很多相似的決策樹,掩蓋了真實的結果。
  • ...詳解線性回歸、樸素貝葉斯、隨機森林在R和Python中的實現應用...
    隨機森林(Random Forest)隨機森林是決策樹的總體專有名詞。在隨機森林算法中,我們有一系列決策樹(因此,被稱為「森林」)。為了根據屬性將新對象進行分類,每一棵決策樹都給出一個分類,稱之為該決策樹為該分類「投票」。森林選擇(在所有樹中)獲得票數最多的分類。每棵樹的種植&培育過程:1.
  • 機器學習、深度學習算法原理與案例實踐暨Python大數據綜合應用...
    尹老師,數據科學家,浙江大學物理學博士,浙江某高校數據科學專業負責人,兼任某網絡科技上市公司大數據總監,受聘擔任多家大數據教學機構主講教師,開發多套python高級編程、機器學習、網絡爬蟲與文本挖掘系列課程,10+年python軟體開發數據產品經驗,熟悉R Java等多種程式語言,具有豐富的python統計建模、數據挖掘、大數據技術教學經驗,先後為中國交通銀行,平安保險公司等數十家知名機構主講
  • 具有貝葉斯優化的XGBoost和隨機森林
    ,並指出這些算法的優缺點。隨機森林隨機森林(RF)使用隨機數據樣本獨立訓練每棵樹。這種隨機性有助於使模型比單個決策樹更健壯。由於RF不太可能過度擬合訓練數據。隨機森林應用示例隨機森林差異性已被用於各種應用,例如,基於組織標記數據找到患者群。
  • 詳解線性回歸、樸素貝葉斯、隨機森林在R和Python中的...
    隨機森林(Random Forest)隨機森林是決策樹的總體專有名詞。在隨機森林算法中,我們有一系列決策樹(因此,被稱為「森林」)。為了根據屬性將新對象進行分類,每一棵決策樹都給出一個分類,稱之為該決策樹為該分類「投票」。森林選擇(在所有樹中)獲得票數最多的分類。
  • 初學者如何用「python爬蟲」技術抓取網頁數據?
    在當今社會,網際網路上充斥著許多有用的數據。我們只需要耐心觀察並添加一些技術手段即可獲得大量有價值的數據。而這裡的「技術手段」就是指網絡爬蟲。 今天,小編將與您分享一個爬蟲的基本知識和入門教程:什麼是爬蟲?