简介:
决策树是一种基本的分类与回归方法。下面的笔记主要记录用于分类的决策树。决策树模型呈树形结构,在分类中,表示基于特征对实例进行分类的过程。其主要优点是:模型具有可读性,分类速度快。学习时利用训练数据,根据损失函数最小化原则建立决策树模型。决策树学习通常包括三个步骤:特征选择、决策树的生成、决策树的修剪。
决策树模型与学习
决策树模型:
分类决策树模型是一种描述对实例进行分类的树形结构(注意:kd树是二叉树,而决策树不限于二叉树)。决策树由结点和有向边组成。结点分为:内结点和外结点。内结点表示一个特征或属性,外结点表示一个类。
用决策树分类,从根节点开始对实例的某一特征进行测试,根据测试结果,将实例分配到其子结点;这时,每个子结点对应着该特征的一个取值。如此递归的堆实例进行测试并且分配,直至达到叶结点。最后将实例分到叶结点的类中。下图是一个决策树示意图:
![](https://i-blog.csdnimg.cn/blog_migrate/79d5b3978a982ccbf5277938e0d40f13.png)
决策树学习:
决策树的构建过程如下:开始,构建根结点,将所有训练数据都放在根结点。选择一个最优特征,按照这一特征将训练数据集分割成子集,使得各个子集有一个在当前条件下最好的分类。如果这些子集已经能够被基本正确分类,那么构建叶结点,并将这些子集分配到对应的叶结点中去;如果还有子集不能够被基本正确分类,那么对这些子集选择最优特征,继续对其进行分割,构建相应的结点。如此递归下去,直至所有训练数据子集被基本正确分类或者没有合适的特征为止。最后每个子集都被分到叶结点上,即都有了明确的类。这就生成了一颗决策树。
以上方法有可能对训练数据有很好的分类能力,但对未知的测试数据未必有很好的分类能力,即可能发生过拟合。我们需要对已经生成的树自下而上进行剪枝,将树变得更简单,从而使它具备更好的泛化能力。
决策树生成对应模型的局部选择(只针对训练数据),而决策树的剪枝则考虑全局最优(针对所有数据,泛化能力)
特征选择
特征选择在于选取对训练数据具有分类能力的特征,这样可以提高决策树的学习效率。通常特征选择的准则是通过比较信息增益或信息增益比。
熵与条件熵:
熵是表示随机变量不确定性的度量。设X是一个取有限个值的离散随机变量,其概率分布为:
P( X =
x
i
) =
p
i
,i = 1,2,···,n
则随机变量X的熵定义为
![](https://i-blog.csdnimg.cn/blog_migrate/ba226996a0bc87f3b30728cbe5229a0b.png)
(其中
x
i
表示类别为
c
i
的x集合,所以
p
i
也就是X中类别为
c
i
的概率,所以H(X)依赖于
c
i
的概率pi,而于X的取值无直接关系)
通常H(X)中的对数以2或者e为底,这时熵的单位分别称作比特或纳特。由定义可知,熵只依赖于X的分布,而与X的取值无关,所以也可将X的熵记作H(p);
熵越大,随机变量的不确定性就越大。从定义可验证:
0 <= H(p) <= log n
条件熵H(Y|X)表示在已知随机变量X的条件下随机变量Y的不确定性。随机变量X给定的条件下随机变量Y的条件熵H(Y|X),定义为:X给定条件下Y的条件概率分布的熵对X的数学期望
![](https://i-blog.csdnimg.cn/blog_migrate/a79310611a70e308926001c65673fe4b.png)
(注意:这儿的
x
i
不是特指之前说的“
类别为
c
i
的x集合
”,而是以满足某些条件的将X划分的子集,比如:根据特征A的不同取值,将X划分为不同的子集
x
i
,i = 1,2,···,k,求在特征A确定的情况下,数据集的条件熵
)
(由之前可知,H(Y|X =
x
i)等于 所有
p
j
和log
pj
乘积之和的相反数,并且
pj
是在xi 数据集上类型为 ci 的概率)
当熵和条件熵的概率由数据估计(特别是极大似然估计)得到时,所对应的熵和条件熵分别称为经验熵和经验条件熵。此时,如果有0概率,令0log0 = 0
信息增益:
表示得知特征X的信息而使得类Y的信息的不确定性减少的程度。
定义:特征A对训练数据集D的信息增益g(D,A),定义为:集合D的经验熵H(D)与特征A给定条件下D的经验条件熵H(D | A)之差,即 g(D,A) = H(D) - H(D | A)
一般地,熵H(Y)和条件熵H(Y | X)的差称为互信息。决策树学习中的信息增益等价于训练数据集中类与特征的互信息。
信息增益大的特征具有更强的分类能力。
根据信息增益准则的最优特征选择方法:对训练数据集D,计算其每个特征的信息增益,并比较大小,选择信息增益最大的特征。
信息增益比:
信息增益值的大小是相对于训练数据集而言的,并没有绝对意义。在训练数据集的熵大的时候,信息增益值也会偏大,反之信息增益值会偏小。使用信息增益比会对这一问题进行校正,这是特征选择的另一准则。
比如:一数据集D,只给出特征A的信息增益值是0.1,我们并不知道他对减少数据集D不确定性的作用有多大,但是如果给出特征A的信息增益比是0.5,我们就能明确他对减少数据集D不确定性的有多重要了。
定义:特征A对训练数据集D的信息增益比
g
R(D,A)定义为其信息增益g(D,A)与训练数据集D的经验熵H(D)之比:
g
R(D,A) = g(D,A) / H(D)
决策树的生成
ID3算法:
简介:
ID3算法的核心是在决策树的各个结点上应用信息增益准则选择特征,递归的构建决策树。具体方法是:从根节点开始,对结点计算所有可能的特征的信息增益,选择信息增益最大的特征作为结点的特征,由该特征的不同取值建立子结点;再对子结点递归的调用上述方法,构建决策树;直到所有特征的信息增益小于阈值或没有特征可以选择为止。
算法:
输入:训练数据集D,特征集A,阈值
ε
输出:决策树T
1、若D中所有实例都属于同一类
c
k ,则T为单结点树,并将类
c
k