机器学习---算法---决策树

qing1991 qing1991     2023-02-01     204

关键词:

转自:https://blog.csdn.net/qq_43208303/article/details/84837412

 

决策树是一种机器学习的方法。决策树的生成算法有ID3, C4.5和CART等。决策树是一种树形结构,其中每个内部节点表示一个属性上的判断,每个分支代表一个判断结果的输出,最后每个叶节点代表一种分类结果。决策树是一种十分常用的分类方法,需要监管学习(有教师的Supervised Learning),监管学习就是给出一堆样本,每个样本都有一组属性和一个分类结果,也就是分类结果已知,那么通过学习这些样本得到一个决策树,这个决策树能够对新的数据给出正确的分类。这里通过一个简单的例子来说明决策树的构成思路:

给出如下的一组数据,一共有十个样本(学生数量),每个样本有分数,出勤率,回答问题次数,作业提交率四个属性,最后判断这些学生是否是好学生。最后一列给出了人工分类结果。

技术分享图片

 

然后用这一组附带分类结果的样本可以训练出多种多样的决策树,这里为了简化过程,我们假设决策树为二叉树,且类似于下图:

技术分享图片

 

通过学习上表的数据,可以A,B,C,D,E的具体值,而A,B,C,D,E则称为阈值。当然也可以有和上图完全不同的树形,比如下图这种的:

技术分享图片

 

所以决策树的生成主要分以下两步,这两步通常通过学习已经知道分类结果的样本来实现。

节点的分裂:一般当一个节点所代表的属性无法给出判断时,则选择将这一节点分成2个子 节点(如不是二叉树的情况会分成n个子节点)

阈值的确定:选择适当的阈值使得分类错误率最小 (Training Error)。

比较常用的决策树有ID3,C4.5和CART(Classification And Regression Tree),CART的分类效果一般优于其他决策树。下面介绍具体步骤。 ID3: 由增熵(Entrophy)原理来决定那个做父节点,那个节点需要分裂。对于一组数据,熵越大说明分类结果越好。

比如上表中的4个属性:单一地通过以下语句分类:

分数小于70为【不是好学生】:分错1个

出勤率大于70为【好学生】:分错3个

问题回答次数大于9为【好学生】:分错2个

作业提交率大于80%为【好学生】:分错2个。

最后发现 分数小于70为【不是好学生】这条分错最少,也就是熵最大,所以应该选择这条为父节点进行树的生成,当然分数也可以选择大于71,大于72等等,出勤率也可以选择小于60,65等等,总之会有很多类似上述1~4的条件,最后选择分类错最少即熵最大的那个条件。而当分裂父节点时道理也一样,分裂有很多选择,针对每一个选择,与分裂前的分类错误率比较,留下那个提高最大的选择,即熵增益最大的选择。

C4.5:通过对ID3的学习可以知道ID3存在一个问题,那就是越细小的分割分类错误率越小,所以ID3会越分越细,比如以第一个属性为例:设阈值小于70可将样本分为2组,但是分错了1个。如果设阈值小于70,再加上阈值等于95,那么分错率降到了0,但是这种分割显然只对训练数据有用,对于新的数据没有意义,这就是所说的过度学习(Overfitting)。分割太细了,训练数据的分类可以达到0错误率,但是因为新的数据和训练数据不同,所以面对新的数据分错率反倒上升了。决策树是通过分析训练数据,得到数据的统计信息,而不是专为训练数据量身定做。就比如给男人做衣服,叫来10个人做参考,做出一件10个人都能穿的衣服,然后叫来另外5个和前面10个人身高差不多的,这件衣服也能穿。但是当你为10个人每人做一件正好合身的衣服,那么这10件衣服除了那个量身定做的人,别人都穿不了。所以为了避免分割太细,c4.5对ID3进行了改进,C4.5中,增加的熵要除以分割太细的代价,这个比值叫做信息增益率,显然分割太细分母增加,信息增益率会降低。除此之外,其他的原理和ID3相同。

CART:分类回归树

CART是一个二叉树,也是回归树,同时也是分类树,CART的构成简单明了。

