您的位置:首页 > 其它

决策树(decision tree)的自我理解 (上)

2017-07-06 09:22 239 查看
最近在看周志华的《机器学习》,刚好看完决策树这一章,因此结合网上的一些参考资料写一下自己的理解。

何为决策树?

决策树是一种常见机器学习方法中的一种分类器。它通过训练数据构建一种类似于流程图的树结构,其中每个内部结点表示在一个属性上的测试对未知数据进行分类,每个分支代表一个属性输出,每个树叶结点代表类或类分布。
决策树包括:根结点、若干个内部结点、若干个叶节点(即目标分类节点)。

如以下数据集生成决策树:





决策树与其他分类算法相比的优缺点

优点:

1.直观,决策树可以提供可视化,便于理解;

2.适用于小规模数据;

3.数据的准备往往是简单或者不必要的,

4.对相关特征数据的处理;

缺点:

1. 连续变量处理不好,也就是说当数据中存在连续变量的属性时,决策树表现并不是很好;

2. 特征属性增加时,错误增加的比较快;

3. 不稳定性,一点点的扰动或者改动都可能改动整棵树,我们想要的分类器对噪声是健壮的

4. 当数据出现不相关的特征,表现不是很好。

5. 很容易在训练数据中生成复杂的树结构,造成过拟合(overfitting)。

决策树算法流程

输入:

数据分区D,训练元组和它们对应类标号的集合。
attribute_list,候选属性的集合
Attribute_selection_method,一个确定“”最好的“划分数据元组为个体类的分裂准则的过程,这个准侧由分裂属性(splitting_attribute)和分裂点或划分子集组成。
步骤:

选择一个特征节点创建一个根结点N (下面步骤则是在N下添加结点,最终形成一棵树N)
if D中的元组都在同一类C中 then 返回N作为叶节点,以类C标记;
if attribute_list 为空 then 返回D作为叶节点,标记为D中的多数类;
使用Attribute_selection_method(D,attribute_list)找出最好的(多数表决)splitting_criterion(分类标准)的特征;
使用该特征标记结点N;
if splitting_criterion(符合该特征的特征) 为离散值,允许多路划分,then attribute_list = attribute_list - splitting_criterion (从候选集合里删除已选择过的属性)
for j in splitting_criterion (遍历splitting_criterion里的每一种分类切割出来的子集)
Dj为D中满足输出j的数据元组的集合;
if Dj为空 then 加一个树叶结点N,标记为D中的多数类
else 加一个由Generate_decision_tree(D,attribute_list)返回的结点到N;(也就是由下面的D的attribute_list继续分割产生结点接到树下面)
返回N(决策树)

重点:如何选择节点Attribute_selection_method

根据选择节点所应用的算法不同,因此决策树也通常分三种讨论,介绍下基本的三种分列准则。

总的来说就是



分两部分讲解

一、计算公式的实现

ID3决策树:

信息熵



计算整个数据集D的信息熵,对数据集中每个类别k计算概率,即该类别占总体的比例,一共有n类。越小,D的纯度越高。

信息增益



计算属性a的信息增益,对总体数据集D根据属性a进行划分子集,总共V的子集,  

表示子集占总体的比例。

C4.5决策树

固定值



增益率



CART决策树

CART算法采用一种二分递归分割的技术,将当前的样本集分为两个子样本集,使得生成的的每个非叶子节点都有两个分支。因此,CART算法生成的决策树是结构简洁的二叉树。

基尼值



基尼指数



基尼指数考虑的是每个属性的二元划分,因此在当属性值A分类(假如有v类)超过2个时,考虑将属性A二元划分,在不考虑全集和空集的情况下,一共有2^v-2个划分方法。对于每个属性,考虑每种可能的二元划分。对于属性A,选择属性产生最小基尼指数的子集作为作为它的分列子集。

二、各算法之间的比较

ID3(Iterative Dichotomiser 3,迭代二叉树3代)由Ross Quinlan于1986年提出。1993年,他对ID3进行改进设计出了C4.5算法。

ID3算法缺点:信息增益会让ID3算法更偏向于选择值多的属性。信息增益反映给定一个条件后不确定性减少的程度,必然是分得越细的数据集确定性更高,也就是信息熵越小,信息增益越大。因此,在一定条件下,值多的属性具有更大的信息增益。

C4.5算法:在ID3基础上提出,试图克服这种ID3的缺点,用固定值IV(a)将信息增益规范化。

如果划分的信息熵值非常小,信息增益率将会不稳定.因此,C4.5系统中引入一个限制来解决这个问题:待选测试的信息增益值不能小于所有的检测过的测试的平均信息增益值。如果属性集中存在无关属性,即便该属性没有被选为测试属性,都将影响信息增益率的效果.因为引进的无关属性会降低测试的信息增益的平均值,所以一些具有高信息增益率而低信息增益的属性将成为最优的测试属性.这种情况就不会在使用信息增益函数的决策树中出现.实际应用说明信息增益率函数比信息增益函数更健壮,能稳定地选择好的测试。

CART(Classification And Regression Tree,分类回归树)由L.Breiman,J.Friedman,R.Olshen和C.Stone于1984年提出,是一种应用相当广泛的决策树学习方法。值得一提的是,CART和C4.5一同被评为数据挖掘领域十大算法。

参考:《机器学习》--周志华

    《数据挖掘:概念与技术》 -- Jiawei Han

最后

其实关于决策树的知识,这里还差个剪枝部分和决策树关于连续值和缺失值的处理这三部分的知识,在下一篇做下自我理解吧。有什么讲的不是很好,甚至错误的地方请大家帮我指出,谢谢!!

进步始于交流,收获源于分享,愿意分享的心,感恩回馈的心!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息