【机器学习】决策树算法


决策树算法

1.决策树算法简介

决策树:

  • 是⼀种树形结构,本质是⼀颗由多个判断节点组成的树
  • 其中每个内部节点表示⼀个属性上的判断
  • 每个分⽀代表⼀个判断结果的输出
  • 最后每个叶节点代表⼀种分类结果

2.决策树分类原理

2.1 熵

1、从信息的完整性上进⾏的描述:

当系统的有序状态⼀致时,数据越集中的地⽅熵值越⼩,数据越分散的地⽅熵值越⼤。

2、从信息的有序性上进⾏的描述:

当数据量⼀致时,系统越有序,熵值越低;系统越混乱或者分散,熵值越⾼。

2.2 决策树的划分依据⼀----信息增益

信息增益:以某特征划分数据集前后的熵的差值。熵可以表示样本集合的不确定性,熵越⼤,样本的不确定性就越⼤。 因此可以使⽤划分前后集合熵的差值来衡量使⽤当前特征对于样本集合D划分效果的好坏。

信息增益 = entroy(前) - entroy(后)

2.3 决策树的划分依据⼆----信息增益率

信息增益准则对可取值数⽬较多的属性有所偏好,为减少这种偏好可能带来的不利影响,著名的 C4.5 决策树 算法,不直接使⽤信息增益,⽽是使⽤"增益率" (gain ratio) 来选择最优划分属性
增益率:增益率是⽤前⾯的信息增益Gain(D, a)和属性a对应的"固有值"的⽐值来共同定义的。

为什么使⽤C4.5要好

1.⽤信息增益率来选择属性

克服了⽤信息增益来选择属性时偏向选择值多的属性的不⾜。

2.采⽤了⼀种后剪枝⽅法
避免树的⾼度⽆节制的增⻓,避免过度拟合数据

3.对于缺失值的处理
在某些情况下,可供使⽤的数据可能缺少某些属性的值。假如〈x,c(x)〉是样本集S中的⼀个训练实例,但是其属性A 的值A(x)未知。
处理缺少属性值的⼀种策略是赋给它结点n所对应的训练实例中该属性的最常⻅值; 另外⼀种更复杂的策略是为A的每个可能值赋予⼀个概率。
例如,给定⼀个布尔属性A,如果结点n包含6个已知A=1和4个A=0的实例,那么A(x)=1的概率是0.6,⽽A(x)=0的概率 是0.4。于是,实例x的60%被分配到A=1的分⽀,40%被分配到另⼀个分⽀。
C4.5就是使⽤这种⽅法处理缺少的属性值。

2.4 决策树的划分依据三 ----基尼值和基尼指数

CART 决策树使⽤"基尼指数" (Gini index)来选择划分属性.

CART 是Classification and Regression Tree的简称,这是⼀种著名的决策树学习算法,分类和回归任务都可⽤

基尼值Gini(D):从数据集D中随机抽取两个样本,其类别标记不⼀致的概率。故Gini(D)值越⼩,数据集D的纯度越⾼。

基尼指数Gini_index(D):⼀般选择使划分后基尼系数最⼩的属性作为最优化分属性。

2.5 常⻅决策树的启发函数⽐较
名称提出时间分⽀⽅式备注
ID31975信息增益ID3只能对离散属性的数据集构成决策树
C4.51993信息增益率优化后解决了ID3分⽀过程中总喜欢偏向选择值较多的 属性
CART1984Gini系数可以进⾏分类和回归,可以处理离散属性,也可以处理连续属性

ID3 算法

存在的缺点

(1) ID3算法在选择根节点和各内部节点中的分⽀属性时,采⽤信息增益作为评价标准。信息增益的缺点是倾向于选择 取值较多的属性,在有些情况下这类属性可能不会提供太多有价值的信息.

(2) ID3算法只能对描述属性为离散型属性的数据集构造决策树。

C4.5算法

做出的改进(为什么使⽤C4.5要好)

(1) ⽤信息增益率来选择属性

(2) 可以处理连续数值型属性

(3)采⽤了⼀种后剪枝⽅法

(4)对于缺失值的处理

C4.5算法的优缺点
优点:产⽣的分类规则易于理解,准确率较⾼。

