当前位置: 首页 > news >正文

【机器学习】决策树算法理论:算法原理、信息熵、信息增益、预剪枝、后剪枝、算法选择

1. 决策树概念

通过不断的划分条件来进行分类,决策树最关键的是找出那些对结果影响最大的条件,放到前面

我举个列子来帮助大家理解,我现在给我女儿介绍了一个相亲对象,她根据下面这张决策树图来进行选择。比如年龄是女儿择偶更看中的,那就该把年龄这个因素放在最前面,这样可以节省查找次数。收入高的话就去见,中等的话还要考虑工作怎么样。

       决策树通过历史数据,找出数据集中对结果影响最大的特征,再找第二个影响最大的特征。若新来一个数,只要根据我们已经建立起的决策树进行归类即可。


2. 决策树的信息熵

        用来表示随机数据不确定性的度量,信息熵越大,表示这组数据越不稳定,而信息熵越小,则数据越稳定、越接近、越类似。

        信息熵公式:  H(x)=ni=1P(i)logP(i)2 代表某一个特征中每一个值出现的概率

上个例子中的年龄的基尼系数是:Gini(年龄) = 1 – (5/15)^2 - (5/15)^2 - (5/15)^2

在建立决策树时,基尼系数越小的,就把它放在最前面


5. 预剪枝和后剪枝

        树的层级和叶子节点不能过于复杂,如果过于复杂,会导致过拟合现象(过拟合:训练时得分很高,测试时得分很低)。预剪枝和后剪枝都是为了防止决策树太复杂的手段

5.1 预剪枝

        在决策树的建立过程中不断调节来达到最优,可以调节的条件有:

(1)树的深度:在决策树建立过程中,发现深度超过指定的值,那么就不再分了。

(2)叶子节点个数:在决策树建立过程中,发现叶子节点个数超过指定的值,那么就不再分了。

(3)叶子节点样本数:如果某个叶子结点的个数已经低于指定的值,那么就不再分了。

(4)信息增益量或Gini系数:计算信息增益量或Gini系数,如果小于指定的值,那就不再分了。

优点:预剪枝可以有效降低过拟合现象,在决策树建立过程中进行调节,因此显著减少了训练时间和测试时间;预剪枝效率比后剪枝高

缺点:预剪枝是通过限制一些建树的条件来实现的,这种方式容易导致欠拟合现象:模型训练的不够好。

5.2 后剪枝

在决策树建立完成之后再进行的,根据以下公式:

C = gini(或信息增益)*sample(样本数) + a*叶子节点个数

C表示损失,C越大,损失越多。通过剪枝前后的损失对比,选择损失小的值,考虑是否剪枝。

a是自己调节的,a越大,叶子节点个数越多,损失越大。因此a值越大,偏向于叶子节点少的,a越小,偏向于叶子节点多的。

优点:通常比预剪枝保留更多的分支,因此欠拟合风险比预剪枝要小。

缺点:但因为后剪枝是再数建立完成之后再自底向上对所有非叶子节点进行注意考察,因此训练时间开销比预剪枝要大。

相关文章:

  • Matlab自学笔记二十四:字符串的关系运算和比较
  • 软件测试面试-如何定位线上出现bug
  • C++ 多线程使用
  • Java学习之路 —— IO、特殊文件
  • SpringBoot请求参数与响应返回值,ResponseEntity<T>自定义响应
  • (二)什么是Vite——Vite 和 Webpack 区别(冷启动)
  • Postman+Newman+Jenkins实现接口测试持续集成
  • C#中.NET 7.0 Windows窗体应用通过EF访问新建数据库
  • Java NIO 详解
  • 蓝牙耳机仓设计的单芯片解决方案
  • C++中tuple数据结构使用
  • 编译中的 CMP0148 警告
  • 基于STC12C5A60S2系列1T 8051单片机的数模芯片DAC0832实现数模转换应用
  • Python---函数的作用,定义,使用步骤(调用步骤)
  • 《C++避坑神器·二十二》VS能正常运行程序,但运行exe程序无响应解决办法
  • Spring条件注解@Conditoinal+ Profile环境切换应用@Profile
  • SQL之开窗函数
  • Git常用操作-MD
  • 基于pytest-bdd的项目目录结构和命名规范
  • Jmeter 性能测试基础!
  • 龚正市长调研闵行区,更加奋发有为地稳增长促转型,久久为功增强发展后劲
  • 中国人民银行等四部门联合召开科技金融工作交流推进会
  • 泽连斯基抵达安卡拉,称乌将派出最高级别代表团参与谈判
  • 张汝伦:康德和种族主义
  • 腾讯一季度净利增14%:AI直接拉动广告收入增长,王者荣耀流水创新高
  • 美国调整对华加征关税