一、隨機森林理論介紹
1.1 優缺點優點: (1) 不必擔心過度擬合;
(2) 適用於數據集中存在大量未知特徵;
(3) 能夠估計哪個特徵在分類中更重要; (4) 具有很好的抗雜訊能力; (5) 演算法容易理解; (6) 可以並行處理。缺點: (1) 對小量數據集和低維數據集的分類不一定可以得到很好的效果。 (2) 執行速度雖然比Boosting等快,但是比單個的決策樹慢很多。 (3) 可能會出現一些差異度非常小的樹,淹沒了一些正確的決策。
1.2 生成步驟介紹
1、從原始訓練數據集中,應用bootstrap方法有放回地隨機抽取k個新的自助樣本集,並由此構建k棵分類回歸樹,每次未被抽到的樣本組成了K個袋外數據(out-of-bag,BBB)。
2、設有n 個特徵,則在每一棵樹的每個節點處隨機抽取mtry 個特徵,通過計算每個特徵蘊含的信息量,特徵中選擇一個最具有分類能力的特徵進行節點分裂。3、每棵樹最大限度地生長, 不做任何剪裁4、將生成的多棵樹組成隨機森林, 用隨機森林對新的數據進行分類, 分類結果按樹分類器投票多少而定。
1.3 隨機森林與SVM的比較(1)不需要調節過多的參數,因為隨機森林只需要調節樹的數量,而且樹的數量一般是越多越好,而其他機器學習演算法,比如SVM,有非常多超參數需要調整,如選擇最合適的核函數,正則懲罰等。(2)分類較為簡單、直接。隨機深林和支持向量機都是非參數模型(複雜度隨著訓練模型樣本的增加而增大)。相較於一般線性模型,就計算消耗來看,訓練非參數模型因此更為耗時耗力。分類樹越多,需要更耗時來構建隨機森林模型。同樣,我們訓練出來的支持向量機有很多支持向量,最壞情況為,我們訓練集有多少實例,就有多少支持向量。雖然,我們可以使用多類支持向量機,但傳統多類分類問題的執行一般是one-vs-all(所謂one-vs-all 就是將binary分類的方法應用到多類分類中。比如我想分成K類,那麼就將其中一類作為positive),因此我們還是需要為每個類訓練一個支持向量機。相反,決策樹與隨機深林則可以毫無壓力解決多類問題。(3)比較容易入手實踐。隨機森林在訓練模型上要更為簡單。你很容易可以得到一個又好且具魯棒性的模型。隨機森林模型的複雜度與訓練樣本和樹成正比。支持向量機則需要我們在調參方面做些工作,除此之外,計算成本會隨著類增加呈線性增長。(4)小數據上,SVM優異,而隨機森林對數據需求較大。就經驗來說,我更願意認為支持向量機在存在較少極值的小數據集上具有優勢。隨機森林則需要更多數據但一般可以得到非常好的且具有魯棒性的模型。
1.5 隨機森林與深度學習的比較深度學習需要比隨機森林更大的模型來擬合模型,往往,深度學習演算法需要耗時更大,相比於諸如隨機森林和支持向量機那樣的現成分類器,安裝配置好一個神經網路模型來使用深度學習演算法的過程則更為乏味。但不可否認,深度學習在更為複雜問題上,如圖片分類,自然語言處理,語音識別方面更具優勢。另外一個優勢為你不需要太關注特徵工程相關工作。實際上,至於如何選擇分類器取決於你的數據量和問題的一般複雜性(和你要求的效果)。這也是你作為機器學習從業者逐步會獲得的經驗。可參考論文《An Empirical Comparison of Supervised Learning Algorithms》。
1.6 隨機森林與決策樹之間的區別模型克服了單棵決策樹易過擬合的缺點,模型效果在準確性和穩定性方面都有顯著提升。決策樹+bagging=隨機森林
1.7 隨機森林不會發生過擬合的原因在建立每一棵決策樹的過程中,有兩點需要注意-採樣與完全分裂。首先是兩個隨機採樣的過程,random forest對輸入的數據要進行行、列的採樣。對於行採樣,採用有放回的方式,也就是在採樣得到的樣本集合中,可能有重複的樣本。假設輸入樣本為N個,那麼採樣的樣本也為N個。這樣使得在訓練的時候,每一棵樹的輸入樣本都不是全部的樣本,使得相對不容易出現over-fitting。然後進行列採樣,從M個feature中,選擇m個(m << M)。之後就是對採樣之後的數據使用完全分裂的方式建立出決策樹,這樣決策樹的某一個葉子節點要麼是無法繼續分裂的,要麼裡面的所有樣本的都是指向的同一個分類。一般很多的決策樹演算法都一個重要的步驟-剪枝,但是這裡不這樣干,由於之前的兩個隨機採樣的過程保證了隨機性,所以就算不剪枝,也不會出現over-fitting。 按這種演算法得到的隨機森林中的每一棵都是很弱的,但是大家組合起來就很厲害了。可以這樣比喻隨機森林演算法:每一棵決策樹就是一個精通於某一個窄領域的專家(因為我們從M個feature中選擇m讓每一棵決策樹進行學習),這樣在隨機森林中就有了很多個精通不同領域的專家,對一個新的問題(新的輸入數據),可以用不同的角度去看待它,最終由各個專家,投票得到結果。
1.8 隨機森林與梯度提升樹(GBDT)區隨機森林:決策樹+bagging=隨機森林梯度提升樹:決策樹Boosting=GBDT
兩者區別在於bagging boosting之間的區別,可見: