决策树概述
决策树模型是一种树形结构,在分类问题中,表示基于特征对实例进行分类的过程。
主要优点是模型具有可读性,分类速度快。学习时,利用训练数据,根据损失函数最小化的原则建立决策树模型。预测时,对新的数据,利用决策树模型进行分类。决策树学习通常包括3个步骤:特征选择、决策树的生成和决策树的修剪。主要算法有ID3算法、C4.5算法和CART算法。这篇先介绍一下前两个算法。
决策树模型
定义: 分类决策树模型是一种描述对实例进行分类的树形结构。决策树由结点(node)和有向边(directed edge)组成。结点有两种类型:内部节点(internal node)或者决策结点(decision node)和叶结点(leaf node)。内部结点表示一个特征或属性,叶结点表示一个类。
用决策树分类,从根结点开始,对实例的某一特征进行测试,根据测试结果,将实例分配到其子节点;这时,每一个子结点对应着该特征的一个取值。如此递归地对实例进行测试并分配,直至达到叶结点。最后将实例分到叶结点的类中。
也就是说要根据每一个特征去分不同的子集,然后子集再选择其它特征去再分子集。。。。。。那么如何选择特征呢,接下来就是特征选择的问题。
特征选择
特征选择在于选取对训练数据具有分类能力的特征。这样可以提高决策树学习的效率。如果利用一个特征进行分类的结果与随机分类的结果没有很大差别,则称这个特征是没有分类能力的。通常特征选择的准则是信息增益或信息增益比。
信息增益
首先给出熵的定义:
在信息论与概率统计中,熵是表示随机变量不确定性的度量。设X是一个取有限个值的离散随机变量,其概率分布为:
P ( X = x i ) = p i , i = 1 , 2 , . . . , n P(X=x_i)=p_i, i=1,2,...,n P(X=xi)=pi,i=1,2,...,n
则随机变量X的熵的定义为:
H ( X ) = − ∑ i = 1 n p i l o g p i H(X)=-\sum_{i=1}^{n}p_ilogp_i H(X)=−i=1∑npilogpi
式中,如果 p i = 0 p_i=0 pi=0,则定义 0 l o g 0 = 0 0log0=0 0log0=0。通常,对数以2为底或以e为底,这时熵的单位分别称作比特(bit)或纳特(nat)。由定义可知,熵只依赖与X的分布,而与X的取值无关,并且熵越大,随机变量的不确定性就越大。
这里直接给出信息增益的算法:
输入:训练数据集D和特征A;
输出:特征A对训练数据集D的信息增益 g ( D , A ) g(D,A) g(D,A)
(1) 计算数据集D的经验熵 H ( D ) H(D) H(D)
H ( D ) = − ∑ k = 1 K ∣ C k ∣ ∣ D ∣ l o g 2 ∣ C k ∣ ∣ D ∣ H(D)=-\sum_{k=1}^K \frac{ |C_k| }{ |D| } log_2 \frac{ |C_k| }{ |D| } H(D)=−k=1∑K∣D∣∣Ck∣log2∣D∣∣Ck∣
(2) 计算特征A对数据集D的经验条件熵 H ( D ∣ A ) H(D|A) H(D∣A)
H ( D ∣ A ) = ∑ i = 1 n ∣ D i ∣ ∣ D ∣ 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|A)=\sum_{i=1}^n \frac{ |D_i| }{ |D| }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(D∣A)=i=1∑n∣D∣∣Di∣H(Di)=−i=1∑n∣D∣∣Di∣k=1∑K∣Di∣∣Dik∣log2