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

【问题思考总结】CART树如何剪枝?从CART树的生成到剪枝以及为什么CTt一定小于Ct?【图文】

问题

今天在看统计学习方法中的CART剪枝部分时,感觉有很多不懂得地方,貌似是从之前决策树得生成开始积攒的问题攒到现在了,于是准备在这里好好梳理一下。

我的问题主要就是:
为什么这里CTt一定小于Ct?也就是说,为什么子结点没有子树的总基尼指数小?

思考

我想,首先要从决策树的生成开始想起,在最开始,决策树从根节点向下构建,有一个很重要的因素就是(也是我之前忽略的,我没证明过),决策树在构建的过程中,每次结点的分裂都指向基尼系数的减少。 也就是说,每次分裂出一个新的子树,基尼系数都会减小,最后生成的树就是基尼系数最小的树。

那么,因为我现在的树是基尼系数最小的树,于是,不管是剪去任意一个结点,我一定基尼系数是比之前要更大的(原因很简单,他们都是一步一步生成的,而每一次生成都是减少基尼指数的过程。

由此,就可以解决我们之前的问题,为什么CTt一定小于Ct?

至此,完成一大步,之后就好办了。

p.s 我认为很可能是搞混了Gini(D)和Gini(D,A)(因为后者在树上是等于两个子树的基尼系数,我就有点懵懵的。。。)

然后我又想到,万一Gini(D)小于后面这一项怎么办,但是查询得基于凸函数的性质,不会有问题。。。看来还是要多看看数学啊!真累!保持学术的纯粹性真累!我也25了,纯粹的求知还能有多久?希望可以永葆初心!至少在求真这方面,不要变,是什么就是什么,学术马虎不得!
在这里插入图片描述

总结

我想的太多了,总的来说!这里生成算法和剪枝算法都是一样的,生成的时候是一个基尼系数递减的过程,剪枝的时候是基尼系数递增的过程,但是因为有了α的存在,针对于不同的α,生成的树是不同的,对应了不同的对模型复杂度的重视程度。我现在知道的大概就是这些!

我觉得这样的说法是大概正确的,在我的认知里,如果里面哪里有错误,恳请不吝赐教!另外,这里也都是没有严格证明的,只是看结果似乎是这样的,经过大模型和观看自己视频的自己的思考,希望能给大家提供一些灵感,有一些帮助,将是我心甚慰,这也是做这个博客一直以来的初衷,希望能发现真实的问题,并且解决问题,帮到像我一样认真求索的人,真心话!希望能帮人帮己,真心相对。说多了!如果哪里有不对的地方恳请指正!共同进步!干就完了!


当日更新

可以看到Gini(D)是0.48,而下面依据特征划分的基尼系数均小于Gini(D)。2p(1-p)的公式感觉也有点误导。。。

我想,Gini(D,A)应该是小于等于Gini(D)的。

参考资料

[1] https://www.youtube.com/watch?v=D0efHEJsfHo
[2] https://www.youtube.com/watch?v=_L39rN6gz7Y&t=196s

http://www.lryc.cn/news/607355.html

相关文章:

  • 在多租户或多服务共享 Redis 时,如何做逻辑隔离或权限控制?
  • 【数据结构】-----排序的艺术画卷
  • ESD监控系统确保工厂生产设备的静电安全
  • 浏览器【详解】内置Observer(共五种,用于前端监控、图片懒加载、无限滚动、响应式布局、生成安全报告等)
  • cesium FBO(四)自定义相机渲染到Canvas(离屏渲染)
  • 开源工具FossFLOW,绘制技术图表
  • 嵌入式GPU图像渲染工具全景实用指南(i.MX8MP平台)
  • Python深度解析与爬虫进阶:从理论到企业级实践
  • ubuntu 镜像克隆
  • Git 实现原理剖析
  • 【编号394】阿姆河流域土地利用分布数据(1990-2015)
  • 智能问数系统的调研
  • 【工具分享】模拟接口请求响应的Chrome插件ModResponse
  • 什么是doris
  • 第七章 愿景12 小萍分享《人性的弱点》
  • 软件性能优化:善用80-20法则,精准突破瓶颈
  • grafana/lock-stack 日志 Pipeline 配置
  • 前端渲染三国杀:SSR、SPA、SSG
  • npm报错:npm install 出现“npm WARN old lockfile”
  • 工程化(二):为什么你的下一个项目应该使用Monorepo?(pnpm / Lerna实战)
  • R 语言文件读写、批量读取与图片保存实用代码汇总
  • 逻辑回归参数调优实战指南
  • 【Linux系列】Vim 中删除当前单词
  • Master Prompt:AI时代的万能协作引擎
  • 法国彩虹重磅发布EmVue:解锁能源监控新方式
  • 使用 Trea cn 设计 爬虫程序 so esay
  • 【Jetson orin-nx】使用Tensorrt并发推理四个Yolo模型 (python版)
  • Git 各场景使用方法总结
  • JVM、JDK、JRE的区别
  • 如何快速给PDF加书签--保姆级教程