机器学习算法系列(四)-- 决策树

决策树是一种经典机器学习模型,通过信息熵和信息增益选择特征进行分类。ID3算法基于信息增益选择最优划分特征,但可能偏好取值多的特征。剪枝算法用于防止过拟合,包括前剪枝和后剪枝。此外,文章还介绍了集合学习方法如Bagging、Boosting和随机森林。
摘要由CSDN通过智能技术生成

机器学习算法之–决策树

最经典的机器学习模型之一,成树型结构,决策树的目的是为了产生一颗泛化能力强,处理未见实例能力强的树,通过特征判断不断分类,基本流程遵循“分而治之”的递归分类策略。

一、算法原理

1.1、特征选择

关键就是选取对训练数据具有分类能力的特征,可提高决策树学习的效率。通常特征选择的准则是信息增益或信息增益比。

1.2、信息增益

  • 熵:表示随机变量不确定性的度量;熵越大,随机变量的不确定性就越大。
  • 信息熵:出自香浓的《通信数学原理》,是度量样本集合纯度最常用的一种指标

假定当前样本集合X中第k类样本所占比例: p k ( k = 1 , 2 , . . . , ∣ y ∣ ) p_k(k=1,2,...,|y|) pk(k=1,2,...,y),信息熵(Information Entropy)定义为:
E n t ( D ) = − ∑ k = 1 ∣ y ∣ p k l o g 2 p k Ent(D)=-\sum_{k=1}^{|y|}p_klog_2p_k Ent(D)=k=1ypklog2pk

  • 熵Ent(D)随概率p(x)变化的曲线如下图所示
    在这里插入图片描述

Ent(D)越小,D纯度越高;熵越大,随机变量的不确定性就越大。
当概率越接近0或1时,信息熵值越小,不确定性越小,数据越纯

  • 条件熵:H(Y|X),表示在已知随机变量X的条件下随机变量Y的不确定性。
  • 信息增益:表示得知特征X的信息而使得类Y的信息的不确定性减少的程度

属性a有V个不同取值 { a 1 , . . . . . . , a V } \{a^1,......,a^V \} {a1,......,aV},若使用a对样本集D进行划分,则会产生V个分支节点, D v D^v Dv表示数据集在属性a上取值为 a V a^V aV的样本,根据信息熵公式可计算出该信息熵,再考虑到不同分支包含的样本数不同,给分支节点赋予权重 ∣ D v ∣ ∣ D ∣ \frac{|D^v|}{|D|} DDv,也就是样本数越多的分支结点影响最大,于是便可计算出使用属性a进行划分所获得的“信息增益”(information gain)
G a i n ( D , a ) = E n t ( D ) − ∑ v = 1 V ∣ D v ∣ ∣ D ∣ E n t ( D v ) Gain(D, a)=Ent(D)-\sum_{v=1}^{V}\frac{|D^v|}{|D|}Ent(D^v) Gain(D,a)=Ent(D)v=1VDDvEnt(Dv)

  • |D|表示样本容量
  • 其中, ∑ v = 1 V ∣ D v ∣ ∣ D ∣ E n t ( D v ) \sum_{v=1}^{V}\frac{|D^v|}{|D|}Ent(D^v) v=1VDDvEnt(Dv)称为:条件熵 H(D|A),表示特征A对训练数据集D的条件熵
  • 一般而言,信息增益越大,意味着使用属性a进行划分所获得的“纯度提升”越大,因此可使用信息增益来进行决策划分的属性选择依据(ID3算法就是使用该原理)
  • 信息增益比:以信息增益作为划分训练数据集的特征,存在偏向于选取取值较多的特征的问题,使得信息增益比可以对这一问题进行校正,这也是特征选择的另一标准

g R ( D , A ) = G a i n ( D , a ) H a ( D ) g_R(D, A)=\frac{Gain(D, a)}{H_a(D)} gR(D,A)=Ha(D)Gain(D,a)
其中Gain(D,a)表示特征信息增益; H a ( D ) H_a(D) Ha(D)表示训练数据集D关于特征a的值的熵,且 H a ( D ) = − ∑ v = 1 V ∣ D v ∣ ∣ D ∣ l o g 2 ∣ D i ∣ ∣ D ∣ H_a(D)=-\sum_{v=1}^{V}\frac{|D^v|}{|D|}log_2\frac{|D_i|}{|D|} HaD=v=1VDDvlog2DDi,且概率 ∣ D i ∣ ∣ D ∣ = p i \frac{|D_i|}{|D|}=p_i DDi=pi

  • 特征选择:特征选择在于选取对训练数据具有分类能力的特征,可以提高决策树学习的效率。通常特征选择的准则是信息增益或信息增益比。

