隨機森林分類器:概述,它是如何工作的,優點和缺點

已發表: 2021-06-18

你有沒有想過 Netflix 如何挑選一部電影推薦給你? 或者亞馬遜如何選擇要在您的提要中顯示的產品?

他們都使用推薦系統,這是一種利用隨機森林分類器的技術。

隨機森林分類器是最流行的分類算法之一。 今天,我們將了解這種強大的機器學習算法,並看看它是如何工作的。 您還將了解它的實現,因為我們將分享有關如何在實際問題中使用隨機森林分類器的分步教程。

我們將在以下幾點中介紹隨機森林 sklearn 的優缺點以及更多內容。

目錄

隨機森林分類器:簡介

隨機森林分類器是一種監督學習算法,可用於回歸和分類問題。 由於其高度的靈活性和易於實施,它是最流行的機器學習算法之一。

為什麼隨機森林分類器叫隨機森林?

這是因為它由多個決策樹組成,就像森林有很多樹一樣。 最重要的是,它使用隨機性來提高其準確性和對抗過度擬合,這對於如此復雜的算法來說可能是一個巨大的問題。 這些算法基於隨機選擇的數據樣本製作決策樹,並從每棵樹中獲得預測。 之後,他們通過投票選擇最佳可行的解決方案。

它在我們的日常生活中有許多應用,例如特徵選擇器、推薦系統和圖像分類器。 它的一些現實應用包括欺詐檢測、貸款申請分類和疾病預測。 它構成了 Boruta 算法的基礎,該算法在數據集中挑選重要特徵。

它是如何工作的?

假設您的數據集有“m”個特徵,隨機森林將隨機選擇“k”個特徵,其中 k < m。 現在,該算法將通過選擇具有最高信息增益的節點來計算 k 個特徵中的根節點。

之後,算法將節點拆分為子節點並重複此過程“n”次。 現在你有一個有 n 棵樹的森林。 最後,您將執行自舉,即結合您的森林中存在的所有決策樹的結果。

它當然是最複雜的算法之一,因為它建立在決策樹的功能之上。

從技術上講,它是一種集成算法。 該算法通過屬性選擇指示生成單獨的決策樹。 每棵樹都依賴於一個獨立的隨機樣本。 在分類問題中,每棵樹都投票,最流行的類是最終結果。 另一方面,在回歸問題中,您將計算所有樹輸出的平均值,這將是您的最終結果。

與用於分類問題的其他非線性算法相比,隨機森林 Python 實現更簡單、更健壯。

以下示例將幫助您了解如何在日常生活中使用隨機森林分類器:

例子

假設你想買一輛新車,你向你最好的朋友 Supratik 徵求他的建議。 他會詢問你的喜好、預算和要求,還會分享他過去的汽車經驗,給你推薦。

在這裡,Supratik 正在使用決策樹方法根據您的回復為您提供反饋。 在他的建議之後,您對他的建議感到不確定,因此您向 Aditya 詢問了他的建議,他還詢問了您的偏好和其他要求。

假設你重複這個過程並問'n'個朋友這個問題。 現在你有幾輛車可供選擇。 您從朋友那裡收集所有選票,並決定購買得票最多的汽車。 您現在已經使用隨機森林方法來挑選要購買的汽車。

然而,你越多地迭代這個過程,你就越容易過度擬合。 那是因為您在決策樹中的數據集將變得更加具體。 隨機森林通過使用隨機性來解決這個問題。

隨機森林分類器的優缺點

每種機器學習算法都有其優點和缺點。 以下是隨機森林分類算法的優缺點:

優點

  • 隨機森林算法比大多數非線性分類器準確得多。
  • 該算法也非常健壯,因為它使用多個決策樹來得出結果。
  • 隨機森林分類器不會面臨過擬合問題,因為它取所有預測的平均值,消除偏差,從而解決過擬合問題。
  • 您可以將此算法用於回歸和分類問題,使其成為一種高度通用的算法。
  • 隨機森林不會讓缺失值導致問題。 他們可以使用中值代替連續變量或計算缺失值的鄰近加權平均值來解決這個問題。
  • 該算法為您提供了相對特徵重要性,使您可以輕鬆地為分類器選擇最有貢獻的特徵。

缺點

  • 該算法比其他分類算法慢得多,因為它使用多個決策樹進行預測。 當隨機森林分類器進行預測時,森林中的每棵樹都必須對相同的輸入進行預測並對其進行投票。 這個過程可能非常耗時。
  • 由於速度緩慢,隨機森林分類器可能不適合實時預測。
  • 與決策樹相比,該模型很難解釋,因為您可以通過遵循樹的路徑進行選擇。 但是,這在隨機森林中是不可能的,因為它有多個決策樹。

隨機森林和決策樹的區別

顧名思義,決策樹是具有分支和節點的樹狀流程圖。 該算法根據每個節點的輸入特徵拆分數據,並生成多個分支作為輸出。 這是一個迭代過程,會增加創建的分支(輸出)的數量和數據的差異化。 這個過程不斷重複,直到創建一個節點,其中幾乎所有數據都屬於同一類,並且不可能有更多的分支或拆分。

另一方面,隨機森林使用多個決策樹,因此得名“森林”。 它從用於進行所需預測的各種決策樹中收集選票。

