决策树

决策树

决策树是一种树形结构,每个叶节点代表一种类别。采用自顶向下的递归方法构建。基本思想是以信息熵为度量,构造一棵熵值下降最快的树。叶节点的熵值为0.。

信息量

设随机变量 x 的分布为 P(x),则定义 x 信息量为: I ( x ) = − log ⁡ 2 P ( x ) I(x) = -\log_2P(x) I(x)=log2P(x)

x 和 y 同时发生的信息量为: I ( x , y ) = I ( x ) + I ( y ) I(x, y) = I(x) + I(y) I(x,y)=I(x)+I(y)

事件发生的概率越小,包含的信息量越大,反之越小

熵代表平均信息量,表示随机变量的不确定性。定义如下:

H ( X ) = − ∑ x ∈ X p ( x ) l o g 2 P ( x ) H(X) = -\sum_{x \in X} p(x)log_2P(x) H(X)=xXp(x)log2P(x)

P ( x i ) P(x_i) P(xi) 代表随机事件 X 为 x i x_i xi 的概率。

条件熵

在一个条件下,随机变量的不确定性。

H(y|x) 表示在事件 x 发生的前提下 y 的熵。

H ( Y ∣ X ) = ∑ x ∈ X p ( x ) H ( Y ∣ X = x ) = − ∑ x ∈ X p ( x ) ∑ y ∈ Y p ( y ∣ x ) l o g p ( y ∣ x ) − ∑ x ∈ X ∑ y ∈ Y p ( x , y ) l o g p ( y ∣ x ) H(Y|X) = \sum_{x \in X} p(x)H(Y|X = x) \\ = -\sum_{x \in X}p(x)\sum_{y \in Y} p(y|x)logp(y|x) \\ -\sum_{x \in X} \sum_{y \in Y} p(x, y)logp(y|x) H(YX)=xXp(x)H(YX=x)=xXp(x)yYp(yx)logp(yx)xXyYp(x,y)logp(yx)

信息增益

信息增益 = 熵 - 条件熵

即信息增益代表了在一个条件下,信息不确定性减少的程度。

可参考知乎上的解释:信息增益到底怎么理解呢

ID3 决策树

算法:

grow(D):
	取信息量最大的属性at
	将 D 划分为若干个子集 Di
	对每个子集 Di:
		if Di 中所有样本属于同一个类别:
			创建一个类标记的叶节点
         else:
         	grow(Di)

令 D 为训练集, |D| 为训练集中的样本数;

D i D_i Di 是用属性 at 划分D后的子集, ∣ D i ∣ |D_i| Di D i D_i Di 中的样本数。

D i k D_{ik} Dik D i D_i Di 中类别为 C k C_k Ck 的样本集合,样本数 为 ∣ D i k ∣ |D_{ik}| Dik

由相对频率估算得到的熵和条件熵称为经验熵经验条件熵

设有 K 个类 C k C_k Ck ∣ C k ∣ |C_k| Ck 表示类 C k C_k Ck 的样本数,那么: ∑ ∣ C k ∣ = ∣ D ∣ \sum |C_k| = |D| Ck=D

经验熵为: H ( D ) = − ∑ k = 1 K p k l o g 2 P k = − ∑ k = 1 K ∣ C k ∣ ∣ D ∣ l o g 2 ∣ C k ∣ ∣ D ∣ H(D) = -\sum_{k=1}^Kp_k log_2P_k = -\sum_{k=1}^K \frac{|C_k|}{|D|}log_2\frac{|C_k|}{|D|} H(D)=k=1Kpklog2Pk=k=1KDCklog2DCk

属性 at 对训练集 D 的经验条件熵为:

H ( D ∣ a t ) = ∑ i = 1 n p i H ( D i ) = − ∑ i = 1 n ∣ D i ∣ ∣ D ∣ ∑ k = 1 K ∣ D i k ∣ ∣ D i ∣ l o g 2 ∣ D i k ∣ ∣ D i ∣ H(D|at) = \sum_{i=1}^n p_i H(D_i) = -\sum_{i = 1}^n\frac{|D_i|}{|D|}\sum_{k=1}^K\frac{|D_{ik}|}{|D_i|}log_2\frac{|D_{ik}|}{|D_i|} H(Dat)=i=1npiH(Di)=i=1nDDik=1KDiDiklog2DiDik
经验条件熵的解释:数据 at 根据不同的属性值将数据集 D 划分为 n 个子集,对每个子集求它们的经验熵,再对它们加权求和,权重即为每个子集所占的比例。

