一.决策树算法引入
决策树算法是一种监督学习算法,利用分类的思想,来根据数据的特征构建数模型,从而达到数据的筛选,打标签,决策的目标
1.1 通过简单的案例来说明决策树的基本概念
现在有一批用户购买商品的统计表,其中包含了年龄、收入,是否学生,信誉等字段,以及其购买结果
对数据进行分析后,我们可以构造出如下的树:
以上这个例子,我们依次通过年龄、收入、是否学生、信誉进行划分形成树的结构图,在划分的过程中,我们会遇到即使收入、是否学生、信誉有差异的数据,但是只要年龄是中,他都会购买的这种情况,那么我们就将其合并,合并后就会形成上图的情况。
1.2 构建决策树的三个步骤
(1)特征选择:选取有较强分类能力的特征。
(2)决策树生成:典型的算法有 ID3 和 C4.5, 它们生成决策树过程相似, ID3 是采用信息增益作为特征选择度量, 而 C4.5 采用信息增益比率(后面再细讲)
(3)决策树剪枝:剪枝原因是决策树生成算法生成的树对训练数据的预测很准确, 但是对于未知数据分类很差, 这就产生了过拟合(分类不准)的现象。涉及算法有CART算法(后面再细讲)
二.决策树的基本概念和算法
2.1 熵和信息熵
熵:物理意义是体系混乱程度的度量
信息熵:表示事物不确定性的度量标准, 可以根据数学中的概率计算, 出现的概率就大, 出现的机会就多, 不确定性就小(信息熵小)
信息熵的计算:
类似n次独立重复是实验概率求和
总结:变量的不确定性越大, 熵也就越大。 熵越小, 信息的纯度越高。
2.2 决策树归纳算法 - ID3算法
目的:选择属性判断节点
'信息增益':整个数据集信息熵与当前节点信息熵的差
ID3算法的案例:
以下是一份关于购买电脑的统计信息
(1)首先计算出整个数据集的信息熵:一共14条数据,最终买电脑数据9条,不买5条
(2)然后计算年龄的信息熵:一共14条数据,youth5条(yes:2 no:3),middle_aged4条(yes:4),senior5条(yes:3 no:2)
(3)然后计算age信息增益:
(4)通过类似计算的方法,分别计算出income,student,credit_rating的信息增益
Gain(income) = 0.029, Gain(student) = 0.151, Gain(credit_rating)=0.048
选择信息增益最大的作为第一个节点,这里选择age作为第一个节点
然后按age进行分割后,再对分割后的数据进行递归(1)(2)(3)(4)步即可完成整个决策树的建立
划分结束标志为: 子集中只有一个类别标签, 停止划分
例如:对age=youth的数据进行递归(1)~(4)步骤
Info(D) = -2/5*log2(2/5) + -3/5*log2(3/5),
age=youth :Info(income(age=youth))=2/5(-2/2log2(2/4) - 0)+ 1/5(-1/1log2(1/1)-0) +2/5(-1/2log2(1/2)-1/2log2(1/2))
age=youth :Info(student(age=youth))=...
age=youth :Info(credit(age=youth))=...
依次递归即可
id3算法的缺陷:
1.ID3没有考虑连续特征
2.ID3采用信息增益大的特征优先建立决策树的节点。在相同条件下,取值比较多的特征比取值少的特征信息增益大。
3.ID3算法对于缺失值的情况没有做考虑
4.没有考虑过拟合的问题
2.3 决策树归纳算法 - C4.5算法
C4.5算法属于ID3算法的延伸,使用信息增益率来选则属性
特征 A 对数据集 D 的信息增益: Gain(A) = Info(D)-Info_A(D)
信息增益率: Gainr(A) =Gain(A) /H(A) : 其中 H(A)为 A 的熵
H(A)的计算公式:
理解:
由于在分类问题困难时候, 也就是在训练数据集经验熵(总体的 Info(D)值)
大的时候, 信息增益值会偏大(Info(D)值偏大), 如果训练数据集经验熵小的时候,
信息增益会偏小, 这时候也可以通过信息增益率来矫正这一问题。
2.4决策树归纳算法 - Cart算法
C4.5算法也属于ID3算法的延伸,使用Gini系数来选则属性
CART中采用了Gini系数来构造二叉决策树, 二分类问题中,近似于熵之半,但计算要简单一些:
D表示全样本, pi表示每种类别出现的概率, 极端情况p = 1 则Gini = 0 , 不纯度最低,最稳定。
类似的, Gini增益:
上面式子表述的意思就是,加入特征X以后,数据不纯度减小的程度。很明显,在做特征选择的时候,我们可以取ΔGini(X)最大的那个
未完待续...