然后开始计算下一个节点属性划分后的信息增益,先以“色泽”为例,对“色泽”的每一个属性值计算信息熵,然后各个属性值加权平均得到划分后的信息熵:

按此思路计算当前节点所有属性的信息增益并比较,选择增益最大的作为当前节点的划分属性

缺点:信息增益会倾向于选择取值范围大的属性,比如把编号作为属性,只有一层就可以全部分类,

上面这一步如果采用编号划分,划分后的熵就变成0了,每一个属性划分后都是十分确定的,只有一个种类。

2. 信息增益率 C4.5

信息增益率基于信息增益进行优化,避免偏好于属性值较多的属性。

主要做法就是对属性的离散度也计算一个熵,用信息增益除以这个熵。

这样信息增益就起到一定的抑制,但是会大大增加了计算,效率下降。

所以通常先计算信息增益,从信息增益较大的前一个或者是高于平均水平的,再计算信息增益率,选择最高的

3. 基尼指数 CART (classification and regression tree)

下面是基尼指数的计算公式,需要满足 k =1 K pk =1

基尼指数越小,数据集的纯度越高。

对当前节点的每一个属性划分后的小份计算基尼指数,然后加权平均

选择是划分后基尼指数最小的属性作为当前节点划分属性。

再补充一点,单个节点如果特征值是连续值,比如年龄,如何对连续值进行划分是一个问题,

当然如果提前做了更合理的手工特征工程那就没有这个问题了,

关于连续值离散化的作用可以参考我的另一篇 https://blog.csdn.net/weixin_42175217/article/details/105139056

如果在决策树想要直接输入连续值呢?上面讲的都是在不同特征间选择,那么对于连续值的特征,

首先要确定该特征如何离散化才能计算出该节点的gini指数,才能横向比较。

这一步的一般方式:

  • 首先对这个连续变量排序。比如年龄,把所有样本中年龄的数值从小到大排序。
  • 在数据没有重复的假设下,如果有n个样本,那么排序后的数据之间应该有n-1个间隔。
  • 决策树会对这n-1个间隔进行逐一尝试(分叉),每一个不同的分叉,会带来不同的gini指数,然后选择

gini指数最小的那个分叉作为最优分叉,也就是阈值。

对于决策树来说,过拟合通常就是每一个样本都落在单独的叶子节点,决策树把训练数据给背下来了

在决策树中抑制过拟合的方法就是剪枝

剪掉一些不必要的分支来降低过拟合风险,通常有预剪枝与后剪枝两种

顾名思义,提前终止某些分支的生长。

  1. 可以预设树的高度,当决策树的高度达到预设值之后,停止继续构建
  2. 设定叶子阈值,当叶子节点里的实例数量小于阈值时,停止
  3. 设定增益阈值,当当前节点最大信息增益小于阈值,则停止

速度快,计算量小

视线短浅,比如一棵完整的决策树有层, A->B->C->D->E. 从B->C的过程中模型几乎没有什么提升,但是从C->D过程中准确度提升明显,这种情况使用预剪枝,会使模型提前终止

欠拟合风险增加

即生成一棵完全树,再回过头来剪枝。

常见方法是错误率降低剪枝,对所有非叶子节点进行剪枝计算,如果剪枝后再验证集上错误率有下降,那么就剪掉这一节点

效果一般优于预剪枝

数据量少时容易过度剪枝,某些在训练集中有的特征,验证集中不存在,出现过拟合

