隨機森林演算法

銀河1號發表於2019-03-11

隨機森林是一種靈活,易於使用的機器學習演算法,即使沒有超引數調整,也能在大多數情況下產生出色的結果。它也是最常用的演算法之一,因為它簡單,並且可以用於分類和迴歸任務。在這篇文章中,您將學習隨機森林演算法如何工作以及其他幾個重要的事情。

目錄:

  • 這個怎麼運作
  • 真實生活類比
  • 特徵重要性
  • 決策樹與隨機森林的區別
  • 重要的超引數(預測能力,速度)
  • 優點和缺點
  • 用例
  • 摘要

這個怎麼運作:

隨機森林是一種監督學習演算法。就像你已經從它的名字中看到的一樣,它創造了一個森林,並使它在某種程度上是隨機的。它構建的“森林”是決策樹的集合,大部分時間都是用“裝袋”方法訓練的。裝袋方法的一般思想是學習模型的組合增加了整體結果。

用簡單的話來說:隨機森林構建多個決策樹並將它們合併在一起以獲得更準確和穩定的預測。

隨機森林的一大優勢是,它可以用於分類和迴歸問題,這些問題構成了當前機器學習系統的大部分。我將在分類中討論隨機森林,因為分類有時被認為是機器學習的基石。您可以在下面看到隨機森林如何使用兩棵樹:

隨機森林演算法

隨機森林具有與決策樹或裝袋分類器幾乎相同的超引數。幸運的是,您不必將決策樹與裝袋分類器組合在一起,只需輕鬆使用隨機森林的分類器類即可。就像我已經說過的,使用Random Forest,你也可以使用Random Forest迴歸量來處理迴歸任務。

隨機森林為模型增加了額外的隨機性,同時種植樹木。它不是在分割節點時搜尋最重要的特徵,而是在隨機特徵子集中搜尋最佳特徵。這導致了廣泛的多樣性,通常導致更好的模型。

因此,在隨機森林中,用於分割節點的演算法僅考慮特徵的隨機子集。您甚至可以通過為每個特徵使用隨機閾值而不是搜尋最佳可能閾值(如正常決策樹那樣)來使樹更隨機。

真實生活類比:

想象一下,一個名叫安德魯的人,想要決定在一年的假期旅行中應該去哪些地方。他問那些認識他的人。首先,他去找一位朋友,朋友問安德魯之前他去過哪裡,他是否喜歡。根據答案,他會給安德魯一些建議。

這是典型的決策樹演算法方法。安德魯斯的朋友通過使用安德魯的答案建立了規則,以指導他決定應該向安德魯推薦什麼。

之後,安德魯開始要求越來越多的朋友給他建議,他們再次問他不同的問題,他們可以從中得到一些建議。然後他選擇了對他最推薦的地方,這是典型的隨機森林演算法方法。

特徵重要性:

隨機森林演算法的另一個高質量是,很容易測量每個特徵對預測的相對重要性。Sklearn為此提供了一個很好的工具,它可以通過檢視使用該功能的樹節點減少森林中所有樹木的雜質來測量特徵的重要性。它會在訓練後自動為每個要素計算此分數並對結果進行縮放,以使所有重要性的總和等於1。

如果你不知道決策樹是如何工作的,如果你不知道葉子或節點是什麼,這裡是維基百科的一個很好的描述:在決策樹中,每個內部節點代表一個屬性的“測試”(例如硬幣正面還是反面朝上),每個分支代表測試的結果,每個葉節點代表一個類標籤(在計算所有屬性後作出決定)。

沒有子節點的節點是葉子。

通過檢視特徵重要性,您可以決定要刪除哪些特徵,因為它們對預測過程沒有足夠的貢獻或沒有貢獻。這很重要,因為機器學習的一般規則是,您擁有的特徵越多,您的模型就越容易受到過度擬合的影響,反之亦然。

下面你可以看到一個表格和一個視覺化,它顯示了13個特徵的重要性,我在監督分類專案中使用了有名的泰坦尼克號資料集。你可以在這裡找到整個專案。

隨機森林演算法

決策樹與隨機森林之間的差異:

就像我已經提到的,隨機森林是決策樹的集合,但是存在一些差異。

如果您將具有要素和標籤的訓練資料集輸入到決策樹中,它將制定一組規則,用於進行預測。

