隨機森林算法梳理及相關參數介紹

集成學習的概念

集成學習是使用一系列學習器進行學習,並使用某種規則把各個學習結果進行整合從而獲得比單個學習器更好的學習效果的一種機器學習方法。一般情況下,集成學習中的多個個體學習器都是同質的"弱學習器"。

bagging和boosting

bagging和boosting都屬於集成學習算法。

bagging,是一種非常簡單而通用的機器學習集成學習算法。RF(隨機森林)需要用到bagging,但是其他的分類或者回歸算法都可以用到bagging,以減少over-fitting。

boosting是一族可將弱學習器提升爲強學習器的算法.

隨機森林

隨機森林是以決策樹爲個體學習器進行集成的算法,決策樹容易過擬合,隨機森林可以降低擬合程度。

簡單來說從原始訓練數據集中,有放回的採樣出若干個小集合,然後在每個小集合上train model,對所有的model output取平均(regression)或者投票(classification)。

  1. 從原始樣本集中抽取訓練集。每輪從原始樣本集中使用Bootstraping(自助法)的方法抽取n個訓練樣本(在訓練集中,有些樣本可能被多次抽取到,而有些樣本可能一次都沒有被抽中)。共進行k輪抽取,得到k個訓練集。(k個訓練集之間是相互獨立的)
  2. 每次使用一個訓練集得到一個模型,k個訓練集共得到k個模型。(注:這裏並沒有具體的分類算法或迴歸方法,我們可以根據具體問題採用不同的分類或迴歸方法,如決策樹、感知器等)
  3. 對分類問題:將上步得到的k個模型採用投票的方式得到分類結果;對迴歸問題,計算上述模型的均值作爲最後的結果。(所有模型的重要性相同)

優點

  1. 單個決策樹模型很容易受到噪音數據的影響,而混合模型就不容易會。
  2. 但是如果在同樣的數據上train多棵樹,也很容易得到強相關的樹(或者是一樣的樹),那效果就不好了;上面的Bootstraping的方法就是讓model看到不同的train data。
  3. 隨機森林能處理很高維度的數據(也就是很多特徵的數據),並且不用做特徵選擇。
  4. 訓練速度快,容易做成並行化方法(訓練時,樹與樹之間是相互獨立的)。
  5. 隨機森林抗過擬合能力比較強

缺點

  1. 隨機森林在解決迴歸問題時,並沒有像它在分類中表現的那麼好,這是因爲它並不能給出一個連續的輸出。當進行迴歸時,隨機森林不能夠做出超越訓練集數據範圍的預測,這可能導致在某些特定噪聲的數據進行建模時出現過度擬合。(PS:隨機森林已經被證明在某些噪音較大的分類或者回歸問題上回過擬合)。
  2. 對於小數據或者低維數據(特徵較少的數據),可能不能產生很好的分類。(處理高維數據,處理特徵遺失數據,處理不平衡數據是隨機森林的長處)。

隨機森林參數

n_estimators :決策樹的個數,越多越好,但也不能太多。

criterion :決策樹支持的標準是”gini”(gini係數) or “entropy”(熵值)(default=”gini”)。

max_depth:樹的最大深度。

min_samples_split:根據屬性劃分節點時,每個劃分最少的樣本數。

min_samples_leaf :葉子節點最少的樣本數。

max_features

選擇最適屬性時劃分的特徵不能超過此值。
當爲整數時,即最大特徵數;當爲小數時,訓練集特徵數*小數;
if “auto”, then max_features=sqrt(n_features).
If “sqrt”, thenmax_features=sqrt(n_features).
If “log2”, thenmax_features=log2(n_features).
If None, then max_features=n_features.

bootstrap:是否有放回的採樣

n_jobs:並行job個數。這個在ensemble算法中非常重要,尤其是bagging(而非boosting,因爲boosting的每次迭代之間有影響,所以很難進行並行化),因爲可以並行從而提高性能。1=不併行;n:n個並行;-1:CPU有多少core,就啓動多少job。

應用場景

隨機森林可用於變量比較多的分類場景,且變量爲離散型較好。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章