二、决策树的创建(ID3算法)

叶结点对应一个决策结果,其余分支节点对应一个属性测试

  • 信息熵计算:①计算数据集DataSet划分前的信息熵;②遍历所有未作为划分条件的特征,分别计算根据每特征划分的信息熵
  • 特征选择:选择信息增益最大的特征,使用其作为DS划分节点来划分DS
  • 递归:递归处理被划分后的所有子数据集DS,从未被选择的特征中继续进行划分
  • 终止:①直到所有特征都用完,终止决策;②或者当划分后的信息增益足够小,也停止决策

算法模拟
输入:训练数据集D,特征集A,阈值 ϵ \epsilon ϵ
输出:决策树T

  • 若D中所有实例属于同一类 C k C_k Ck,则T为单结点树,并将类 C k C_k Ck作为该结点的类标记并返回T
  • 若A=空集,则T为单结点树,并将D中实例数最大的类 C k C_k Ck作为该结点类标记并返回T
  • 否则,计算A中各特征对D的信息增益,选择信息增益最大的特征 A g A_g Ag
  • 如果 A g A_g Ag信息增益小于某阈值 ϵ \epsilon ϵ,则置T为单结点树,并将D中实例数最大的类 C k C_k Ck作为该结点类标记,并返回T
  • 否则,对于 A g A_g Ag每一个可能值 a i a_i ai,依 A g = a i A_g=a_i Ag=ai将D分割为若干非空子集 D i D_i Di,将 D i D_i Di中实例数最大的类作为标记,构建子结点,由节点及其子节点构成树T,返回T
  • 对第i个子结点,以 D i D_i Di为训练集,以 A − A g A-{A_g} AAg为特征集,递归地调用前5步,得到子树 T i T_i Ti,返回 T i T_i Ti

ID3算法相当于用极大似然法进行概率模型的选择。

注意:

  • 特征是连续值,将其离散化(划分区间)
  • 避免极端分类:加上正则项,整体再作为最后信息熵的值;或使用信息增益比作为特征选择标准(C4.5算法,与ID3相比不同之处在于根据信息增益比来作为划分依据)。

三、剪枝算法

在决策树学习中将以生成的数进行简化的过程。剪枝从已生成的树上裁掉一些子树或叶结点,是为了解决过拟合问题

前剪枝:也叫预剪枝,构造决策树的过程中无法进一步降低信息熵时,停止建立该分支;(设定一个阈值,即使减小量小于该阈值,也停止建立分值)

后剪枝(可由一种动态规划算法来实现):决策树建立完成之后再进行剪枝操作,是比较普遍使用的方法,根据“大多数原则”;

  • 对于拥有同样父节点的一组节点进行检查、判断。
  • 将其合并之后,信息熵的增量是否小于某一阈值?
  • 小于:合并结点,用叶结点中类别最多的那个作为新结点的类别
  • 例:降低错误率剪枝法(简化版)

四、集合算法

自助聚合算法Bagging(Bootstrap Aggregating):有放回采样。

原理:从m个样本中采样n次,组成包含n个样本的训练集,训练模型,重复B次,得到B个模型。如果是分类问题,由B个模型得到的结果投票决定(少数服从多数);若用于回归问题,取B个模型所的结果的平均值作为最终结果。

正向激励算法boosting:

原理:初始化时,m个训练样本的数据集,每个样本分配一个初始权重,使用带权数据集训练模型,得到模型后,增加预测错误样本权重,采用新的带权数据集训练新模型,重复B次,得到B个模型。

随机森林:每次训练时,随机选取一个特征的子集进行训练

  • 两个关键参数:构建的决策树个数t,单棵树特征数f

随机森林中单棵决策树的构建:

  • 有放回地采样m次
  • 从n个特征中无放回采样f次,构成一个新的数据集
  • 新数据集上构建决策树
  • 重复上述过程t次,构建t棵决策树

随机森林分类结果

  • 数字型:平均值
  • 分类型:少数服从多数

为什么不选全部特征训练:为了解决过拟合问题,强关联,使得每个特征值都保持少量的贡献

五、算法实战

决策树算法实战可参考该博客:《机器学习实战》第三章 Python3代码-(亲自修改测试可成功运行)

以上就是关于决策树的分享,若有不妥之处,欢迎各路大佬不吝赐教~

喜欢的伙伴点个赞关注一下吧~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

反卷三明治

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值