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

这篇具有很好参考价值的文章主要介绍了机器学习算法系列(四)-- 决策树。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

机器学习算法之–决策树

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

一、算法原理

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代码-(亲自修改测试可成功运行)

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

喜欢的伙伴点个赞关注一下吧~文章来源地址https://www.toymoban.com/news/detail-422408.html

到了这里,关于机器学习算法系列(四)-- 决策树的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python 机器学习入门 - - 决策树算法学习笔记

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 ChatGPT一问世就给整个社会带来巨大的震撼和冲击,不禁让人惊叹现在AI的强大,我们好像离通用人工智能更近一步。在过去十几年人工智能领域的蓬勃发展中,扮演着主导地位的算法基本都是神经网络和

    2023年04月08日
    浏览(29)
  • 传统机器学习(五)决策树算法(一)

    ​ 可以参考:机器学习实战(二)决策树-分类树(海洋生物数据集案例) 分类树参数如下 回归树DecisionTreeRegressor的入参与分类树基本相同,不同之处在于: criterion可选值:mse:默认,均方差,mae:平均绝对差,friedman_mse 没有class_weight 用sklearn建好决策树后,可以打印出树的

    2023年04月22日
    浏览(30)
  • 机器学习——决策树1(三种算法)

    要开始了…内心还是有些复杂的 因为涉及到熵…单纯的熵,可以单纯 复杂的熵,如何能通俗理解呢… 我也没有底气,且写且思考吧 首先,决策树的思想,有点儿像KNN里的KD树。 KNN里的KD树,是每次都根据某个特征,来将所有数据进行分类。 决策树也是,每次都根据某个特征

    2024年02月12日
    浏览(32)
  • 《机器学习核心技术》分类算法 - 决策树

    「作者主页」: 士别三日wyx 「作者简介」: CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」: 小白零基础《Python入门到精通》 决策树是一种 「二叉树形式」 的预测模型,每个 「节点」 对应一个 「判断条件」 , 「满足」 上一个条件才

    2024年02月11日
    浏览(40)
  • 【机器学习入门】决策树算法(三):C5.0算法

    C5.0算法是昆兰在C4.5算法的基础上提出的 商用改进 版本,目的是对含有大量数据的数据集进行分析。 C5.0算法的训练过程大致如下。 假设训练的样本集S共有n个样本,训练决策树模型的次数为T,用Ct表示t次训练产生的决策树模型,经过T次训练后最终构建的复合决策树模型表

    2024年02月08日
    浏览(41)
  • 机器学习实战3-利用决策树算法根据天气数据集做出决策

    大家好,我是微学AI,今天给大家介绍一下机器学习实战3-利用决策树算法根据天气数据集做出决策,决策树是一种广泛使用的机器学习算法,用于分类和回归问题。它的基本思想是通过对数据进行分而治之,把复杂的问题转化为简单的决策序列。 一、决策树的介绍 对于决策

    2024年02月08日
    浏览(31)
  • 机器学习基础之《分类算法(6)—决策树》

    一、决策树 1、认识决策树 决策树思想的来源非常朴素,程序设计中的条件分支结构就是if-else结构,最早的决策树就是利用这类结构分割数据的一种分类学习方法 2、一个对话的例子 想一想这个女生为什么把年龄放在最上面判断!!! 如何高效的进行决策?特征的先后顺序

    2024年02月09日
    浏览(36)
  • 机器学习算法之决策树(decision tree)

    决策树(Decision Tree,又称为判定树)算法是机器学习中常见的一类算法,是一种以树结构形式表达的预测分析模型。决策树属于监督学习(Supervised learning),根据处理数据类型的不同,决策树又为分类决策树与回归决策树。最早的的决策树算法是由Hunt等人于1966年提出,Hunt算法

    2024年02月13日
    浏览(36)
  • 决策树:理解机器学习中的关键算法

    决策树是一种流行而强大的机器学习算法,它从数据中学习并模拟决策过程,以便对新的未知数据做出预测。由于其直观性和易理解性,决策树成为了分类和回归任务中的首选算法之一。在本文中,我们将深入探讨决策树的工作原理、如何构建决策树、它们的优缺点,以及在

    2024年01月18日
    浏览(33)
  • 基于机器学习的智能决策支持系统:实现智能化决策的关键算法

    作者:禅与计算机程序设计艺术 在现代社会,随着大数据、云计算、人工智能等新技术的发展,人们越来越重视决策效率与准确性。越来越多的人开始从事智能决策领域,通过数据分析预测未来的趋势,并根据此做出正确的决策。由于智能决策的本质就是进行一系列的决策规

    2024年02月07日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包