決策樹和隨機森林原理(Decision Trees and Random Forests)

決策樹和隨機森林原理(Decision Trees and Random Forests)

決策樹是一種樹的數據結構的 if-then語句的體現;隨機森林是決策樹的組合。
(項目學習筆記及代碼)

一、決策樹

1、目標

數據結構中的樹一般包含一個根結點、若干個內部結點和若干個葉結點。而在決策樹中:葉子結點對應於決策結果,其他每個結點則對應於一個屬性測試劃分。
決策樹學習的目的即是爲了產生一棵泛化能力強,即處理未見示例能力強的決策樹。

2、如何得到決策樹?

假設有訓練集D={(x1,y1),(x2,y2),...,(xm,ym)}D=\{(x_1,y_1),(x_2,y_2),...,(x_m,y_m)\},其中xiRdx_i \in \mathbb{R}^ddd維的特徵(有dd個特徵),屬性特徵集有A={a1,a2,...,ad}A=\{a_1,a_2,...,a_d\};而yiy_i是該樣本所屬的類別yiRKy_i \in \mathbb{R}^K,有KK種類別{1,2,...,K}\{1,2,...,K\}

決策樹的學習過程本質上也是從訓練數據中歸納出一組分類的規則。關鍵在於在內部結點如何劃分。
有三種劃分的指標:

  • 信息增益
    • 信息熵 (information entropy) 是描述樣本集合純度(不確定度)最常用的一種指標。
      H(D)=i=1mpilogpi H(D)=-\sum_{i=1}^{m}{p_i \log p_i}
      其中pi=P(X=xi)p_i=P(X=x_i)是集合DD中第ii樣本的比例(概率)。此時已經可以理解到當集合DD中僅有一種類型的樣本數據,那麼概率pip_i等於1,即H(D)H(D)爲0,說明該集合純度最高(非常確定)。
    • 那麼要選擇出最優的劃分屬性aa,也就將問題轉換成了劃分後的子集的信息熵是更小的(劃分一次後,那麼子集應該是更加確定的,直到最後葉子結點得到僅有一種類別的目標)。即引出了條件熵:
      H(YX)=i=1piH(YX=xi) \begin{aligned} H(Y|X) & = \sum_{i=1}^{ }p_i H(Y|X=x_i) \\ \end{aligned}
      表示已知隨機變量XX的各種取值的前提下,隨機變量YY的不確定度,其中pi=P(X=xi)p_i=P(X=x_i)
    • 再回到決策樹,將條件熵的理論應用到決策樹上面來,選擇出最優的劃分屬性aa,即可以用H(DA)H(D|A)表示,在特徵A=aA=a確定的前提下,同時該特徵aaVV種取值,於是有信息的不確定度:
      H(DA)=v=1VDvDH(Dv) H(D|A)=\sum_{v=1}^{V} \frac{|D^v|}{|D|} H(D^v)
      其中DvD^v是按照特徵A=aA=aaa的取值爲vv劃分的子集;而Dv|D^v|D|D|是集合中的樣本數,DvD\frac{|D^v|}{|D|}即可以體現概率pp。於是將特徵aa的所有可取值求和就是最後數據DD在確定的特徵AA下的不確定度。
    • 於是信息增益:得知特徵AA的信息而使得數據樣本DD的信息的不確定度減小的程度。
      g(D,A)=H(D)v=1VDvDH(Dv) \begin{aligned} g(D,A) &= H(D)-\sum_{v=1}^{V}{\frac{|D^v|}{|D|} H(D^v)} \\ \end{aligned}
      A={a1,a2,...,ad}A=\{a_1,a_2,...,a_d\}有多種特徵選擇,目標即是找到使得差值最大(減小的最大)的那個特徵,即應到是劃分屬性。

