因为记不太清决策树划分节点时的特征选择依据是怎么算的,所以现在整理一下,顺便区分一下ID3、C4.5、CART分别使用的节点划分方法以及区别。
决策树的建树方法都是使用贪心的方法,每次都选择当前节点的最优划分。
ID3
ID3使用最大信息熵增益(Information Gain)来选择分割数据的特征
信息熵Entropy或Info。熵反应了物体内部的混乱程度,而信息熵反应了不同类的样本的占比,也就是节点的纯度。信息熵越大,说明样本的分布节点的纯度越低,信息量越少;相反,信息熵越小,说明样本的角度越高,信息量越大。
信息熵的计算公式如下:
I n f o ( t ) = − Σ j ( p ( j ∣ t ) ⋅ l o g 2 p ( j ∣ t ) ) Info(t) = -\Sigma_j(p(j|t) \cdot log_2p(j|t)) Info(t)=−Σj(p(j∣t)⋅log2p(j∣t))
其中 p ( j ∣ t ) p(j|t) p(j∣t)表示该特征的特征值j在节点t出现的频率。
根据信息熵的含义,我们知道我们要选择能使节点内部纯度高、也就是信息熵最小的特征作为划分依据,因此我们就计算以某个特征划分自己之后当前节点划分之后各个节点的信息熵之和,并且要是这个和与当前节点划分前的信息熵减小的尽可能多。而这个差也就是信息增益:
G a i n s p l i t = I n f o ( p ) − ( Σ i = 1 k n i n I n f o ( i ) ) Gain_{split} = Info(p) - (\Sigma_{i=1}^k \frac{n_i}{n}Info(i)) Gainsplit=Info(p)−(Σi=1knniInfo(i))
其中p为代表父节点,父节点p分为k个子节点, n为父节点样本的总数,ni表示在子节点i中对应的样本数量。
使用最大信息增益的方法所建的决策时就是ID3树。
C4.5
当一个特征可取的特征值较多时,这个特征的每个取值对应的样本就会比较少,这就会导致信息增益增大,ID3会倾向于选择这种特征值较多的特征。
为了解决这个问题,C4.5使用信息增益比率(Gain Ratio)作为划分的依据。信息增益比率在信息熵增益的基础上除以每个划分的信息熵(Split Information),从而消除这种有大量的子节点、但每个子节点的样本数量很少的情况的影响。
S
l
p
i
t
I
N
F
O
=
−
Σ
i
=
1
k
n
i
n
l
o
g
2
n
i
n
SlpitINFO=-\Sigma_{i=1}^k \frac{n_i}{n}log_2\frac{n_i}{n}
SlpitINFO=−Σi=1knnilog2nni
G a i n R A T I O s p l i t = G r a i n s p l i t S p l i t I N F O GainRATIO_{split}=\frac{Grain_{split}}{SplitINFO} GainRATIOsplit=SplitINFOGrainsplit
C4.5算法使用信息增益比率来选择节点的划分特征的依据。
CART(Classify And Regression Tree)
CART使用基尼系数(GINI)作为划分依据。选择GINI系数最小的特征作为当前的分割数据的特征。基尼系数反映了从样本集中随机抽取两个样本,其类别不一样的概率。基尼系数越大,也就意味着从样本集中随机抽两个样本的类别不相同的概率越大,也就是样本的纯度越小,即对应这信息熵越大。
G I N I = 1 − Σ j [ p ( j ∣ t ) ] 2 GINI=1-\Sigma_j[p(j|t)]^2 GINI=1−Σj[p(j∣t)]2
因此作为判断依据时和最大信息增益的思路不多,计算每个子结点的基尼系数。我们希望子节点的基尼系数最小。
G I N I s p l i t = Σ i = 1 k n i n G I N I ( i ) GINI_{split}=\Sigma_{i=1}^k\frac{n_i}{n}GINI(i) GINIsplit=Σi=1knniGINI(i)
其中ni是子节点i的记录数,n是节点p的记录数。
CART使用基尼系数作为选择节点的划分特征的依据。
以上就是三种决策树划分节点是的指标以及对应的三种树。