【ML--09】决策树算法Decision Tree

来源:互联网 发布:欧德堡牛奶怎么样 知乎 编辑:程序博客网 时间:2024/05/02 03:07

一、三个决策树算法介绍
@1、信息增益:ID3
选择具有最高信息增益的属性作为节点N的分裂属性。

举个例子:
这里写图片描述

首先使用(8.1)式计算D中元组分类所需要的期望信息:

Info(D)=-log₂(9/14)(9/14)-log₂(5/14)(5/14)=0.94

下一步计算每个属性的期望信息需求。从属性age开始,需要对age的每个类考察Yes和NO元组的分布。对于age的类“youth”,有2个yes和3个no元组。同样的,middle_aged有4个yes和0个no,senior有3个yes和2个No。使用(8.2)式,如果元组根据age划分,则对D中的元组进行分类所需要的期望信息为:

这里写图片描述

类似的,可以计算Gain(Income)= 0.02, Gain(Student)= 0.151, Gain(credit_rating)=0.048。由于age属性中具有最高的信息增益,所以它被选作分裂属性。注意,落在分区age = middle_aged的元组都属于相同的类,即分类都是yes, 所以在该分支的端点是一个叶子节点。

如果D中的元组都为同一类,则节点N变为树叶,并用类标记它。

这里写图片描述

这样一次分裂就完成了。所以对于youth和senior可以用刚才的步骤进行下一步的分裂,直到结束。

@2、增益率:C4.5
C4.5算法继承了ID3算法的优点,并在以下几方面对ID3算法进行了改进:
1) 用信息增益率来选择属性,克服了用信息增益选择属性时偏向选择取值多的属性的不足;
2) 在树构造过程中进行剪枝;
3) 能够完成对连续属性的离散化处理;
4) 能够对不完整数据进行处理。

C4.5算法有如下优点:
产生的分类规则易于理解,准确率较高。其缺点是:在构造树的过程中,需要对数据集进行多次的顺序扫描和排序,因而导致算法的低效。此外,C4.5只适合于能够驻留于内存的数据集,当训练集大得无法在内存容纳时程序无法运行。

信息增益率公式=信息增益/分裂信息

@3、基尼系数: cart
基尼指数进行决策树归纳的总体做法是跟上面的信息增益一式一样的,只不过公式不同,基尼系数强制树是二叉树。

二、过拟合问题如何解决?

由于数据中的噪声和离群点,可能会产生过分拟合的数据问题,剪枝就可以很好地解决。有两种常见的剪枝方法:先剪枝和后剪枝。

先剪枝:通过提前停止树的构建(例如,通过决定在给定的节点不再分裂或划分训练元组的子集)而对树“剪枝”。一旦停止,节点就成为树叶。该树叶可以持有子集元组中最频繁的类,或者这些元组的概率分布。

在构造树时,可以使用诸如统计显著性、信息增益、基尼指数等度量来评估划分的优劣。如果划分一个节点的元组导致低于预定义阈值的划分,则给定子集的进一步划分将停止。然而,选取一个适当的阈值是困难的。更常用的方法是后剪枝。

后剪枝:它有“完全生长”的树减去子树,通过删除节点的分枝并用叶子节点取代。该树叶的类标号用子树中最频繁的类标记。CART使用的代价复杂度剪枝算法是后剪枝方法的一个实例。该方法把树的复杂度看作树中树叶节点的个数和树的错误率的函数(错误率是树误分类的元组占的百分比)。它从树的底部开始。对于每个内部节点,计算它的子树的代价复杂度和该子树剪枝后的该节点字数的代价复杂度,比较两个值取较小的代价复杂度

三、连续变量如何选择最佳分裂点
首先讲连续变量数值从小到大排序,取相邻两个元素的中点,作为潜在分裂点,遍历计算所有潜在分裂点,取信息增益最大的潜在分裂点作为分裂点,将连续变量 转变为离散变量。

原创粉丝点击