CART只能将一个父节点分为2个子节点。CART用GINI指数来决定如何分裂:

GINI指数:总体内包含的类别越杂乱,GINI指数就越大(跟熵的概念很相似)。

a. 比如出勤率大于70%这个条件将训练数据分成两组:大于70%里面有两类:【好学生】和【不是好学生】,而小于等于70%里也有两类:【好学生】和【不是好学生】。

b. 如果用分数小于70分来分:则小于70分只有【不是好学生】一类,而大于等于70分有【好学生】和【不是好学生】两类。

比较a和b,发现b的凌乱程度比a要小,即GINI指数b比a小,所以选择b的方案。以此为例,将所有条件列出来,选择GINI指数最小的方案,这个和熵的概念很类似。

CART还是一个回归树,回归解析用来决定分布是否终止。理想地说每一个叶节点里都只有一个类别时分类应该停止,但是很多数据并不容易完全划分,或者完全划分需要很多次分裂,必然造成很长的运行时间,所以CART可以对每个叶节点里的数据分析其均值方差,当方差小于一定值可以终止分裂,以换取计算成本的降低。

CART和ID3一样,存在偏向细小分割,即过度学习(过度拟合的问题),为了解决这一问题,对特别长的树进行剪枝处理,直接剪掉。

以上的决策树训练的时候,一般会采取Cross-Validation法:比如一共有10组数据:

第一次. 1到9做训练数据, 10做测试数据

第二次. 2到10做训练数据,1做测试数据

第三次. 1,3到10做训练数据,2做测试数据,以此类推

做10次,然后大平均错误率。这样称为 10 folds Cross-Validation。

比如 3 folds Cross-Validation 指的是数据分3份,2份做训练,1份做测试。

决策树的用途:
决策树是一种先进生产力,能够在中等规模数据上低难度获得较好的模型。这是因为树类的几大能力:
1 数据不需精心归一化,这个在神经网络领域是不行的,轻则效果不好,重则分分钟梯度给你nan
2 离散特征连续特征无脑混搭即可使用,神经网络需要精细设计
3 能接受缺失数据,这一点神经网至今为止没有好的解决方案
4 超参意义简明易调
5 一定的“可解释”性,当然 树太多了也不行刷imagenet这种数据集来说,树或许不行了,但在千奇百怪的实际问题中,其地位还是无可撼动的。很可能一个新手用树模型短时间可以获得一个,比神经网络专家精心调参的模型只差一点的模型。对于追求成本和效率的工业界,这就是先进生产力。









机器学习算法学习02:决策树的学习以及应用决策树解决cora数据集论文分类问题(代码片段)

机器学习算法学习02:决策树的学习以及应用决策树解决Cora数据集论文分类问题文章目录机器学习算法学习02:决策树的学习以及应用决策树解决Cora数据集论文分类问题1.前言2.算法分析2.1算法概述2.2算法优化3.算法代码3.... 查看详情

机器学习决策树

1、决策树简介1.1决策树概述决策树算法是一种基于树形结构的分类算法,它能从给定的无序的训练样本中,提炼出树型的分类模型,树形中包含判断模块和终止模块。它是一种典型的分类算法,首先对数据进行处理,利用归纳... 查看详情

机器学习--决策树分类算法及应用

1.决策树分类算法原理1.1概述决策树(decisiontree)——是一种被广泛使用的分类算法。相比贝叶斯算法,决策树的优势在于构造过程不需要任何领域知识或参数设置在实际应用中,对于探测式的知识发现,决策树更加适用1.2算法... 查看详情

机器学习算法实践:决策树(decisiontree)(转载)

  前言     最近打算系统学习下机器学习的基础算法,避免眼高手低,决定把常用的机器学习基础算法都实现一遍以便加深印象。本文为这系列博客的第一篇,关于决策树(DecisionTree)的算法实现,文中我将对决策树种... 查看详情

机器学习算法整理决策树