a=argmaxaAg(D,A) a_*=\arg \max_{a_* \in A} g(D,A)

  • 信息增益率

    • 如果僅僅只是做差值衡量信息增益有可能並不會得到很好的結果,比如特徵的取值恰好對應每一個類別,那麼以該特徵爲劃分的原則的話仍然能夠得到較高的結果,但是一個特徵值一個類別根本學不到任何意義,而用增益的比值(類似於相對的)來衡量會更加恰當。
    • 增益率的定義如下:
      gR(D,A)=g(D,A)HA(D) g_R(D,A)=\frac{g(D,A)}{H_A(D)}
      HA(D)=v=1VDvDlogDvD H_A(D)=-\sum_{v=1}^{V}{\frac{|D^v|}{|D|} \log \frac{|D^v|}{|D|}}
      其中HA(D)H_A(D)稱爲數據集DD關於屬性aa的熵;VV仍然是特徵aa可能的取值數。這樣就解決了用信息增益會出現儘可能向特徵aa取值方向多的方向進行劃分的結果。
  • 基尼指數(Gini index)

    • 基尼指數的使用一般是分類迴歸樹中分類的的指標衡量方式。即CART決策樹使用基尼指數"(Gini index) 來選擇劃分屬性。CART(Classification and Regression Tree),這是一種著名的決策樹學習算法,分類和迴歸任務都可用。迴歸一般就用平方誤差。
      基尼值如下:
      Gini(p)=k=1Kpk×(1pk)=1k=1Kpk2 \text{Gini}(p)=\sum_{k=1}^{K} {p_k \times (1-p_k)} = 1-\sum_{k=1}^{K} p_k^2
    • 基尼值直觀反映了從數據集DD中隨機抽取兩個樣本,其類別不一致的概率。所以一般Gini值越小,則數據集DD的純度越高。於是有數據DD的基尼指數:
      Gini(D)=1k=1K(CkD)2 \text{Gini}(D)= 1-\sum_{k=1}^{K} { \left( \frac{|C_k|}{|D|} \right)}^2
      其中KK開篇定義是類別數{1,2,...,K}\{1,2,...,K\},而Ck|C_k|是第kk類的樣本子集。
    • 按照特徵aa的基尼指數定義如下:
      Gini-index(D,A)=v=1VDvDGini(Dv) \text{Gini-index}(D,A)=\sum_{v=1}^{V}{\frac{|D^v|}{|D|} \text{Gini}(D^v)}
      上述式子表示經過特徵aa劃分後的不確定性,其中DvD^v表示按照特徵aa取值進行劃分的數據子集,VV仍然是特徵aa可能的取值數。將所有的特徵集AA中對應的特徵aa所能取得的VV種可能取值,劃分的數據子集分別爲DvD^v,分別計算其基尼指數。
      最後:
      a=arg minaAGini-index(D,A) a_*=\argmin_{a_* \in A} \text{Gini-index}(D,A)

二、隨機森林

  • 集成學習 (ensemble learning) 通過構建並結合多個學習器來完成學習任務,有時也被稱爲多分類器系統(multi-classifier system)。集成學習將多個學習器進行結合,以獲得比單一學習器更加顯著的泛化性能。
    集成學習總體上分爲兩類,一種是各個弱學習器之間有強依賴關係(如:Boosting)。另一種是各個弱學習器之間不存在強依賴關係(如:Bagging,Random Forest)。
  • Bagging是並行式集成學習方法最著名的代表。它是基於自助來樣法的 (bootstrap sampling),即,初始訓練集中約有 63.2%的樣本出現在來樣集中。
  • 給定包含mm個樣本的數據集,我們對它進行採樣產生數據集DID^I:每次隨機從樣本中挑選一個樣本,將其拷貝放入DID^I,然後再將該樣本放回初始數據集DD中,使得該樣本在下次採樣時仍有可能被採到;這個過程重複執行mm次,我們就得到了包含mm個樣本的數據集DID^I,這就是自助採樣的結果。
    limm+11m)m=1e=0.368 \lim_{m\rightarrow+\infty} (1-\frac{1}{m})^m=\frac{1}{e} =0.368
    即通過自助來樣,初始數據集 中約有 36.8% 的樣本未出現在採樣數據集DID^I中。
  • 隨機森林(RF)就是Bagging的一個擴展變體,RF也就是以決策樹爲基學習器構建 Bagging 集成學習方法的。只是額外的進一步在決策樹的訓練過程中引入了隨機屬性選擇。
    注意,在最初的時候,RF的融合是通過每個決策樹投票得到的,但最新的sklearn中實際是使用的平均分類器的概率預測來組合得到隨機森林的。
    https://scikit-learn.org/stable/modules/ensemble.html#random-forests
    總的來說,當出現了Bagging算法的時候,隨機森林可以說就已經呼之欲出了,而且隨機森林比較簡單,容易實現而且性能也不錯,所以應用廣泛。
  • 但是隨機森林的隨機體現在什麼地方?在決策樹進行劃分最佳屬性特徵的時候,是全部屬性集合AA中找到最優的屬性特徵。而在隨機森林RF中,先從該結點的屬性特徵集合中隨機選擇一個包含kk個屬性特徵的集合A={a1,a2,...,ak}A'=\{a_1,a_2,...,a_k\}。若令k=dk=d,則基決策樹的構建和傳統決策樹相同;若令k=1k=1則是隨機選擇一個屬性來劃分。一般情況下,推薦值 k=log2dk= \log_2 d
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章