大数据机器学习-chapter 7-决策树与随机森林

决策树(Decision Tree)是一种简单但是广泛使用的分类器。通过训练数据构建决策树,可以高效的对未知的数据进行分类。


决策树模型的特点

  • 1、模型具有可读性,分类速度快,推理过程容易理解
  • 2、决策推理过程可以表示成If Then形式
  • 3、可以认为是定义在特征空间与类空间上的条件概率分布
  • 4、推理过程完全依赖于属性变量的取值特点
  • 5、可自动判断属性变量的重要性,忽略对目标变量没有贡献的属性变量。

决策树相关算法

CLS, ID3, CART, C4.5
  • CLS:从一棵空决策树开始,选择某一属性(分类属性)作为测试属性。该测试属性对应决策树中的决策结点。根据该属性的值的不同,可将训练样本分成相应的子集: 如果该子集为空,或该子集中的样本属于同一个类,则该子集为叶结点,否则该子集对应于决策树的内部结点,即测试结点,需要选择一个新的分类属性对该子集进行划分,直到所有的子集都为空或者属于同一类。
  • ID3:ID3算法主要针对属性选择问题,使用信息熵
    增益选择分类属性,有效的解决了CLS算法中分类属性随机的问题。
  • C4.5:C4.5算法的基本流程与ID3类似,但C4.5算法进行特征选择时不是通过计算信息增益完成的,而是通过信息增益比来进行特征选择。 通过信息增益率选择分类属性,克服了ID3算法中通过信息增益倾向于选择拥有多个属性值得属性的不足。
  • CARTClassification And Regression Tree 分类回归树,不仅可以处理分类问题,也可以用于处理回归问题。由于CART是二元分类(二叉树),因此其不易产生数据碎片,精度往往也高于多叉树。

信息增益/信息增益率

假设X是一个取有限个值的离散随机变量,其概率分布为:
概率分布
则随机变量X的熵的定义为:
熵的定义
设有随机变量(X,Y),其联合概率分布为:
联合概率分布条件熵H(Y|X):表示在己知随机变量X的条件下随机变量Y的不确定性,定义为X给定条件下Y的条件概率分布的熵对X的数学期望:
条件熵
当熵和条件熵中的概率由数据估计(特别是极大似然估计)得到时,所对应的熵与条件熵分别称为经验熵(empirical entropy)和经验条件熵(empirical conditional entropy )

特征A对训练数据集D的信息增益,g(D,A), 定义为集合D的经验熵H(D)与特征A给定条件下D的经验条件熵H(D|A)之差,即
信息增益
Information gain 表示得知特征X的信息而使得类Y的信息的不确定性减少的程度

信息增益的算法

设训练数据集为 D

  • |D|表示其样本容量,即样本个数
  • 设有K个类Ck , k = 1,2,…K
  • |Ck |为属于类Ck的样本个数
  • 特征A有n个不同的 取值{a1 ,a2…an }根据特征A的取值将D划分为n个子集 D1,…Dn
  • |Di |为 Di的样本个数
  • 记子集Di中属于类Ck的样本集合为Dik • |Dik|为Dik的样本个数
  • |Dik|为Dik的样本个数

输入: 训练数据集D和特征A;
输出: 特征A对训练数据集D的信息增益g(D,A)
1、计算数据集D的经验熵H(D)
数据集D的经验熵
2、计算特征A对数据集D的经验条件熵H(D|A)
特征A对数据集D的经验条件熵
3、计算信息增益
信息增益

信息增益比

定义: 特征A对训练数据集D的信息增益比 gR(D,A) 定义为其信息增益 g(D,A) 与训练数据集D关于特征A的值的熵 HA(D) 之比,即
信息增益比 数据集D对特征A的熵
其中,n是特征A取值的个数;


决策树的剪枝

为了解决决策树过于复杂,以及过拟合问题,需要对决策树进行剪枝操作。

决策树的剪枝:pruning
剪枝(pruning): 从已生成的树上裁掉一些子树或叶子结点或父结点作为新的叶结点,从而简化分类树模型; 剪枝是一个逆向过程,通过极小化决策树整体的损失函数或代价函数来实现。

决策树学习的损失函数:
决策树的损失函数
|T|:叶结点个数,t:树T的叶结点
Nt:该叶结点样本点数
Ntk :k类的样本点个数,k=1,2…K
Ht(T)为叶结点t上的经验熵,α≥0为参数

损失函数推导

决策树的剪枝过程

输入: 生成算法产生的整个树T,参数α
输出: 修剪后的子树T α

  • 计算每个节点的经验熵
  • 递归地从树的叶结点向上回缩,比较叶子结点回缩到父结点之前TB和之后TA的树的损失函数,如果损失函数变小则进行剪枝
    在这里插入图片描述
  • 返回上一步,直至不能继续为止,得到损失函数最小的子树

CART 算法

CART的特点
1、CART是二元划分,产生二叉树,在建立树时,如果目标变量是标称的,并且具有两个以上类别,CART可能考虑将目标类别合并成两个超类别(双化);如果目标变量为连续值,则CART找出一组基于树的回归方程来预测目标变量

2、CART根据不同目标,采用多种指标选择决策属性 :

  • 分类目标:Gini指标,Towing,order Towing
  • 连续目标(回归):最小平方残差、最小绝对残差

3、CART的剪枝操作可以选择预剪枝或者后剪枝

CART回归树生成
(公式好多不想贴图了 ORZ
参考下面两篇博客:
https://blog.csdn.net/opensuse1995/article/details/77542330
https://blog.csdn.net/huahuaxiaoshao/article/details/86183738

CART分类树生成
分类问题中,假设有k个类,样本点属于k的概率Pk,则概率分布的基尼指数:
基尼指数
对给定的样本集合D,基尼指数为:
样本的基尼指数
如果样本集合D根据特征A是否为a被分割成D1和D2,则在特征A的条件下,集合D的基尼指数:
样本D根据特征A切分的基尼指数
生成过程如下:
从根节点开始,递归对每个结点操作
1、设结点数据集为D,对每个特征A,对其每个值a,根据样本点对A=a的测试为是或否,将D分为D1,D2,计算A=a的基尼指数
2、在所有的特征A以及所有可能的切分点a中,选择基尼指数最小的特征和切分点,将数据集分配到两个子结点中。
3、对两个子结点递归调用1,2步骤
4、生成CART树
具体实例可以参考:https://blog.csdn.net/baimafujinji/article/details/53269040


随机森林

步骤:

  • 原始训练集为N,应用bootstrap法有放回地随机抽取k个新的自助 样本集,并由此构建k棵分类树,每次未被抽到的样本组成了k个袋外数据
  • 设有mall个属性,则在每一棵树的每个结点处随机抽取mtry个属性,然后在mtry中选择一个最具有分类能力的变量,变量分类的阈值通过检 查每一个分类点确定;
  • 每棵树最大限度地生长, 不做任何修剪;
  • 将生成的多棵分类树组成随机森林,用随机森林分类器对新的数 据进行判别与分类,分类结果按树分类器的投票多少而定。

需要注意的是: 对于每个训练集,构造一颗决策树,在节点找特征进行分裂的时候,并不是对所有特征找到能使得指标(如信息增益)最大的,而是在特征中随机抽取一部分特征,在抽到的特征中间找到最优解,应用于节点,进行分裂。 随机森林的方法由于有了bagging,也就是集成的思想在,实际上相当于对于样本和特征都进行了采样(如果把训练数据看成矩阵,就像实际中常见的那样,那么就是一个行和列都进行采样的过程),所以可以避免过拟合。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值