決策樹和隨機森林原理(Decision Trees and Random Forests)
決策樹是一種樹的數據結構的 if-then語句的體現;隨機森林是決策樹的組合。
(項目學習筆記及代碼)
一、決策樹
1、目標
數據結構中的樹一般包含一個根結點、若干個內部結點和若干個葉結點。而在決策樹中:葉子結點對應於決策結果,其他每個結點則對應於一個屬性測試劃分。
決策樹學習的目的即是爲了產生一棵泛化能力強,即處理未見示例能力強的決策樹。
2、如何得到決策樹?
假設有訓練集,其中是維的特徵(有個特徵),屬性特徵集有;而是該樣本所屬的類別,有種類別。
決策樹的學習過程本質上也是從訓練數據中歸納出一組分類的規則。關鍵在於在內部結點如何劃分。
有三種劃分的指標:
- 信息增益
- 信息熵 (information entropy) 是描述樣本集合純度(不確定度)最常用的一種指標。
其中是集合中第樣本的比例(概率)。此時已經可以理解到當集合中僅有一種類型的樣本數據,那麼概率等於1,即爲0,說明該集合純度最高(非常確定)。 - 那麼要選擇出最優的劃分屬性,也就將問題轉換成了劃分後的子集的信息熵是更小的(劃分一次後,那麼子集應該是更加確定的,直到最後葉子結點得到僅有一種類別的目標)。即引出了條件熵:
表示已知隨機變量的各種取值的前提下,隨機變量的不確定度,其中 - 再回到決策樹,將條件熵的理論應用到決策樹上面來,選擇出最優的劃分屬性,即可以用表示,在特徵確定的前提下,同時該特徵有種取值,於是有信息的不確定度:
其中是按照特徵且的取值爲劃分的子集;而和是集合中的樣本數,即可以體現概率。於是將特徵的所有可取值求和就是最後數據在確定的特徵下的不確定度。 - 於是信息增益:得知特徵的信息而使得數據樣本的信息的不確定度減小的程度。
而有多種特徵選擇,目標即是找到使得差值最大(減小的最大)的那個特徵,即應到是劃分屬性。
- 信息熵 (information entropy) 是描述樣本集合純度(不確定度)最常用的一種指標。
-
信息增益率
- 如果僅僅只是做差值衡量信息增益有可能並不會得到很好的結果,比如特徵的取值恰好對應每一個類別,那麼以該特徵爲劃分的原則的話仍然能夠得到較高的結果,但是一個特徵值一個類別根本學不到任何意義,而用增益的比值(類似於相對的)來衡量會更加恰當。
- 增益率的定義如下:
其中稱爲數據集關於屬性的熵;仍然是特徵可能的取值數。這樣就解決了用信息增益會出現儘可能向特徵取值方向多的方向進行劃分的結果。
-
基尼指數(Gini index)
- 基尼指數的使用一般是分類迴歸樹中分類的的指標衡量方式。即CART決策樹使用基尼指數"(Gini index) 來選擇劃分屬性。CART(Classification and Regression Tree),這是一種著名的決策樹學習算法,分類和迴歸任務都可用。迴歸一般就用平方誤差。
基尼值如下:
- 基尼值直觀反映了從數據集中隨機抽取兩個樣本,其類別不一致的概率。所以一般Gini值越小,則數據集的純度越高。於是有數據的基尼指數:
其中開篇定義是類別數,而是第類的樣本子集。 - 按照特徵的基尼指數定義如下:
上述式子表示經過特徵劃分後的不確定性,其中表示按照特徵取值進行劃分的數據子集,仍然是特徵可能的取值數。將所有的特徵集中對應的特徵所能取得的種可能取值,劃分的數據子集分別爲,分別計算其基尼指數。
最後:
- 基尼指數的使用一般是分類迴歸樹中分類的的指標衡量方式。即CART決策樹使用基尼指數"(Gini index) 來選擇劃分屬性。CART(Classification and Regression Tree),這是一種著名的決策樹學習算法,分類和迴歸任務都可用。迴歸一般就用平方誤差。
二、隨機森林
- 集成學習 (ensemble learning) 通過構建並結合多個學習器來完成學習任務,有時也被稱爲多分類器系統(multi-classifier system)。集成學習將多個學習器進行結合,以獲得比單一學習器更加顯著的泛化性能。
集成學習總體上分爲兩類,一種是各個弱學習器之間有強依賴關係(如:Boosting)。另一種是各個弱學習器之間不存在強依賴關係(如:Bagging,Random Forest)。 - Bagging是並行式集成學習方法最著名的代表。它是基於自助來樣法的 (bootstrap sampling),即,初始訓練集中約有 63.2%的樣本出現在來樣集中。
- 給定包含個樣本的數據集,我們對它進行採樣產生數據集:每次隨機從樣本中挑選一個樣本,將其拷貝放入,然後再將該樣本放回初始數據集中,使得該樣本在下次採樣時仍有可能被採到;這個過程重複執行次,我們就得到了包含個樣本的數據集,這就是自助採樣的結果。
即通過自助來樣,初始數據集 中約有 36.8% 的樣本未出現在採樣數據集中。 - 隨機森林(RF)就是Bagging的一個擴展變體,RF也就是以決策樹爲基學習器構建 Bagging 集成學習方法的。只是額外的進一步在決策樹的訓練過程中引入了隨機屬性選擇。
注意,在最初的時候,RF的融合是通過每個決策樹投票得到的,但最新的sklearn中實際是使用的平均分類器的概率預測來組合得到隨機森林的。
https://scikit-learn.org/stable/modules/ensemble.html#random-forests
總的來說,當出現了Bagging算法的時候,隨機森林可以說就已經呼之欲出了,而且隨機森林比較簡單,容易實現而且性能也不錯,所以應用廣泛。 - 但是隨機森林的隨機體現在什麼地方?在決策樹進行劃分最佳屬性特徵的時候,是全部屬性集合中找到最優的屬性特徵。而在隨機森林RF中,先從該結點的屬性特徵集合中隨機選擇一個包含個屬性特徵的集合。若令,則基決策樹的構建和傳統決策樹相同;若令則是隨機選擇一個屬性來劃分。一般情況下,推薦值 。