决策树的训练与测试如何切分特征(选择节点)衡量标准-熵 信息增益决策树构造实例信息增益:表示特征X使得类Y的不确定性减小的程度。(分类后的专一性,希望分类后的结果是同类在一起)Outlook=sunny时,熵值=(-2/5)*log(2/... 查看详情

机器学习算法:决策树算法api

学习目标知道决策树算法api的具体使用classsklearn.tree.DecisionTreeClassifier(criterion=’gini’,max_depth=None,random_state=None)criterion特征选择标准"gini"或者"entropy",前者代表基尼系数,后者代表信息 查看详情

机器学习实战精读--------决策树

感觉自己像个学走路的孩子,每一步都很吃力和认真!机器根据数据集创建规则,就是机器学习。决策树:从数据集合中提取一系列规则,适用于探索式的知识发现。决策树本质:通过一系列规则对数据进行分类的过程。决策树... 查看详情

ai机器学习-决策树算法-概念和学习过程

1.概念决策树是通过一系列规则对数据进行分类的过程,它提供一种在什么条件下会得到什么值的类似规则的方法。决策树分为分类树和回归树两种,分类树对离散变量做决策树,回归树对连续变量做决策树。分类决策树模型是... 查看详情

机器学习算法决策树-6prism

..._CSDN博客-数据分析师领域博主目前进度:第四部分【机器学习算法】PRISM决策规则算法如何使用分类树来进行分类预测:如果我们建立好决策树,那我们要怎么进行分类规则的预测呢。一般有两种方法。第 查看详情

机器学习算法之决策树

一.简介  决策树的一个重要任务是理解数据中蕴含的知识信息。    决策树优点:计算复杂度不高,输出结果易于理解,对中间值的缺失不敏感,可以处理不相关特征数据。    缺点:可能产生过... 查看详情

机器学习——决策树(下)算法实现

Decisiontree在机器学习(5)——决策树(上)原理中介绍了决策树的生成和剪枝原理。介绍了CART,ID3,C4.5等算法的算法流程,其中CART算法可以实现回归和分类,是基于基尼不纯度实现的,这里并未实... 查看详情

机器学习-决策树(decisiontree)算法

学习彭亮《深度学习基础介绍:机器学习》课程[toc]决策树概念决策树是一种用于监督学习的层次模型,由此,局部区域通过少数几步递归分裂决定。决策树是一个类似流程图的树结构:其中每个结点表示在一个... 查看详情

spark机器学习:决策树算法

1.决策树基本知识决策树就是通过一系列规则对数据进行分类的一种算法,可以分为分类树和回归树两类,分类树处理离散变量的,回归树是处理连续变量。样本一般都有很多个特征,有的特征对分类起很大的作用,有的特征对... 查看详情

机器学习算法

分类算法: 决策树:    对每一节点,根据feature进行分类。选择信息增益最大的feature,也就是选择将不确定性降低最多的feature。随机森林:多个决策树的投票机制来改善决策树,假设有m棵决策树,要有m个一... 查看详情

机器学习二——分类算法--决策树decisiontree

机器学习算法评估标准:准确率,速度,强壮性(噪音影响较小),可规模性,可解释性。1、决策树 DecisionTree:决策树是一个类似于流程图的树结构,其中每个内部节点表示在一个属性上的测试,每一个分支代表一个属性... 查看详情

机器学习入门之决策树算法

1、什么是决策树(DecisionTree)       决策树是一个类似于流程图的树结构,其中每一个树节点表示一个属性上的测试,每一个分支代表一个属性的输出,每一个树叶节点代表一个类或者类的分布,树的... 查看详情

机器学习实践之决策树算法学习

...37608890/article/details/78731169)。  本文根据最近学习机器学习书籍网络文章的情况,特将一些学习思路做了归纳整理,详情如下.如有不当之处 查看详情

学习笔记|机器学习决策树

文章目录一、算法原理二、基础知识1.自信息、信息熵与条件熵2.信息增益和增益率3.Gini值和Gini指数三、过拟合与剪枝四、连续值和缺失值处理1.连续值处理2.缺失值处理五、总结通过这篇博客,您将收获如下知识:熟悉决策树相... 查看详情