机器学习之决策树算法

时间:2022-12-20 11:51:36

决策树( Decision Tree )又称为判定树,是运用于分类的一种树结构。其中的每个内部结点( internal node )代表对某个属性的一次测试,每条边代表一个测试结果,叶结点( leaf )代表某个类( class )或者类的分布( class distribution ),最上面的结点是根结点。决策树分为分类树和回归树两种,分类树对离散变量做决策树,回归树对连续变量做决策树。
构造决策树是采用自上而下的递归构造方法。决策树构造的结果是一棵二叉或多叉树,它的输入是一组带有类别标记的训练数据。二叉树的内部结点(非叶结点)一般表示为一个逻辑判断,如形式为 (a = b) 的逻辑判断,其中 a 是属性, b 是该属性的某个属性值;树的边是逻辑判断的分支结果。多叉树( ID3 )的内部结点是属性,边是该属性的所有取值,有几个属性值,就有几条边。树的叶结点都是类别标记。

使用决策树进行分类分为两步:
第 1 步:利用训练集建立并精化一棵决策树,建立决策树模型。这个过程实际上是一个从数据中获取知识,进行机器学习的过程。
第 2 步:利用生成完毕的决策树对输入数据进行分类。对输入的记录,从根结点依次测试记录的属性值,直到到达某个叶结点,从而找到该记录所在的类。
问题的关键是建立一棵决策树。这个过程通常分为两个阶段:
(1) 建树( Tree Building ):决策树建树算法见下,可以看得出,这是一个递归的过程,最终将得到一棵树。
(2) 剪枝( Tree Pruning ):剪枝是目的是降低由于训练集存在噪声而产生的起伏。
决策树方法的评价。
优点
与其他分类算法相比决策树有如下优点:
(1) 速度快:计算量相对较小,且容易转化成分类规则。只要沿着树根向下一直走到叶,沿途的分裂条件就能够唯一确定一条分类的谓词。
(2) 准确性高:挖掘出的分类规则准确性高,便于理解,决策树可以清晰的显示哪些字段比较重要。

缺点
一般决策树的劣势:
(1) 缺乏伸缩性:由于进行深度优先搜索,所以算法受内存大小限制,难于处理大训练集。一个例子:在 Irvine 机器学习知识库中,最大可以允许的数据集仅仅为 700KB , 2000 条记录。而现代的数据仓库动辄存储几个 G-Bytes 的海量数据。用以前的方法是显然不行的。
(2) 为了处理大数据集或连续量的种种改进算法(离散化、取样)不仅增加了分类算法的额外开销,而且降低了分类的准确性,对连续性的字段比较难预测,当类别太多时,错误可能就会增加的比较快,对有时间顺序的数据,需要很多预处理的工作。
但是,所用的基于分类挖掘的决策树算法没有考虑噪声问题,生成的决策树很完美,这只不过是理论上的,在实际应用过程中,大量的现实世界中的数据都不是以的意愿来定的,可能某些字段上缺值( missing values );可能数据不准确含有噪声或者是错误的;可能是缺少必须的数据造成了数据的不完整。
另外决策树技术本身也存在一些不足的地方,例如当类别很多的时候,它的错误就可能出现甚至很多。而且它对连续性的字段比较难作出准确的预测。而且一般算法在分类的时候,只是根据一个属性来分类的。
在有噪声的情况下,完全拟合将导致过分拟合( overfitting ),即对训练数据的完全拟合反而不具有很好的预测性能。剪枝是一种克服噪声的技术,同时它也能使树得到简化而变得更容易理解。另外,决策树技术也可能产生子树复制和碎片问题。

决策树实例讲解:http://www.cnblogs.com/kanjian2016/p/7746005.html