缺点:在构造树的过程中,需要对数据集进⾏多次的顺序扫描和排序,因⽽导致算法的低效。

此外,C4.5只适合于能够驻留于内存的数据集,当训练集⼤得⽆法在内存容纳时程序⽆法运⾏。

CART算法

CART算法相⽐C4.5算法的分类⽅法,采⽤了简化的⼆叉树模型,同时特征选择采⽤了近似的基尼系数来简化计算。

C4.5不⼀定是⼆叉树,但CART⼀定是⼆叉树。

如何评估分割点的好坏?

如果⼀个分割点可以将当前的所有节点分为两类,使得每⼀类都很“纯”,也就是同⼀类的记录较多,那么就是⼀个好分 割点。

⽐如上⾯的例⼦,“拥有房产”,可以将记录分成了两类,“是”的节点全部都可以偿还债务,⾮常“纯”;“否”的节点,可以 偿还贷款和⽆法偿还贷款的⼈都有,不是很“纯”,但是两个节点加起来的纯度之和与原始节点的纯度之差最⼤,所以按 照这种⽅法分割。

构建决策树采⽤贪⼼算法,只考虑当前纯度差最⼤的情况作为分割点

3.cart剪枝

剪枝 (pruning)是决策树学习算法对付"过拟合"的主要⼿段。

在决策树学习中,为了尽可能正确分类训练样本,结点划分过程将不断重复,有时会造成决策树分⽀过多,这时就可能 因训练样本学得"太好"了,以致于把训练集⾃身的⼀些特点当作所有数据都具有的⼀般性质⽽导致过拟合。因此,可通过主动去掉⼀些分⽀来降低过拟合的⻛险。

  • 预剪枝指在决策树⽣成过程中,对每个结点在划分前先进⾏估计,若当前结点的划分不能带来决策树泛化性能提 升,则停⽌划分并将当前结点标记为叶结点;
  • 后剪枝则是先从训练集⽣成⼀棵完整的决策树,然后⾃底向上地对⾮叶结点进⾏考察,若将该结点对应的⼦树替换 为叶结点能带来决策树泛化性能提升,则将该⼦树替换为叶结点。

对⽐两种剪枝⽅法

  • 后剪枝决策树通常⽐预剪枝决策树保留了更多的分⽀。
  • ⼀般情形下,后剪枝决策树的⽋拟合⻛险很⼩,泛化性能往往优于预剪枝决策树。
  • 但后剪枝过程是在⽣成完全决策树之后进⾏的。 并且要⾃底向上地对树中的所有⾮叶结点进⾏逐⼀考察,因此其训练时间开销⽐未剪枝决策树和预剪枝决策树都要⼤得多。

4.回归决策树

关于数据类型,我们主要可以把其分为两类,连续型数据和离散型数据。在⾯对不同数据时,决策树也 可以分为两⼤类型:

  • 分类决策树和回归决策树。
  • 前者主要⽤于处理离散型数据,后者主要⽤于处理连续型数据。

⼀个回归树对应着输⼊空间(即特征空间)的⼀个划分以及在划分单元上的输出值。

  • 分类树中,我们采⽤信息论中的⽅法,通过计算选择最佳划分点。

  • ⽽在回归树中,采⽤的是启发式的⽅法。假如我们有n个特征,每个特征有si (i ∈ (1, n))个取值,那我们遍历所有特征, 尝试该特征所有取值,对空间进⾏划分,直到取到特征 j 的取值 s,使得损失函数最⼩,这样就得到了⼀个划分点。

算法描述:

输⼊:训练数据集D:

输出:回归树f(x). 在训练数据集所在的输⼊空间中,递归的将每个区域划分为两个⼦区域并决定每个⼦区域上的输出值,构建⼆叉决 策树:
(1)选择最优切分特征j与切分点s,求解
在这里插入图片描述

遍历特征j,对固定的切分特征j扫描切分点s,选择使得上式达到最⼩值的对(j, s). (2)⽤选定的对(j, s)划分区域并决定相应的输出值:
在这里插入图片描述

(3)继续对两个⼦区域调⽤步骤(1)和(2),直⾄满⾜停⽌条件。

(4)将输⼊空间划分为M个区域R 1 , R 2 , …, R M , ⽣成决策树:
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值