隨機森林和機器學習

dicksonjyl560101發表於2018-12-14


隨機森林和機器學習

 

http://blog.sina.com.cn/s/blog_cfa68e330102zelx.html

 

隨機森林演算法是當今最有用的機器學習演算法之一。該演算法被認為是機器學習世界的主力。本文目的是描述隨機森林演算法如何對資料集進行操作。我將描述隨機森林演算法的構建塊,包括決策樹,bootstrapping,bagging,並將它們放在一起以實際構建隨機森林演算法。另外,我將向您介紹我所遵循的示例,該示例將直觀地向您展示演算法的功能。

 

隨機森林演算法:它是如何工作的

決策樹:

隨機森林演算法透過將幾個二元決策樹聚合在一起來工作。決策樹是一種特殊的樹結構,其中每個節點代表一個決策,並透過從上到下的流結構連線到該決策的所有選項。隨機森林演算法使用二元決策樹,這實質上意味著每個節點分成兩條路徑,代表決策的結果。 樹是迴歸和分類問題的有用結構。如您所見,每個節點分成兩個路徑。在這種情況下,我們的二元決策樹中的每個節點都代表我們資料集的一個特徵。

 

Bootstrapping

bootstrap 方法建立在以下思想的基礎上:透過使用資料的子樣本而不是計算整個資料集的平均值,可以獲得更好的資料平均值。在bootstrap方法中,您將採用替換的資料子樣本,然後計算每個子樣本的平均值。一旦你對合適數量的子樣本重複了這個過程,你就可以取所有計算出來的平均值,並返回資料集的平均值。 Bootstrapping 類似於hive mind原則,如果你給一個大群的人一個問題,問群體中如何解決它,通常這些答案可以組合成一個可行的解決方案。類似地,當使用樹作為模型時,bootstrap方法給出了更準確的資料平均值。

 

Bagging (Bootstrap Aggregation):

Bagging 是一種整合技術,代表bootstrap聚合。整合技術是一種將多個機器學習演算法的預測組合在一起的方法,它比任何給定模型都能做出更準確的預測。Bagging基於bootstrap聚合的思想,最適用於分類和迴歸樹(CART)。具體來說,Bagging過程就是對資料建立許多隨機的子樣本,然後在每個子樣本上訓練一個CART模型。在每個子樣本上執行模型將返回一個預測。然後從每個子樣本中進行預測以獲得最準確的預測,然後可以將該預測應用到新的機器學習資料集。

 

Bagging 法最適用於顯示高度差異的機器學習演算法。 在決策樹上訓練的模型可以顯示高水平的方差,因為它們是在不同的資料子樣本上訓練的,所以這些模型通常會根據子樣本中的資料返回截然不同的預測。透過聚合所有這些預測,可以減少模型中的誤差,並返回更準確的預測。

 

 

 

隨機森林:

隨機森林建立在前述概念的基礎上,透過將隨機性引入拆分二元決策樹中的每個節點的引數。 決策樹是貪婪的,這意味著它們使用貪婪演算法來確定要拆分的引數的最佳值,以便最小化誤差。 為了使我們的隨機森林能夠工作,所有樹都需要儘可能不相關。因此,隨機森林對CART模型進行了調整,並將其拆分為資料的不同子樣本中的大量隨機值。隨機森林的美妙之處在於,當我們在資料的子樣本上隨機拆分執行我們的模型時,我們為每個預測得到的誤差是隨機的。 這些誤差可以透過隨機分佈建模。隨機分佈的均值為0.因此,當我們執行我們的隨機森林並取所有預測的平均值時,我們會得到一個在理想條件下最小化誤差的模型。

 

關於噪聲的說明:

噪聲本質上是不相關的資料或資料中的錯誤,它們混淆了我們試圖在資料集中發現的潛在趨勢/模式。噪聲可以包括具有大量離群值的資料、具有與我們的模型無關的特性的資料集,以及資料中不遵循模式的記錄/關係。大多數資料集包含有噪聲的元素,這對我們的模型有誤差。

 

 

一個指導性的例子:

簡介:該教程指導我建立一個關於預測推土機銷售價格的老式競賽模型。資料集是用於推土機的Kelly Blue Book,它具有各種功能。

 

EDA (探索性資料分析):

我們首先閱讀CSV檔案並執行EDA。 EDA 是機器學習過程的重要組成部分。在EDA期間,您將檢視所有特徵,並嘗試選擇與預測目標最相關的特徵。 在我們的例子中,目標是銷售價格。

 

此資料集中最重要的特徵是SalesID,SalePrice,MachineID和SaleDate。下一步是解析SaleDate上的資料,以便我們可以獲得每個特定銷售日期的所有資料。

確定哪些特徵最有效後,下一步是清理和預處理資料。 Fastai 庫附帶了一些有用的功能,用於處理包含NA值的特徵以及將分類變數轉換為數值變數。train_cats函式將分類變數轉換為數值變數。例如,UsageBand特徵中的“High”,“Low”和“Medium”將以數字形式變為3,1和2。此外,proc_df函式將任何特徵中的NA值替換為該特徵的中值。

 

在完成EDA並清理資料框後,我們準備執行我們的初始隨機森林迴歸。

但是當你執行RandomForestRegressor時,究竟發生了什麼?

讓我們簡化迴歸量並繪製一棵樹

 

正如您所看到的,機器學習模型是一個二元決策樹,它在不同的特徵上進行分割。 在sklearn中,RandomForestRegressor實際上會自動遍歷子樣本中可用的所有特徵組合,並選擇要拆分的值以減少MSE。 第一個節點表示如果我們僅將10.189預測為log of sale price的平均值,將會發生什麼呢。第一個節點的MSE是0.495,如果我們只使用這個節點並預測 log of price 為10.189,這將是我們的MSE。。隨著樹的加深,我們的MSE被最小化,因為它將各種決策聚合在一起,變得更加精確。

 


現在想象一下,在數百個資料子樣本上執行這個過程並返回這些預測。 當您使用的樹的數量增加時,機器學習模型的效能就會提高,直到達到瓶頸。把這些樹整合在一起你就可以建造你的隨機森林並返回最準確的預測。

 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29829936/viewspace-2285288/,如需轉載,請註明出處,否則將追究法律責任。

相關文章