决策树、随机森林

author author     2023-05-04     219

关键词:

参考技术A 在了解树模型之前,自然想到树模型和线性模型,他们有什么区别呢?

决策树与逻辑回归的分类区别也在于此。

树形模型更加接近人的思维方式,可以 产生可视化的分类规则,产生的模型具有可解释性 。树模型拟合出来的函数其实是 分区间的阶梯函数 。

决策树(decision tree)是一种基本的分类与回归方法,此处主要讨论分类的决策树。决策树是一种十分常用的分类方法,属于有监督学习(Supervised Learning)。所谓有监督学习,就是给出一堆样本,每个样本都有一组属性和一个分类结果,也就是分类结果已知,那么通过学习这些样本得到一个决策树,这个决策树能够对新的数据给出正确的分类。

决策树是一种树形结构,它主要有三种不同的节点:

决策树算法主要包括三个部分: 特征选择、树的生成、树的剪枝。

比较常用的决策树算法有ID3,C4.5和CART(Classification And Regression Tree),CART的分类效果一般优于其他决策树。

样本数量,特征数量上面,一开始需要注意的:

当熵中的概率由数据估计(特别是最大似然估计)得到时,所对应的熵称为 经验熵 (empirical entropy)。

什么叫由数据估计?比如有10个数据,一共有两个类别,A类和B类。其中有7个数据属于A类,则该A类的概率即为十分之七。其中有3个数据属于B类,则该B类的概率即为十分之三。浅显的解释就是,这概率是我们根据数据数出来的。

训练数据集D,则训练数据集D的经验熵为H(D),|D|表示其样本容量,及样本个数。设有K个类Ck,k = 1,2,3,···,K,|Ck|为属于类Ck的样本个数,这经验熵公式可以写为:

信息增益表示得知特征X的信息而使得类Y的信息不确定性减少的程度。

条件熵H(Y|X)表示在已知随机变量X的条件下随机变量Y的不确定性,随机变量X给定的条件下随机变量Y的条件熵(conditional entropy) H(Y|X),定义X给定条件下Y的条件概率分布的熵对X的数学期望:

当熵和条件熵中的概率由数据估计(特别是极大似然估计)得到时,所对应的分别为经验熵和经验条件熵,此时如果有0概率,令0log0=0。

信息增益

一般地, 熵H(D)与条件熵H(D|A)之差成为互信息(mutual information) 。决策树学习中的信息增益等价于训练数据集中类与特征的互信息。

信息增益比

Gini 指数

举例计算Gini指数(不纯度)

这个分类结果明显并不是很好,因为它没有将见面与不见面完全的分开,在算法中,当然不能凭我们的“感觉”去评价分类结果的好坏。我们需要用一个数去表示。(具体数值代入上面的基尼指数计算公式)

信息增益 vs 信息增益比

Gini 指数 vs 熵

ID3算法的核心是在决策树各个结点上对应信息增益准则选择特征,递归地构建决策树。

具体方法是:

1)从根结点(root node)开始,对结点计算所有可能的特征的信息增益,选择信息增益最大的特征作为结点的特征。

2)由该特征的不同取值建立子节点,再对子结点递归地调用以上方法,构建决策树;直到 所有特征的信息增益均很小或没有特征可以选择 为止;

3)最后得到一个决策树。

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

与ID3算法相似,但是做了改进,将信息增益比作为选择特征的标准。

CART 的全称是分类与回归树。从这个名字中就应该知道,CART 既可以用于分类问题,也可以用于回归问题。

回归树中,使用平方误差最小化准则来选择特征并进行划分。每一个叶子节点给出的预测值,是划分到该叶子节点的所有样本目标值的均值,这样只是在给定划分的情况下最小化了平方误差。

要确定最优化分,还需要遍历所有属性,以及其所有的取值来分别尝试划分并计算在此种划分情况下的最小平方误差,选取最小的作为此次划分的依据。由于回归树生成使用平方误差最小化准则,所以又叫做最小二乘回归树。

ID3

熵表示的是数据中包含的信息量大小。熵越小,数据的纯度越高,也就是说数据越趋于一致,这是我们希望的划分之后每个子节点的样子。

信息增益 = 划分前熵 - 划分后熵。信息增益越大,则意味着使用属性 a 来进行划分所获得的 “纯度提升” 越大 **。也就是说,用属性 a 来划分训练集,得到的结果中纯度比较高。

