第四章 机器学习之分类 决策树
决策树
根据特征解决数据分类问题。每个节点选择一个特征提出问题,通过判断,将数据分为两类,再继续提问。这些问题是在已知各种情况发生概率基础上,构成决策树,求取值大于等于0的概率。再投入新数据时,根据树上的问题,将数据划分到合适叶子上。事先确定每个样本的属性和类别,节点表示属性测试,每个分支表示测试输出,叶节点表示类别。
决策树算法常用于分类任务中,从给定的训练数据集中学习到一个模型用于对新示例进行分类。
决策树需要两部分数据:
训练数据:用于构造决策树,即决策机制
测试数据:验证所构造决策树的错误率
决策树算法:ID3、 C4.5、 CART 等。
构造树的依据–信息熵&信息增益
问题:
• 每个节点应该选择什么样的特征进行划分呢?
• 选择哪个特征才能比较好的划分数据集?
• 为什么有的人画出来的决策树简介高效;而有的人
画出来的决策树看起来很复杂,效果很差?
信息熵表示信息的复杂程度,例如集合A={1,1,1,2,2}和集合B={1,2,3,4,5}相比,集合A的熵更小。
信息增益是在划分数据集前后信息熵的差值。
应用实例(赖床问题取决于多个变量)
决策树过程(1):根节点
- 计算赖床信息熵H
H ( x ) = − ∑ p ( x i ) ∗ l o g 2 ( p ( x i ) ) ( i = 1 , 2 , . . . , n ) H(x)=-\sum{p(xi)*log2(p(xi))}{\;\;\;(i=1,2,...,n)} H(x)=−∑p(xi)∗log2(p(xi))(i=1,2,...,n)
p(赖床)=8/12. p(不赖床)=4/12.
H(赖床)=-(p(赖床)*log2(p(赖床))+p(不赖床) *log2(p(不赖床)))=0.89
- 计算每个属性(季节、时间已过 8 点、风力情况)的信息熵
(1)风力情况为breeze时,有4/5的概率会赖床,1/5的概率不会赖床,它的熵为:entropy(breeze) = -(p(breeze,赖床) * log2(p(breeze,赖床))+p(breeze,不赖床) * log2(p(breeze,不赖床))) =0.722
(2)风力情况为 no wind 时,熵值为 entropy(no wind) = 0.811
(3)风力情况为 gale 时,熵值为 entropy(gale) = 0.918
H ( 风 力 情 况 ) = 5 / 12 ∗ e n t r o p y ( b r e e z e ) + 4 / 12 ∗ e n t r o p y ( n o w i n d ) + 3 / 12 ∗ e n t r o p y ( g a l e ) = 0.801 H(风力情况)=5/12*entropy(breeze)+4/12* entropy(nowind)+3/12*entropy(gale)=0.801 H(风力情况)=5/12∗entropy(breeze)+4/12∗entropy(nowind)+3/12∗entropy(gale)=0.801
同样的计算方法:
H(季节)=0.56 ;H(是否过8点)=0.748
信息增益是上一步的信息熵减去选定属性的信息熵:
信息增益 g(风力情况) = H(赖床) - H(风力情况) =0.89-0.801=0. 089
信息增益 g(是否过8点) =0.89-0.748=0.142
信息增益 g(季节) =0.89-0.56=0.33
选取信息增益最大的那个作为根节点:季节
决策树(2):挑选新的节点
决策树(3):构建完整树
剪枝:即减少树的高度,避免过拟合。
(1)预剪枝干:设定一个树高度,当构建的树达到高度时,停止。
(2)后剪枝:任由决策树构建完成,然后从底部开始,判断哪些枝干应该剪掉。
预剪枝更块,后剪枝更精确。
决策树总结
一棵决策树包含一个根节点、若干个内部结点和若干个叶结点。
在决策过程中提出的每个判定问题都是对某个属性的“测试”(节点)。
每个测试的结果或导出最终结论,或导出进一步的判定问题.
根节点包含了样本全集,其中叶节点对应于决策结果(yes 或no),其他每个结点对应于一个属性测试(例如 风力情况=?)
从根节点到每个叶节点的路径对应一个判定测试序列.
决策树的生成是一个递归过程。
有三种情形会导致递归返回:
(1)当前节点包含的样本全属于同一类别,无需划分.
(2)当前属性为空或者是所有样本在所有属性上取值相同,无需划分。这种情况下,把当前节点标记为叶节点,并将其类别设定为该节点所含样本最多的类别。
(3)当前节点包含的样本集为空,不能划分,同样把当前节点标记为叶节点。
决策树学习的生成算法
建立决策树的关键,即在当前状态下选择哪个属性作为分类依据。根据不同的目标函数,建立决策树主要有一下三种算法:ID3、C4.5、CART。
适应信息增益来进行特征选择的决策树学习过程,即为ID3决策。
所以如果是取值更多的属性,更容易使得数据更“纯”,其信息增益更大,决策树会首先挑选这个属性作为树的顶点。结果训练出来的形状是一棵庞大且深度很浅的树,这样的划分是极为不合理的。
C4.5:信息增益率 gr(D,A) = g(D,A) / H(A)
CART:基尼指数
总结:一个属性的信息增益越大,表明属性对样本的熵减少的能力更强,这个属性使得数据由不确定性变成确定性的能力越强。
决策树优缺点
优点:
易于理解和实现,学习中不需了解太多背景知识,直接体现数据特点;
数据准备简单或不必要,能同时处理数据型和常规型属性;
易于通过静态测试对模型评测(可信度)、逻辑表达式;
缺点:
对连续性的字段比较难预测;
对有时间顺序的数据,需要很多预处理工作;
类别太多时,错误可能增加比较快;
一般算法分类,都只是根据一个字段来分类;