信息增益:G(D, at) = H(D) - H(D|at)

信息增益越大,事件发生的确定性越大。每次划分应选择信息增益最大的属性。

C4.5 决策树

信息增益的缺点:信息增益准则倾向于选择那些有更多可能取值的属性(属性的取值范围大),因为这样会有更多的分支,叶节点包含的样本数更少,纯度更高。但这样会使得泛化能力不高,因为有更多分支不代表就是最好的分类结果。

所以 C4.5 决策树使用 “增益率” 来选择最优化分属性。

信息增益率的定义为:
G r ( D , a t ) = G ( D , a t ) I V ( a t ) G_r(D, at) = \frac{G(D, at)}{IV(at)} Gr(D,at)=IV(at)G(D,at)
其中 IV(at) 称为属性 at 的 ”固有值“。
I V ( a t ) = − ∑ i = 1 n D i D l o g ∣ D i ∣ ∣ D ∣ IV(at) = -\sum_{i=1}^n\frac{D_i}{D}log\frac{|D_i|}{|D|} IV(at)=i=1nDDilogDDi
D i D_i Di 是用属性 at 划分D后的子集, ∣ D i |D_i Di D i D_i Di 中的样本数。
属性 at 的可能取值数目越多 (n 越大),则 IV(a) 的值越大。由此可以看出 IV(at) 对可取值数目较小的属性有所偏好(与信息增益相反)。但 C4.5 并不是直接选择增益率最大的属性,而是先从划分属性中找出信息增益高于平均水平的增益(保留了好的特征),再从中选择增益率最高的(避免了信息增益可能会出现的极端情况)。

CART

全称:Classification And Regression Tree。顾名思义,分类和回归都可以使用。

与前面两种方法不同,每一次做判断时,只考虑两个属性,而不管有多少个属性。因此其算法过程就是一个递归求二叉树的问题。

分类:使用基尼指数来划分属性:

G i n i ( D ) = ∑ k = 1 ∣ y ∣ ∑ k ′ ≠ k p k p k ′ = 1 − ∑ k = 1 ∣ y ∣ p k 2 Gini(D) = \sum_{k=1}^{|y|}\sum_{k'\neq k}p_kp_k' = 1 - \sum_{k=1}^{|y|}p_k^2 Gini(D)=k=1yk̸=kpkpk=1k=1ypk2

Gini(D) 反映了从数据集 D 中随机抽取两个样本,其类别标志不一致的概率 。

Gini(D) 越小,则数据集 D 的纯度越高,希望纯度越高越好。

属性 a 的基尼指数定义为:

G i n i _ i n d e x ( D , a t ) = ∑ i = 1 V ∣ D i ∣ ∣ D ∣ G i n i ( D i ) Gini\_index(D, at) = \sum_{i = 1}^V\frac{|D^i|}{|D|}Gini(D^i) Gini_index(D,at)=i=1VDDiGini(Di)

D i D_i Di 是用属性 at 划分D后的子集, ∣ D i ∣ |D_i| Di D i D_i Di 中的样本数。
选择划分数据集 D 后的每个子数据集纯度最高的属性。
该公式的含义:属性 a 会将数据集 D 划分为几个子数据集 D i D_i Di,每个子数据集都有一个基尼指数,将这些基尼指数加权求和,权重为子数据集所占的比例。

回归: 使用平方误差划分二叉树,划分时,要找到某个特征变量和该变量中的某个值使划分最优化
最终得到 n 个划分空间,每个空间对应一个输出值,该输出值等于该空间中所有变量的输出值的平均值。假设 每个空间 R m R_m Rm 的输出值为 c m c_m cm, 一共有 M 个输出空间,则回归树模型可表示为:
f ( x ) = ∑ m = 1 M c m I ( x ∈ R m ) f(x) = \sum_{m=1}^Mc_mI(x\in R_m) f(x)=m=1McmI(xRm)



参考:
周志华 《机器学习》
李航 《统计学习方法》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值