决策树是基本的分类和回归方法。但是主要用于分类。在分类问题中,表示基于特征对样本进行分类的过程,也可以认为是在特征空间与类空间上的条件概率分布(类空间就是分类的结果,比如有二分类:是否问题)。之所以说是条件概率分布,是因为在给定某个特征A条件下样本的分类。
优点
具有可读性,分类速度快
决策树学习三个步骤
- 特征选择
- 决策树生成
- 决策树修剪
定义
分类决策树是一种对样本进行分类的树形结构。递归地选择最优特征
结点类型
- 内部结点
表示一个特征 - 叶结点
表示一个类,这个类可能是多个样本的集合
决策树与条件概率分布
过拟合
决策树地构建,可能对训练数据集有很好的分类能力,但是对未知的测试数据却未必,可能发生过拟合现象。需要对其进行修剪,使之具有很好的泛化能力,具体讲就是去掉过于细分的叶子结点,使其回退到父结点,甚至更好的结点,然后将回退到的点更改为新的叶子结点。
ID3构建决策树
随机变量
某个不确定性的可能取值,比如抛硬币可以取[正,反]
墒
表示随机变量不确定性的度量,就是对[正,反]的一种度量。在上面的图中,
随机变量X是一个有限个数的离散随机变量,概率分布为
P(X=xi)=pi,i=1,2,3,...n
P
(
X
=
x
i
)
=
p
i
,
i
=
1
,
2
,
3
,
.
.
.
n
- 随机变量X的墒定义
墒越大,随机变量的不确定性就越大。不确定性大,就是X的取值很多样化,而不是几乎只为某个值,就很混乱的意思
- 条件墒H(Y|X)
表示已知随机变量X的条件下,随机变量Y的不确定性。
X给定了,但是X可以取 x1,x2... x 1 , x 2 . . . ,取得那些值是有概率的
H(Y|X)=∑i=1npiH(Y|X=xi) H ( Y | X ) = ∑ i = 1 n p i H ( Y | X = x i )
信息增益
利用特征X对样本划分,使得类Y的不确定性的减小程度
- g(D,A) 特征A对训练数据集D的信息增益
g(D,A)=H(D)−H(D|A) g ( D , A ) = H ( D ) − H ( D | A ) - H(D) 对训练集D进行分类(是,否)的不确定性减小的程度
- 根据信息增益进行特征选择
对训练集D或者其子集,计算每个特征的信息增益,选择最大的作为特征
信息增益算法
- 训练集D
- |D|
训练集D的样本个数 - C
训练集有几个分类,就是要预测分类结果的集合,有k个 -
|Ck|
|
C
k
|
属于k类别的样本个数 ∑kk=1|Ck|=|D| ∑ k = 1 k | C k | = | D | - A 特征
有n个不同取值 ,分别是 a1,a2,...an a 1 , a 2 , . . . a n 。因为特征每个取值就会划分一下训练集D,因此A特征对D划分为n个子集 D1,D2,...Dn D 1 , D 2 , . . . D n , |Di| | D i | 就是对应的样本个数 -
Dik
D
i
k
子集 Di D i 中属于类别 Ck C k 的样本集合
计算H(D)
计算条件墒H(D|A)
对应定义
H(Y|X)=∑ni=1piH(Y|X=xi)
H
(
Y
|
X
)
=
∑
i
=
1
n
p
i
H
(
Y
|
X
=
x
i
)
可以知道
H(D|A)=∑ni=1|Di||D|H(Di)=−∑ni=1|Di||D|∑kk=1|Cik||Di|log2|Dik||Di|
H
(
D
|
A
)
=
∑
i
=
1
n
|
D
i
|
|
D
|
H
(
D
i
)
=
−
∑
i
=
1
n
|
D
i
|
|
D
|
∑
k
=
1
k
|
C
i
k
|
|
D
i
|
l
o
g
2
|
D
i
k
|
|
D
i
|
计算信息增益
g(D,A)=H(D)-H(D,A)
利用信息增益构建决策树实例
信息增益比
在特征有多种取值的时候,信息增益都会比较大,但这种切分有时可能会没有意义,比如根据日期,或者根据id切分
比如根据id划分,每个id取值就会有一个最纯的结果,导致g(D|A)很大,直接从H(D)减为0,即g(D|A)=H(D),但是在信息增比中确为1
ID3算法
ID3算法核心是在决策树各个结点上应用信息增益进行选择特征,递归地构建决策树。
具体为:从根结点开始,对结点计算所有可能的特征的信息增益,选择信息增益最大的特征作为该结点的特征,由该特征的不同取值构建子结点;再对子结点递归地调用上述方法,构建决策树;直到所有的特征的信息增益均很小或者没有特征可以选择为止。ID3只有树的生成,容易过拟合
C4.5生成算法
决策树的剪枝
- |T|
树T的叶子结点个数,t是树T的叶子结点 -
|Nt|
|
N
t
|
叶结点t有 |Nt| | N t | 个样本 -
|Nt|
|
N
t
|
由于该结点可能有不同分类, |Nt| | N t | 就是该结点t当中,为k类的样本点个数 -
|Ht(T)|
|
H
t
(
T
)
|
叶结点t的墒 -
α
α
非负的参数
决策树的损失函数
其中,训练集D的子集 Ht(T) H t ( T ) 墒为
|T|是模型的复杂度, α α 如果大,就会选择较小的 |T| | T | ,因此模型就会简单一些