ID3 仅仅适用于二分类问题。ID3 仅仅能够处理离散属性。

C4.5 克服了 ID3 仅仅能够处理离散属性的问题,以及信息增益偏向选择取值较多特征的问题,使用信息增益比来选择特征。 信息增益比 = 信息增益 / 划分前熵 选择信息增益比最大的作为最优特征。

C4.5 处理连续特征是先将特征取值排序,以连续两个值中间值作为划分标准。尝试每一种划分,并计算修正后的信息增益,选择信息增益最大的分裂点作为该属性的分裂点。

CART 与 ID3,C4.5 不同之处在于 CART 生成的树必须是二叉树 。也就是说,无论是回归还是分类问题,无论特征是离散的还是连续的,无论属性取值有多个还是两个,内部节点只能根据属性值进行二分。

决策树生成算法递归的产生决策树,直到不能继续下去为止,这样产生的树往往对训练数据的分类很准确,但对未知测试数据的分类缺没有那么精确,即会出现过拟合现象。过拟合产生的原因在于在学习时过多的考虑如何提高对训练数据的正确分类,从而构建出过于复杂的决策树,解决方法是考虑决策树的复杂度,对已经生成的树进行简化。

剪枝(pruning):从已经生成的树上裁掉一些子树或叶节点,并将其根节点或父节点作为新的叶子节点,从而简化分类树模型。

实现方式:极小化决策树整体的损失函数或代价函数来实现

决策树学习的损失函数定义为:

https://www.cnblogs.com/ooon/p/5647309.html

鉴于决策树容易过拟合的缺点,随机森林采用多个决策树的投票机制来改善决策树,我们假设随机森林使用了m棵决策树,那么就需要产生m个一定数量的样本集来训练每一棵树,如果用全样本去训练m棵决策树显然是不可取的,全样本训练忽视了局部样本的规律,对于模型的泛化能力是有害的。

产生n个样本的方法采用Bootstraping法,这是一种有放回的抽样方法,产生n个样本。

而最终结果采用Bagging的策略来获得,即多数投票机制。

随机森林的生成方法:

1.从样本集中通过重采样的方式产生n个样本

2.假设样本特征数目为a,对n个样本选择a中的k个特征,用建立决策树的方式获得最佳分割点

3.重复m次,产生m棵决策树

4.多数投票机制来进行预测

(需要注意的一点是,这里m是指循环的次数,n是指样本的数目,n个样本构成训练的样本集,而m次循环中又会产生m个这样的样本集)

随机森林是一个比较优秀的模型,在我的项目的使用效果上来看,它对于多维特征的数据集分类有很高的效率,还可以做特征重要性的选择。运行效率和准确率较高,实现起来也比较简单。 但是在数据噪音比较大的情况下会过拟合,过拟合的缺点对于随机森林来说还是较为致命的。

机器学习实战(三)——决策树 https://blog.csdn.net/jiaoyangwm/article/details/79525237

机器学习-决策树和随机森林

...ationForest:随机选择特征,随机选择分割点生成一定深度的决策树,由这样的决策树生成的随机森林。对于异常的样本,他应该在这一系列的决策树中很快到达叶子节点。到达叶子节 查看详情

python决策树\随机森林(代码片段)

查看详情

随机森林,决策树(randomforest)(代码片段)

http://www.cnblogs.com/maybe2030/p/4585705.html 阅读目录1什么是随机森林?2随机森林的特点3随机森林的相关基础知识4随机森林的生成5袋外错误率(ooberror)6随机森林工作原理解释的一个简单例子7随机森林的Python实现8参考内容回到顶... 查看详情

课时决策树和随机森林

决策树通常决策树主要有三种实现,分别是ID3算法,CART算法和C4.5算法。随机森林的重点在于单个决策树是如何建造的CARTClassificationAndRegressionTree,即分类回归树算法,简称CART算法,它是决策树的一种实现.CART算法是一种二分递... 查看详情

随机森林

...随机森林,即用随机的方式建立一个森林,森林是由很多决策树组成。每一个决策树之间都是没有关联的。在得到森林之后,对于测试集,要让每一棵决策树分别进行一下判断该样本属于哪一类。根据哪个类被选择的多,该样本... 查看详情