例如,如果您想預測一個人是否會點選線上廣告,您可以收集過去點選過的人的廣告以及描述他的決定的一些功能。如果將功能和標籤放入決策樹中,它將生成一些規則。然後,您可以預測廣告是否會被點選。相比之下,隨機森林演算法隨機選擇觀察和特徵來構建幾個決策樹,然後平均結果。

另一個區別是“深層”決策樹可能會受到過度擬合的影響。隨機森林通過建立特徵的隨機子集並使用這些子集構建較小的樹來防止過度擬合。之後,它結合了子樹。請注意,這不會每次都起作用,並且它還會使計算速度變慢,具體取決於隨機林構建的樹數。

重要的超引數:

隨機森林中的超引數用於增加模型的預測能力或使模型更快。我將在這裡談談sklearns內建隨機森林函式的超引數。

1.增加預測能力

首先,有“n_estimators”超引數,它只是演算法在進行最大投票或取平均預測之前構建的樹數。通常,更多數量的樹會提高效能並使預測更穩定,但它也會減慢計算速度。

另一個重要的超引數是“max_features”,它是Random Forest考慮拆分節點的最大特徵數。Sklearn提供了幾個選項,在他們的文件中有描述。

我們將在速度方面討論的最後一個重要的超引數是“min_sample_leaf”。與其名稱一樣,這確定了拆分內部節點所需的最小葉子數。

2.提高模型速度

“n_jobs”超引數告訴引擎是多少處理器允許使用。如果它的值為1,則它只能使用一個處理器。值“-1”表示沒有限制。

“random_state”使模型的輸出可複製。當模型具有random_state的確定值並且已經給出相同的超引數和相同的訓練資料時,該模型將始終產生相同的結果。

最後,還有“oob_score”(也稱為oob取樣),它是一種隨機森林交叉驗證方法。在此抽樣中,大約三分之一的資料不用於訓練模型,可用於評估其效能。這些樣品稱為袋外樣品。它與留一法交叉驗證方法非常相似,但幾乎沒有額外的計算負擔。

優點和缺點:

就像我已經提到的,隨機森林的一個優點是它可以用於迴歸和分類任務,並且很容易檢視它分配給輸入要素的相對重要性。

隨機森林也被認為是一種非常方便易用的演算法,因為它的預設超引數通常會產生良好的預測結果。超引數的數量也不是那麼高,而且它們很容易理解。

機器學習中的一個重大問題是過度擬合,但大多數情況下,這對於隨機森林分類器來說不容易發生。那是因為如果森林中有足夠的樹,分類器就不會過度擬合模型。

隨機森林的主要侷限在於大量決策樹可以使演算法減慢並且對實時預測無效。一般來說,這些演算法訓練速度很快,但一旦訓練完成預測就很慢。更準確的預測需要更多的樹,這導致更慢的模型。在大多數實際應用中,隨機森林演算法足夠快,但肯定存在執行時效能很重要而其他方法更受歡迎的情況。

當然,隨機森林是一種預測建模工具,而不是一種描述性工具。這意味著,如果您正在尋找資料中關係的描述,則首選其他方法。

用例:

隨機森林演算法用於許多不同的領域,如銀行,股票市場,醫藥和電子商務。例如,在銀行業中,它用於檢測將比其他人更頻繁地使用銀行服務的客戶,並及時償還他們的債務。在此域中,它還用於檢測想要詐騙銀行的欺詐客戶。在金融領域,它用於確定未來股票的行為。在醫療保健領域,它用於識別醫學中組分的正確組合,並分析患者的病史以識別疾病。最後,在電子商務中,隨機森林用於確定客戶是否真的喜歡該產品。

摘要:

隨機森林是一個很好的演算法,可以在模型開發過程的早期進行訓練,看看它是如何執行的,並且由於其簡單性,很難建立一個“壞”的隨機森林。如果您需要在短時間內開發模型,此演算法也是一個很好的選擇。最重要的是,它提供了一個非常好的指標,表明它為您的功能賦予的重要性。

隨機森林在效能方面也很難被擊敗。當然,您可能總能找到一個能夠表現更好的模型,比如神經網路,但這些通常需要花費更多的時間進行開發。最重要的是,它們可以處理許多不同的要素型別,如二進位制,分類和數字。

總體而言,隨機森林是一種(大多數)快速,簡單和靈活的工具,儘管它有其侷限性。

點選英文原文 https://towardsdatascience.com/the-random-forest-algorithm-d457d499ffcd


更多文章歡迎訪問: http://www.apexyun.com

公眾號:銀河系1號

聯絡郵箱:public@space-explore.com

(未經同意,請勿轉載)


相關文章