隨機森林中訓練每一棵樹輸入的m個特徵都是隨機選取的嗎?
RF要有很多樹,每棵樹選同等數目的特徵,比如第一棵樹隨機選1,3,5號特徵,第二棵樹隨機選2,4,6號特徵,是這個意思嗎?還是所有樹都隨機選出1,3,5呢?
先貼演算法。圖來自於周志華老師的書[1]:Ensemble Methods: Foundations and Algorithms。
該圖是random forest[2]演算法建立一棵樹的偽代碼。第一行表示創造一個新節點。第5行表示隨機選取一些特徵。
之後在10-11行表示遞歸創造該節點的左右子節點,於是每個子節點又會隨機選取不同的特徵。現在回答題主的問題。不是每棵樹選相同的子特徵,也不是每棵樹隨機選不同的子特徵。而是每個節點都會隨機選擇一些特徵。這裡再多扯一些。這個選擇子特徵的個數的經驗值一般是原特徵個數的平方根(分類問題)或原特徵個數的三分之一(回歸問題).__________________________________________________
再多扯一些,題主說的每棵樹選擇一個固定的特徵子集,其實是一個random subspace[3]演算法。下面直接貼出演算法,圖依然出自周老師的書。——————————————————————————————本回答涉及到的文獻:
1. Z.-H. Zhou. Ensemble Methods: Foundations and Algorithms, Boca Raton, FL: Chapman Hall/CRC, 2012. (ISBN 978-1-439-830031)2. L. Breiman. Random forests.Machine Learning, 45(1):5–32, 2001.3.T. K. Ho. The random subspace method for constructing decision forests.IEEE Transactions on Pattern Analysis and Machine Intelligence, 20(8):832–844, 1998.
不是每棵樹隨機選擇特徵,而是每一個結點都隨機選擇特徵。
除了一次性隨機抽取部分特徵用來構建一棵CART之外,還可以在CART每次branching的時候隨機抽取一部分特徵計算Gini impurity或均方誤差來選擇best split feature(RF作者使用的這種方法)。更進一步,在構建sub-space的時候,不僅可以使用feature selection,還可以使用feature transformation,每次braching隨機選擇一個變換矩陣將原始feature變換到低維空間。More randomness, more robust ^ ^
針對為什麼在每次branching的時候只從隨機抽取的部分feature中找best split做補充。如果數據集中有幾個feature是十分predictive的,那麼所有的CART在branching都傾向於使用這個幾個feature,最終結果是雖然每棵樹的訓練樣本不相同,但仍然長得很像,而在branching上加randomness可以消除這種現象。每棵樹都是解決一部分問題的專家,所以當然要隨機不同的東西。
每棵樹隨機抽,第一棵抽中135,第二棵再獨立抽。使得每棵樹只拿到一部分信息。
隨機森林的每棵樹訓練過程,主要是兩大點,採樣和全分裂。樓主問的是採樣過程,這裡簡單說下。隨機森林的採樣又包括行採樣和列採樣,對於行採樣是採取有放回的採樣,採樣的個數等於樣本總個數,列採樣是隨機的採樣,對於列採樣的個數n1是要小於總列數n(特徵數)的。
瀉藥。
@張馨宇 和 @Stark Einstein 兩位大牛的回答言簡意賅,相信已經可以解答題主的問題了。我只談談我對隨機森林的使用:
1、它是一個Out Of Box的演算法,也就是它對超參數的依賴不強,可以拿來即用;所以一開始接觸數據挖掘的時候,感覺隨機森林真是美,直接把數據扔進模型,不用數據預處理、進行簡單調參(其實就是試個值),就能得到一個相對不錯的的結果。2、它的另一個更重要的作用是用來做 特徵提取。隨機特徵變數選取是這樣的,由於隨機森林在進行節點分裂時,不是所有的屬性都參與屬性指標的計算,而是隨機地選擇某幾個屬性參與比較。隨機特徵變數是為了使每棵決策樹之間的相關性減少,同時提升每棵決策樹的分類精度。其基本思想是,在進行節點分裂時,讓所有的屬性按照某種概率分布隨機選擇其中某幾個屬性參與節點的分裂過程。最常用演算法是以CART構建元決策樹,CART按照「GINI係數最小原則」進行節點分裂,在樹的生長過程里不是全部選取特徵進行節點分裂,如果有L個屬性可選,F個特徵變數(lgL+1)會被選擇。
圖片出處:《數據挖掘:概念與技術》(第三版)
跟常規的bagging區別就是不僅樣本random,feature也random,所以每棵樹的樣本的feature也random,不一定不一樣哦(一樣的概率太小了)
每次都是有放回的隨機抽樣。第一次是135,第二次可能是135,也可能是123,124,234,456...前一次抽樣與後一次抽樣相互獨立。
隨機選取,但是是有放回的,可能會重複吧
推薦閱讀:
※如果本科已經能拿到BAT演算法offer,是否還有必要讀研?
※有什麼網站介紹數據挖掘演算法的實現過程的?
※如何設計權重演算法?
※Google 如何管理龐大的搜索結果排序規則集合?
※如何設計一個演算法實現商品的展示排序按照用戶的點擊量和發布時間綜合排序?