因此,隨機森林分類器和決策樹之間的主要區別在於前者使用後者的集合。 以下是兩者之間的一些其他區別:

  • 決策樹面臨過度擬合的問題,但隨機森林沒有。 這是因為隨機森林分類器使用隨機子集來解決這個問題。
  • 決策樹比隨機森林快。 隨機森林使用多個決策樹,這需要大量計算能力,因此需要更多時間。
  • 決策樹比隨機森林更容易解釋,您可以根據規則輕鬆轉換前者,但對後者做同樣的事情相當困難。

構建算法(隨機森林 Sklearn)

在以下示例中,我們使用 scikit-learn 庫執行了隨機森林 Python 實現。 您可以按照本教程的步驟構建自己的隨機森林分類器。

雖然 80% 的數據科學任務需要您優化數據,其中包括數據清理、清理、修復缺失值等等。 然而,在這個例子中,我們將只關注算法的實現。

第一步:導入庫並加載數據集

首先,我們必須導入所需的庫並將我們的數據集加載到數據框中。

輸入:

#導入需要的庫

將熊貓導入為 pd

將 numpy 導入為 np

將 matplotlib.pyplot 導入為 plt

#導入數據集

從 sklearn.datasets 導入 load_iris
數據集 = load_iris ()

第二步:將數據集拆分為訓練集和測試集

在我們導入必要的庫並加載數據後,我們必須將數據集拆分為訓練集和測試集。 訓練集將幫助我們訓練模型,而測試集將幫助我們確定我們的模型實際上有多準確。

輸入:

# 將分類器擬合到訓練集

從 sklearn.tree 導入 DecisionTreeClassifier

模型 = DecisionTreeClassifier(criterion = 'entropy' , splitter = 'best' , random_state = 0)

model.fit(X_train, y_train)

輸出:

決策樹分類器(class_weight=None,criteria='entropy',max_depth=None,
max_features=無,max_leaf_nodes=無,
min_impurity_decrease=0.0,min_impurity_split=無,
min_samples_leaf=1, min_samples_split=2,
min_weight_fraction_leaf=0.0, presort=False, random_state=0,

拆分器='最好的')

第三步:創建隨機森林分類器

現在,我們將使用 Python 和 scikit-learn 創建我們的隨機森林分類器。

輸入:

#將分類器擬合到訓練集

從 sklearn.ensemble 導入 RandomForestClassifier

模型 = RandomForestClassifier(n_estimators=100, 標準-'熵', random_state = 0)

model.fit(X_train, y_train)

輸出:

RandomForestClassifier(bootstrap=True,class_weight=None,criteria='entropy',

max_depth=None, max_features='auto', max_leaf_nodes=None,

min_impurity_decrease=0.0,min_impurity_split=無,

min_samples_leaf=1, min_sampes_split=2,

min_weight_fraction_leaf=0.0,n_estimators=100,n_jobs=None,

oob_score=False,random_state=0,verbose=0,warm_start=False)

第四步:預測結果並製作混淆矩陣

一旦我們創建了分類器,我們就可以通過在測試集上使用它來預測結果,並製作混淆矩陣並獲得模型的準確度分數。 分數越高,我們的模型就越準確。

輸入:

#預測測試集結果

y_pred = mode.predict(X_test)

#創建混淆矩陣

從 sklearn.metrics 導入混淆矩陣

厘米 = 混淆矩陣(y_test,y_pred)

厘米

輸出

數組 ([[16, 0, 0]

[0, 17, 1]

[0, 0, 11]])

輸入

#獲取模型的分數

model.score(X_test, y_test)

輸出

0.977777777777777

結論

隨機森林分類器有很多應用。 它們是最強大的機器學習算法之一,是任何 AI 和 ML 專業人士的必備工具。

如果您有興趣了解有關人工智能的更多信息,請查看 IIIT-B 和 upGrad 的機器學習和 AI 執行 PG 計劃,該計劃專為工作專業人士設計,提供 450 多個小時的嚴格培訓、30 多個案例研究和作業、IIIT -B 校友身份,5 個以上實用的實踐頂點項目和頂級公司的工作協助。

機器學習中的隨機森林是什麼?

隨機森林是一種集成學習方法,它可以提供比大多數其他機器學習算法更準確的預測。 它通常用於決策樹學習。 使用決策樹創建森林,每個決策樹本身就是一個強分類器。 這些決策樹用於創建強分類器的森林。 這種強分類器的森林比決策樹或其他機器學習算法提供了更好的預測。

隨機森林和決策樹有什麼區別?

決策樹是描述給定問題的分析過程的流程圖。 我們傾向於將它們最常用於分類問題。 決策樹描述了進行分類所需的消除過程。 與決策樹相反,隨機森林基於樹的集合,許多研究表明它通常比決策樹更強大。 此外,隨機森林更能抵抗過擬合,在數據缺失時更穩定。

隨機森林的缺點是什麼?

隨機森林是一個稍微複雜的模型。 它不是一個黑盒模型,也不容易解釋結果。 它比其他機器學習模型慢。 它需要大量的特徵才能獲得良好的準確性。 隨機森林是一種集成學習方法,與其他集成方法(例如 bagging、boosting 或 stacking)一樣。 這些方法往往不穩定,這意味著如果訓練數據發生輕微變化,最終模型可能會發生巨大變化。