以前簡單介紹了決策樹,這篇文章簡單介紹一下隨機森林以及優缺點。html
經過構建並結合多個分類器來完成學習任務。將多個學習器進行結合,常比得到單一學習器更好的泛化性能。 目前集成學習方法大體可分爲兩類,即個體學習器之間存在強依賴關係,必須串行生成的序列化方法,以及個體學習器之間不存在依賴關係,可同時生成的並行化方法;前者表明時Boosting, 後者表明是Bagging和隨機森林(random forest: RF)。算法
要獲得泛化性能強的集成,則集成中的個體學習器應儘量相互獨立。 「自助採樣法」:給定包含m個樣本的數據集, 先隨機選取一個樣本放入採樣集中,再把該樣本放回,重複m次隨機操做,獲得含m個樣本的採樣集。這樣使得初始訓練集中有的樣本在採樣集中出現,有的從未出現。 如此,能夠採樣出T個含m個樣本的採樣集,基於每一個採樣集訓練出一個基礎學習器,將這些基礎學習器進行結合,這就是Bagging的基本流程。在對預測輸出進行結合時, Bagging一般對分類任務使用簡單投票,對迴歸任務使用簡單平均法。dom
關於決策樹: 決策樹實際是將空間用超平面(後面介紹svm也會提到)進行劃分的一種方法,每次分割,都將當前空間一份爲二。
機器學習
隨機森林是Bagging的一個擴展。隨機森林在以決策樹爲基學習器構建Bagging集成的基礎上,進一步在決策樹的訓練過程當中引入隨機屬性選擇(引入隨機特徵選擇)。傳統決策樹在選擇劃分屬性時在當前節點的屬性結合(d個屬性),利用信息論的知識選取一個最優屬性;而在隨機森林中, 對決策樹的每一個節點,先從該節點的屬性集合中隨機選取包含k個屬性的子屬性集,而後選擇最優屬性用於劃分。這裏的參數k控制了隨機性的引入程度。若k=d, 則是通常的決策樹;k=1, 則是隨機選擇一個屬性進行劃分。隨機森林對用作構建樹的數據作了限制,使的生成的決策樹之間沒有關聯,提高算法效果。性能
隨機森林用於分類是,即採用n個決策樹分類,將分類結果用簡單投票獲得最終分類,提升準確率。 隨機森林是對決策樹的集成,其兩點不一樣也在上面敘述中提到:學習
隨機森林須要調整的參數:測試
float
形式。隨機森林的優勢:.net
基本理解後,能夠參考一下別人和sklearn的相關算法實現,可能的話,我也會作個簡單實現。rest
參考文章:
機器學習中的算法(1)-決策樹模型組合之隨機森林與GBDT
隨機森林的原理分析及Python代碼實現code