机器学习——决策树

回一幻 回一幻     2022-12-02     607

关键词:

决策树

一、了解决策树

  决策树(Decision Tree)是一类常见的机器学习算法,属于非参数的监督学习方法,主要用于分类和回归,也可以用于特征提取。

  决策树就是一棵树(很像流程图),其内包含一个根节点,若干内部节点和若干叶子结点。树的最高层是就是根节点,包含样本全集。内部节点代表对应的一个特征的测试,每个节点包含的样本根据测试的结果被划分到子节点中,即树的分支代表该特征的每一个测试结果。每一个叶子节点代表一个类别或决策结果。从根节点到一个叶子结点对应一个判定测试序列。

  决策树的目的是构造一种模型,使之能够从样本数据的特征属性中,通过学习简单的决策规则——if-then规则,从而预测目标变量的值。

  下图即为一个决策树的示意描述,内部节点用矩形表示,叶子节点用椭圆表示。

  示意图解释:如有一个孩子升学选学校,根据自己意愿选择学校性质,只去公立学校。然后根据自己分数(低于500),500多分的学校去不了。最后根据学费收取情况,想去好一点的,最后选择了8k的学校。举个例子,逻辑不是很通,理解理解。

二、决策树的基本过程

  一棵决策树的生成过程主要包括决策树生成和剪枝两部分。
基本过程:
  1.从开始位置,将所有数据划分到一个节点,即根节点。
  2.经历两个步骤判断条件:
    (1)若数据为空集,跳出循环。
    (2)若样本都属于同一类,跳出循环,节点标记为该类别;
  3.如果经过橙色标记的判断条件都没有跳出循环,则考虑对该节点进行划分。
  4.经历上步骤划分后,生成新的节点,然后循环判断条件,不断生成新的分支节点,直到所有节点都跳出循环。
  5.结束,最后形成一棵决策树。

三、划分属性

  划分属性意思指从训练数据的众多特征中选择一个特征属性作为当前节点的分裂标准。然后根据属性进行分裂,自顶向下的顺序生成子节点,直到数据集不可分后形成完整决策树。

  在众多属性中选取最优划分特征属性是构建一棵完美决策树的重点。

节点纯度:决策树的分支节点所包含的样本尽可能属于同一类别。

1、Hunt算法

  Hunt算法采用贪心策略构建决策树。在选择划分数据的属性时,采取一系列局部最优决策来构建决策树。

算法过程:

  如果样本集D中包含属于多个类的实例,则选择一个属性测试条件,将记录划分成较小的子集。对于测试条件的每个输出,创建一个子结点,并根据测试结果将D中的实例分布到子结点中。然后,对于每个子结点,递归地调用该算法。

:hunt算法是比较早的算法之一(数据挖掘中可能会讲到),现今机器学习中常用的是以下三种算法。

2、ID3算法

  ID3算法是决策树的一个经典的构造算法,内部使用信息熵以及信息增益来进行构建,每次迭代选择信息增益最大的特征属性作为分割属性。

  ID3算法的核心是在决策树各级节点上选择属性时,用信息增益衡量不纯度,使得在每一个非叶节点进行测试时能获得关于被测试记录最大的类别信息。

算法过程:

  在根节点处计算信息熵,然后根据属性依次划分并计算其节点的信息熵和信息增益,根据信息增益进行降序排列,排在前面的就是第一个划分属性,其后依次类推,这就得到了决策树的形状。

  信息熵(information entropy)是度量样本集合纯度最常用的一种指标。节点属性越混乱,信息熵越大,信息熵越大,一个节点中的样本属性就越多。

计算公式:样本D中第k类样本所占的比率pk(k=1,2,3,…|K|),其中K为类别总数,公式为:

Ent(D)的值越小,则D的纯度越高

信息增益(information gain):根节点信息熵-属性节点的信息熵=信息增益。

计算公式:假定离散属性a有V个可能的取值a1,a2,a3,…av,若使用a来对样本集D进行划分,则会产生V个分支节点,Dv为第v个分支节点包含了D中所有在属性a上取值为av的样本,为信息熵赋予权重|Dv|/|D|(样本越多的分支节点影响越大),公式为:

ID3特点

优点:
  ID3算法理论清晰,方法简单,计算量小,学习能力强,比较适用于处理规模较大的学习问题。

缺点:
  1、信息增益计算依赖特征数目较多的特征,但属性取值多的属性不一定最优;
  2、是非递增算法,不能对连续属性进行处理;
  3、抗噪性差,噪声数据比较敏感;
  4、需计算每一个属性的信息增益值,计算代价较高。

3、C4.5算法

  C4.5是基于ID3算法的改进,衡量不纯度的指标采用信息增益比率。它使用了信息增益和增益比率两种选择算法,先选出信息增益高于平均水平的属性,然后再在这些属性中选择增益比最高的,作为最优划分属性。这样综合了信息增益和增益比的优点,可以取得较好的效果。

增益比率(gain ration):信息增益除以该属性本身的熵.

计算公式

其中:

C4.5特点
  优点:分类规则易于理解,准确率较高。
  不足之处:构造树的过程中,需要对数据集进行多次扫描排序,效率低。

ID3和C4.5对比:
1、使用信息增益率替换了信息增益下降度作为属性选择的标准;
2、在决策树构造的同时进行剪枝操作;避免了树的过度拟合情况;
3、可以对不完整属性和连续型数据进行处理;
4、使用k交叉验证降低了计算复杂度;
5、针对数据构成形式,提升了算法的普适性。

3、CART算法

  CART(Classification and RegressionTrees, CART)算法:是一种二分递归分割技术,把当前样本划分为两个子样本,使得生成的每个非叶子节点都有两个分支,因此,CART算法生成的决策树是结构简洁的二叉树。

  CART衡量不纯度的指标是基尼系数。CART算法使用GINI增益作为分割属性选择的标准,选择GINI增益最大的作为当前数据集的分割属性。

  基本思想:对训练样本集进行递归划分自变量空间,并依次建立决策树模型,然后采用验证数据的方法进行树枝修剪,从而得到一颗符合要求的决策树分类模型。

  基尼指数(gini index):表示在样本集合中一个随机选中的样本被分错的概率。

  注:Gini指数越小表示集合中被选中的样本被分错的概率越小,也就是说集合的纯度越高,反之,集合越不纯。

  计算公式:基尼指数=样本被选中的概率 * 样本被分错的概率

CART特点

优点:
  1、可解释性强;
  2、可处理非线性问题;
  3、模型简单:比其它模型更容易理解,从模型中得到的规则能获得非常直观的解释;
  4、不太容易显式的用数学表达式表达,不可微;
  5、模型预测效率高:能够处理空缺值,这样就避免了因空缺值造成的偏差;能够处理孤立的叶子结点,这样可以避免因为数据集中与其它数据集具有不同的属性的数据对进一步分支产生影响;
  6、使用的是二元分支,能够充分地运用数据集中的全部数据,进而发现全部树的结构。

缺点:
  1、对连续性的字段比较难预测;
  2、对有时间顺序的数据,需要很多预处理的工作;
  3、当类别太多时,错误可能就会增加的比较快;
  4、一般的算法分类的时候,只是根据一个字段来分类。

四、剪枝策略

  决策树剪枝:通过剪枝缩小树结构规模、缓解过拟合。剪枝分为预剪枝和后剪枝两种。

1、预剪枝

  预剪枝:在决策树生成过程中,对每个结点在划分前先进性估计,若当前结点的划分不能带来决策树泛化性能提升,则停止划分并将当前结点标记为叶结点。它的位置在每一次生成分支节点前,先判断有没有必要生成,如没有必要,则停止划分。
  特点:先剪枝算法避免了无谓的计算量浪费并且可以直接生成最终的分类数,因此被普遍采用。

2、后剪枝

  后剪枝:先从训练集生成一棵完整的决策树(相当于结束位置),然后自底向上的对非叶结点进行考察,若将该结点对应的子树替换为叶结点能带来决策树泛化性能提升,则将该子树替换为叶结点。
  特点:后剪枝策略会加大决策树算法的计算量,但分类结果稍微准确。后剪枝的计算量代价比预剪枝方法大得多,特别是在大样本集中,不过对于小样本的情况,后剪枝方法还是优于预剪枝方法的。
  示意图如下:

机器学习决策树

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

机器学习--决策树

目录DecisionTreePre:TreeconstructionInformationGain信息增益1.信息增益的计算MeasuringconsistencyinadatasetUsingresursiontoconstructadecisiontreePlottingtressinMatplotlibDecisionTreePre:如下图所示,决策树包含判断模块、终止模块。其中终止模块表示 查看详情

机器学习笔记-决策树

决策树(DecisionTree)决策树学习,建立一颗树结构的模型。此模型由一系列逻辑决策构成。在此结构中决策点代表某个属性上的决策,分支表示决策选择项,树的叶子节点是一系列联合决策的结论。决策树通过分而治之(Divideandconq... 查看详情

《机器学习实战》-决策树(代码片段)

目录决策树决策树简介决策树的构造信息增益划分数据集递归构建决策树在Python中使用Matplotlib注解绘制树形图Matplotlib注解构造注解树测试和存储分类器测试算法:使用决策树执行分类使用算法:决策树的存储示例:使用决策树... 查看详情

机器学习—决策树

importnumpyasnpimportpandasaspdimportmatplotlib.pyplotaspltfromsklearn.treeimportDecisionTreeClassifierfromsklearn.preprocessingimportStandardScalerfromsklearn.model_selectionimporttrain_test_splitfro 查看详情

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

.../blog.csdn.net/qq_43208303/article/details/84837412 决策树是一种机器学习的方法。决策树的生成算法有ID3,C4.5和CART等。决策树是一种树形结构,其中每个内部节点表示一个属性上的判断,每个分支代表一个判断结果的输出,最后每个叶... 查看详情

机器学习决策树

...种决策分支画成图形很像一棵树的枝干,故称决策树。在机器学习中,决策树是一个预测模型,他代表的是对象属性与对象值之间的一种映射关系。Entropy=系统的凌乱程度,使用算法ID3, C4.5和 查看详情

机器学习决策树理论第二卷

决策树内容来至于《统计学习与方法》李航,《机器学习》周志华,以及《机器学习实战》PeterHarringTon,相互学习,不足之处请大家多多指教!本卷的大纲为1CART算法1.1CART回归树1.2CART分类树2CART剪枝3总结1CART算法CART分类与回归树(classi... 查看详情

机器学习——决策树

...策树一、了解决策树  决策树(DecisionTree)是一类常见的机器学习算法,属于非参数的监督学习方法,主要用于分类和回归,也可以用于特征提取。  决策树就是一棵树(很像流程图),其内包含一个根... 查看详情

机器学习实战教程:决策树实战篇(代码片段)

一、前言上篇文章机器学习实战教程(二):决策树基础篇_M_Q_T的博客-CSDN博客讲述了机器学习决策树的原理,以及如何选择最优特征作为分类特征。本篇文章将在此基础上进行介绍。主要包括:决策树构建决... 查看详情

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

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

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

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

机器学习之路--决策树(代码片段)

...使用不熟悉的数据集合,并从中提取一系列规则,在这些机器根据数据集创建规则是,就是机器学习的过程。二,相关知识1决 查看详情

机器学习--决策树

 基本流程:  决策树:    根结点:属性测试,包含样本全集    内部结点:属性测试,根据属性测试的结果被划分到子结点中    叶结点:决策结果  划分选择:如何选择最优划分属性。目标是结点的"纯度"越... 查看详情

机器学习_决策树(代码片段)

       查看详情

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

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

机器学习3—决策树学习笔记

 机器学习实战第三章决策树#计算给定数据集的熵#导入log运算符frommathimportlogdefcalcShannonEnt(dataSet):#获取数据集的行数numEntries=len(dataSet)#设置字典的数据结构labelCounts={}#提取数据集的每一行的特征向量forfeatVecindataSet:#获取特征... 查看详情

机器学习——决策树(代码片段)

1、介绍决策树是一种依托决策而建立起来的一种树。在机器学习中,决策树是一种预测模型,代表的是一种对象属性与对象值之间的一种映射关系,每一个节点代表某个对象/分类,树中的每一个分叉路径代表某个可能的属性值... 查看详情