开局一张图总体流程: 自根至叶的递归过程 在每一个中间节点寻找一个划分属性终止条件: 当前节点包含的样本全属于同一类别,无需划分 当前属性集为空,或者所有样本在所有属性上取值相同,无法划分 当前节点包含的样本集合为空,不能划分本文以周志华老师的西瓜书中的西瓜筛选作为案例那么重点就在于如何选择每一个中间节点的划分属性了。...
决策树 剪枝 什么是 决策树 剪枝 ?为什么要 剪枝 剪枝 策略的 分类 剪枝 优缺点后 剪枝 剪枝 算法的 分类 优缺点奥卡姆剃刀定律预告andTODOReference 什么是 决策树 剪枝 ? 对比日常生活中,环卫工人在大街上给生长茂密的 进行枝叶的修剪。在机器学习的 决策树 算法中,有对应的 剪枝 算法。将比较复杂的 决策树 ,化简为较为简单的版本,并且不损失算法的性能。 为什么要 剪枝 剪枝 决策树 算法防止过拟合的一种手段,...
剪枝 (pruning)是 决策树 学习算法对付“过拟合”的主要手段。 决策树 剪枝 的基本策略有“预 剪枝 ”(prepruning)和“后 剪枝 ”(postpruning)。 预 剪枝 是指在 决策树 生成过程中,对每个结点在划分前先进行估计,若当前结点得划分不能带来 决策树 泛化性能提升,则停止划分并将当前结点标记为叶结点 后 剪枝 则是先从训练集生成一棵完整的 决策树 ,然后自底向上地对非叶结点进行考察,若将该结点对应的子 替换为叶结点能带来 决策树 泛化性能提升,则将该子 替换为叶结点。
1. 决策树 决策树 可以用于 分类 和回归的应用里面,这里讨论的 决策树 是一个二叉 的形式,我们可以用伪代码的方式去表达出来: 决策树 就是一个 if-then 的集合,也可以认为是定义在特征空间与类空间上的条件概率分布。利用训练数据,根据损失函数最小化的原则建立 决策树 模型,其中包括:特征选择, 决策树 的生成, 决策树 剪枝 三个步骤。 下面讨论的都是 分类 决策树 ,除了CART 会讨论到回归 1.1.1 决策树 模型 定义: 决策树 由结点和有向边组成,其中,结点由内部节点...
决策树 是一种有监督的 分类 和预测方法,以 状图为基础。就是一系列的if-then语句。既可以用于 分类 问题也可以用于回归问题。 损失函数最小化原则 决策树 原理:在特征空间上执行递归的二元分割,由节点和有向边组成。根节点是所有样本的集合。内部节点表示一个特征或者属性(比如天气,体重等等),叶子节点表示一个 分类 (看电影,去运动等)。 在叶子节点Si处有Ni个样本点,但是整个单元都属于Ck类,看那个 分类 占优...
本篇是 决策树 系列的第二篇,介绍一下 决策树 剪枝 过程。过拟合是 决策树 构建 过程中常见的问题,信息失衡、噪声等问题都会导致过拟合, 剪枝 则是提高 决策树 模型泛化能力的重要手段,下面对常用的 剪枝 方法作一些介绍。 1.预 剪枝 决策树 系列第一篇《 分类 决策树 —— 的生长》中提到过, 的生长是一种“完全”式的生长,终止条件也仅有“所有的样本属于同一类,或者所有的样本具有相同的属性值”...
决策树 算法是一种逼近离散函数值的方法。它是一种典型的 分类 方法,首先对数据进行处理,利用归纳算法生成可读的规则和 决策树 ,然后使用决策对新数据进行分析。 决策树 算法的核心思想就是通过不断地决策来筛选出最终想要的结果,来看下面一个例子: 上图是一个女孩相亲中确定见不见男方的过程,她先根据年龄筛选,年龄大于30 的不见,小于30的看长相;长相丑的不见,不丑的见……
决策树 概述 决策树 是一种典型的 分类 方法 ,首先对数据进行处理,利用归纳算法生成可读的规则和 决策树 ,然后使用决策对新数据进行分析。本质上 决策树 是通过一系列规则对数据进行 分类 的过程。 决策树 的优点 1、推理过程容易理解,决策推理过程可以表示成If Then 形式; 2、推理过程完全依赖于属性变量的取值特点; 3、可自动忽略目标变量没有贡献的属性变量,也为判断属性变量的重要性,减少变量的数目提供参考。 CSDN-Ada助手: 非常感谢您分享离线迁移conda的python环境的经验,这篇博客对于想要私有化安装的用户来说非常有用。我觉得下一篇博客可以从如何管理conda环境入手,例如如何备份和恢复环境、如何分享环境等等。这样的技术文章对于其他用户也会非常有帮助,期待您的下一篇博客,相信会有更多读者受益。 为了方便博主创作,提高生产力,CSDN上线了AI写作助手功能,就在创作编辑器右侧哦~(https://mp.csdn.net/edit?utm_source=blog_comment_recall )诚邀您来加入测评,到此(https://activity.csdn.net/creatActivity?id=10450&utm_source=blog_comment_recall)发布测评文章即可获得「话题勋章」,同时还有机会拿定制奖牌。 隐马尔可夫模型最详细讲解 HMM(Hidden Markov Model) WCHYQ: 万分感谢!!! tensorflow 2.0 自定义训练 CyrilSterling: 问题解决了吗 我是多个输入一个输出 没法直接调用model.ft里的acc表示准确度,这该怎么办啊 表情包 tensorflow 2.0 自定义训练 CyrilSterling: 问题解决了吗 我是多个输入一个输出 没法直接调用model.ft里的acc表示准确度,这该怎么办啊 表情包 tensorflow 2.0 自定义训练 CyrilSterling: 问题解决了吗 我是多个输入一个输出 没法直接调用model.ft里的acc表示准确度,这该怎么办啊 表情包