将随机森林变成决策树 - 在 R 中使用 randomForest 包

】将随机森林变成决策树-在R中使用randomForest包【英文标题】:TurningaRandomForestintoaDecisionTree-UsingrandomForestpackageinR【发布时间】:2014-06-1423:48:48【问题描述】:是否可以生成树完全相同的决策森林?请注意,这是一个实验性问题... 查看详情

决策树随机森林adaboost

?熵、互信息?决策树学习算法  ?信息增益  ?ID3、C4.5、CART?Bagging与随机森林?提升  ?Adaboost/GDBT ?熵、互信息  熵是对平均不确定性的度量。  平均互信息:得知特征Y的信息而使得对标签X的信息的不确定性减少的程... 查看详情

如何更改随机森林用于从单个树做出决策的函数?

】如何更改随机森林用于从单个树做出决策的函数?【英文标题】:Howtochangethefunctionarandomforestusestomakedecisionsfromindividualtrees?【发布时间】:2015-09-0323:33:42【问题描述】:随机森林在训练时使用\'大量决策树并输出作为单个树的... 查看详情

随机森林(分类与回归)

...的前提下提高了预测精度。 1、简介随机森林由多棵决策树构成,且森林中的每一棵决策树之间没有关联,模型的最终输出由森林中的每一棵决策树共同决定。处理分类问题时,对于测试样本,森林中每棵决策树会给出最终... 查看详情

随机森林

...机森林就是用随机的方式建立一个森林,在森林里有很多决策树组成,并且每一棵决策树之间是没有关联的。当有一个新样本的时候,我们让森林的每一棵决策树分别进行判断,看看这个样本属于哪一类,然后用投票的方式,哪... 查看详情

决策树与随机森林

决策树简介决策树算法以树状结构表示数据分类的结果。每个决策点实现一个具有离散输出的测试函数,记为分支。f(x)=根结点非叶子节点(决策点)叶子节点分支f(x)=\\left\\\\beginaligned根结点\\\\非叶子节点(... 查看详情

决策树随机森林gbdtxgboost

(本节课各种数学式子比较多。。。。。^_^)决策树DecisionTree?介绍?熵Entropy?信息增益InformationGain?常见算法?过度拟合Overfitting?剪枝Prune?增益率GainRatio?更多的DT应?场景类别:?连续函数,多分类,回归?决策树的究极进化Ensemble?Baggin... 查看详情

决策树与随机森林算法

决策树决策树模型是一种树形结构,基于特征对实例进行分类或回归的过程。即根据某个特征把数据分划分到若干个子区域(子树),再对子区域递归划分,直到满足某个条件则停止划分并作为叶子节点,不满足条件则继续递归划... 查看详情

随机森林和决策树调参

...每次抽N个),每个单独的数据集都用来训练一颗单独的决策树T选取特征进行分裂的时候,随机选取k个特征(k是一个小于所有特征总数P的值),进行分裂选取k值的时候,发明随机森林的人推荐 查看详情

初始决策树与随机森林(代码片段)

...mForest包来建立预测模型。首先,我们将使用party包来建立决策树,并用决策树用于分类。其次,利用randomForest包来训练随机森林模型。最后学习使用rpart包来建立决策树。所使用的数据集为R中自带的iris数据集 使用party包来建... 查看详情

决策树和随机森林(代码片段)

作者|PRATEEKJOSHI编译|VK来源|AnalyticsVidhya决策树与随机森林的简单类比让我们从一个思维实验开始,它将说明决策树和随机森林模型之间的区别。假设银行必须为客户批准一笔小额贷款,而银行需要迅速做出决定。银行检查此人的... 查看详情

spark随机森林算法案例实战

随机森林算法由多个决策树构成的森林,算法分类结果由这些决策树投票得到,决策树在生成的过程当中分别在行方向和列方向上添加随机过程,行方向上构建决策树时采用放回抽样(bootstraping)得到训练数据,列方向上采用无... 查看详情

随机森林为啥不会过度拟合

...拟合,无论你怎么增加树都不行。------------------随机森林决策树主要流行的算法有ID3算法,C4.5算法、CART算法,主要花费时间在建决策树和剪枝过程中,但一旦建成决策树,由于他是树形结构能够直观的显示出模型,而且在后期... 查看详情