全文共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自媒體 「讀芯術」