機器學習中的那些樹——決策樹(一)

從零基礎開始參加了幾場數據挖掘方面的比賽,每次比賽都會學到很多東西,自從上次在 elo 的 kernel 中看見不少人都使用 LightGBM、XGBoost,那以後我也開始用起了這些,可是卻從未花時間去了解過這是到底是什麼,其內部工做原理是怎麼樣的,正好這段時間在參加df平臺消費者人羣畫像—信用智能評分這一比賽,作起了調參,但由於對其內部並非很收悉,便準備好好學習有關樹模型方面的內容,並寫下這系列的博客。這裏將從最基礎的決策樹開始講起。node

概述

決策樹(decision tree)是一類常見的機器學習方法。相似於流程圖,一顆決策樹包含一個根節點、若干個內部節點和葉子節點,每個樹節點表示對一個特徵或屬性的測試,每個分支表明一個屬性的輸出,每個葉子節點對應一種決策結果。從根節點到每一個葉節點的路徑對應了一個斷定測試序列。其學習的基本流程遵循分治(divide-and-conquer)策略。算法

算法

輸入:訓練集\(D=\{(x_1,y_1),(x_2,y_2),... ,(x_n,y_n)\}\)
屬性集\(A=\{a_1,a_2,...,a_n\}\\\)
過程:函數\(TreeGenerate(D,A)\)機器學習

\(1:生成節點 node;\)ide

\(2:if\) $ D $ $ 中樣本全屬於同一類別$ $ C$ $ then$函數

\(3:\quad將\) $ node$ \(標 記爲\) $ C$ $ 類葉節點;$ $ return$學習

\(4:end\) $ if$測試

\(5:if\) $ A=\emptyset $ $ OR$ $ D$ $ 中樣本在A上取值相同$ $ then $優化

\(6:\quad 將node標記爲葉節點,其類別標記爲D中樣本數最多的類;then\)spa

\(7:end\) \(if\)code

\(8:從A中選擇最優劃分屬性\)

$9:for $ $ a_* $ \(的每個值\) $ a_{*}^{v}$ $ do$

\(10:\quad 爲node生成一個分支;令D_v表示D中在a_*上取值爲a_{*}^{v} 的樣本子集:\)

$11:\quad if $ \(D_v\) \(爲空\) \(then\)

\(12:\quad\quad將分支節點標記爲葉節點,其類別標記爲D中樣本最多的類;return\)

\(13:\quad else\)

\(14:\quad\quad以TreeGenerate(D_v,A\)  \(\{a_*\})爲分支節點\)

\(15:\quad end\) \(if\)

\(16:end\) \(for\)

輸出:\(node\)爲節點的一顆決策樹

劃分選擇

從上面的算法中能夠看出,最重要的一步就是第8行選取最優劃分,但咱們該如何選取最優劃分呢?這裏就涉及到了信息增益的概念。在講解信息增益前,先來了解了解信息熵和條件熵。

信息熵(information entropy)是度量樣本集合純度最經常使用的一種指標,它能夠衡量一個隨機變量出現的指望值。若是信息的不肯定性越大,熵的值也就越大,出現的各類狀況也就越多。

假設當前樣本集合\(D\)中第\(k\)類樣本所佔比例爲\(p_k(k=1,2,\cdots,|n|)\),則\(D\)的信息熵爲:
\[ Ent(D)=-\sum_{k=1}^{|n|}p_k\log_2p_k \tag{1} \]
定義:\(0log0 = 0\)

條件熵(conditional entropy)表示在已知隨機變量X的條件下隨機變量Y的不肯定性。定義隨機變量X給定的條件下隨機變量Y的機率分佈的熵:
\[ Ent(Y|X)=\sum_{k=1}^{n}p_kH(Y|X=x_k) \tag{2} \]
假定離散屬性(特徵)a有V個可能取值\(\{a^1,a^2,\cdots,a^V\}\),若使用a來對樣本集D進行劃分,則會產生V個分支節點,其中第\(v\)個分支節點包含了\(D\)中全部在屬性(特徵)a上取值爲\(a^v\)的樣本,記做\(D^v\)。那麼,特徵\(a^v\)的條件機率分佈爲 \(\frac{|D^v|}{|D|}\),咱們可得信息增益(information gain):
\[ Gain(D,a)=Ent(D)-Ent(D|a) \tag{3} \\ =Ent(D)-\sum_{v=1}^{V}\frac{|D^v|}{D}Ent(D^v) \]
由上式可知,信息增益是相對於特徵而言的,定義爲集合\(D\)的信息熵與特徵\(a\)\(D\)的條件熵之差。

這裏回到一開始的問題,如何選擇最優劃分?方法是對訓練數據集\(D\),計算其每一個特徵的信息增益,並比較它們的大小,選擇信息增益最大的特徵。

然而,有時存在這麼一個問題,以信息增益做爲劃分訓練數據集的特徵,存在偏向於選擇取值較多的特徵的問題。對這一問題的解決方法是使用信息增益比(information gain ratio):

​ 特徵A對訓練數據集D的信息增益比\(g_R(D,A)\)定義爲其信息增益\(g(D,A)\)與訓練數據集D關於A的值的熵\(H_A(D)\)之比,即
\[ g_R(D,A)=\frac{g(D,A)}{H_A(D)} \tag{4} \]
其中,\(H_A(D)=-\sum_{i=1}^n\frac{|D_i|}{|D|}log_2\frac{|D_i|}{|D|}\),n是特徵A取值的個數。

結語

這篇文章中介紹了決策樹的一些基本理論,對於決策樹的優化以及ID三、C4.五、CART的代碼實現將在後面的文章中給出。

相關文章
相關標籤/搜索