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


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

概述

決策樹(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;\)

\(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\)

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

\(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取值的個數。

結語

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM