热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

决策树算法简单总结

来自:https:mp.weixin.qq.comstevVm0jlS6vZ3LCnczWD0w前言李航老师《统计学习方法》详细的描述了决策树的生成和剪枝。根据书的内

·来自:https://mp.weixin.qq.com/s/tevVm0jlS6vZ3LCnczWD0w

前言

李航老师《统计学习方法》详细的描述了决策树的生成和剪枝。根据书的内容,做总结如下。

 

目录

  1. 决策树不确定性的度量方法
  2. 决策树的特征筛选准则
  3. 决策函数的损失函数评估
  4. 决策树最优模型的构建步骤
  5. 决策树的优缺点分析

 

a. 决策树不确定性的度量方法

 

1. 不确定性理解

下图为事件A是否发生的概率分布,事件发生记为1,讨论事件A的不确定性。

 

(1)一种极端情况,若p=1或p=0,表示为事件A必定发生或事件A不可能发生。

&#xff08;2&#xff09;若p>1/2&#xff0c;即事件A发生的概率大于事件A不发生的概率&#xff0c;我们倾向于预测事件A是发生的&#xff1b;若 p<1/2&#xff0c;即事件A不发生的概率小于事件A发生的概率&#xff0c;我们倾向于预测事件A是不发生的&#xff1b;若 p&#61;1/2&#xff0c;即事件A发生的概率等于事件A不发生的概率&#xff0c;我们无法作出预测。

 

2. 决策树不确定性的度量方法

这里用熵和基尼指数去衡量数据集的不确定性&#xff0c;假设数据集包含K类&#xff0c;每个类的大小和比例分别为Di和pi&#xff0c;i &#61; 1&#xff0c;2&#xff0c;...&#xff0c;k。

&#xff08;1&#xff09;熵的不确定性度量方法

信息论和概率统计中&#xff0c;熵是表示随机变量不确定性的度量&#xff0c;令熵为H(p)&#xff0c;则&#xff1a;

熵越大&#xff0c;数据集的不确定性就越大。

&#xff08;2&#xff09;基尼指数的不确定度量方法

数据集的基尼指数定义为&#xff1a;

基尼指数越大&#xff0c;数据集不确定性越大。

 

b. 决策树特征筛选准则

 

假设数据集A共有K个特征&#xff0c;记为xi&#xff0c;i &#61; 1,2,...,K。数据集A的不确定性越大&#xff0c;则数据集A包含的信息越多。假设数据集A的信息为H(A)&#xff0c;经过特征xi筛选后的信息为H(A|xi)&#xff0c;定义信息增益g(A, xi)为两者的差值&#xff0c;即&#xff1a;

g(A, xi) &#61; H(A) - H(A|xi)

选择使数据集A信息增益最大的特征作为决策树当前节点&#xff0c;数学表示为&#xff1a;

x &#61; max( g(A,xi) ) &#61; max( H(A) - H(A|xi) )

 

C. 决策树的损失函数评估

 

令决策树的叶节点数为T&#xff0c;损失函数为&#xff1a;

其中C(T)为决策树的训练误差&#xff0c;决策树模型用不确定性表示&#xff0c;不确定性越大&#xff0c;则训练误差亦越大。T表示决策树的复杂度惩罚&#xff0c;α参数权衡训练数据的训练误差与模型复杂度的关系&#xff0c;意义相当于正则化参数。

考虑极端情况&#xff1a;当α趋于0的时候&#xff0c;最优决策树模型的训练误差接近 0&#xff0c;模型处于过拟合&#xff1b;当α趋于无穷大的时候&#xff0c;最优决策树模型是由根节点组成的单节点树。

 

d. 决策树最优模型的构建步骤

 

将数据集A通过一定的比例划分为训练集和测试集。

决策树的损失函数&#xff1a;

决策树最优模型的构建步骤包括训练阶段和测试阶段&#xff1a;

训练阶段&#xff1a;

&#xff08;1&#xff09;最小化决策树的不确定性值得到的生成模型&#xff0c;即决策树生成&#xff1b;

&#xff08;2&#xff09;通过决策树剪枝&#xff0c;得到不同的正则化参数α下的最优决策树模型&#xff0c;即决策树剪枝

 下面重点讨论训练阶段的决策树生成步骤和决策树剪枝步骤。

决策树生成步骤&#xff1a;

&#xff08;1&#xff09; 根据决策树的特征筛选准则&#xff0c;选择数据集信息增益最大的特征&#xff1b;

&#xff08;2&#xff09; 重复第一个步骤&#xff0c;直到所有叶节点的不确定性为0 。

决策树剪枝步骤&#xff1a;

&#xff08;1&#xff09;将正则化参数α从小到大分成不同的区间

 

 

e. 决策树优缺点

优点&#xff1a;模型很强的解释性

缺点&#xff1a;容易过拟合。即训练误差很小&#xff0c;测试误差很大。为避免过拟合&#xff0c;使用时结合集成算法。如&#xff1a;bagging算法、boosting算法。

 

转:https://www.cnblogs.com/keye/p/10229290.html



推荐阅读
  • 使用Numpy实现无外部库依赖的双线性插值图像缩放
    本文介绍如何仅使用Numpy库,通过双线性插值方法实现图像的高效缩放,避免了对OpenCV等图像处理库的依赖。文中详细解释了算法原理,并提供了完整的代码示例。 ... [详细]
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • 本文深入探讨 MyBatis 中动态 SQL 的使用方法,包括 if/where、trim 自定义字符串截取规则、choose 分支选择、封装查询和修改条件的 where/set 标签、批量处理的 foreach 标签以及内置参数和 bind 的用法。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 网络攻防实战:从HTTP到HTTPS的演变
    本文通过一系列日记记录了从发现漏洞到逐步加强安全措施的过程,探讨了如何应对网络攻击并最终实现全面的安全防护。 ... [详细]
  • 深入解析JMeter中的JSON提取器及其应用
    本文详细介绍了如何在JMeter中使用JSON提取器来获取和处理API响应中的数据。特别是在需要将一个接口返回的数据作为下一个接口的输入时,JSON提取器是一个非常有用的工具。 ... [详细]
  • 本文介绍了一段使用jQuery实现的用户注册页面表单验证代码,适用于前端开发人员学习和参考。该示例结合了HTML、CSS和JavaScript,确保用户输入的数据格式正确。 ... [详细]
  • 探索电路与系统的起源与发展
    本文回顾了电路与系统的发展历程,从电的早期发现到现代电子器件的应用。文章不仅涵盖了基础理论和关键发明,还探讨了这一学科对计算机、人工智能及物联网等领域的深远影响。 ... [详细]
  • PHP 过滤器详解
    本文深入探讨了 PHP 中的过滤器机制,包括常见的 $_SERVER 变量、filter_has_var() 函数、filter_id() 函数、filter_input() 函数及其数组形式、filter_list() 函数以及 filter_var() 和其数组形式。同时,详细介绍了各种过滤器的用途和用法。 ... [详细]
  • PyCharm下载与安装指南
    本文详细介绍如何从官方渠道下载并安装PyCharm集成开发环境(IDE),涵盖Windows、macOS和Linux系统,同时提供详细的安装步骤及配置建议。 ... [详细]
  • 本文探讨了如何像程序员一样思考,强调了将复杂问题分解为更小模块的重要性,并讨论了如何通过妥善管理和复用已有代码来提高编程效率。 ... [详细]
  • python的交互模式怎么输出名文汉字[python常见问题]
    在命令行模式下敲命令python,就看到类似如下的一堆文本输出,然后就进入到Python交互模式,它的提示符是>>>,此时我们可以使用print() ... [详细]
  • 火星商店问题:线段树分治与持久化Trie树的应用
    本题涉及编号为1至n的火星商店,每个商店有一个永久商品价值v。操作包括每天在指定商店增加一个新商品,以及查询某段时间内某些商店中所有商品(含永久商品)与给定密码值的最大异或结果。通过线段树分治和持久化Trie树来高效解决此问题。 ... [详细]
  • Java 中的 BigDecimal pow()方法,示例 ... [详细]
  • 本文总结了汇编语言中第五至第八章的关键知识点,涵盖间接寻址、指令格式、安全编程空间、逻辑运算指令及数据重复定义等内容。通过详细解析这些内容,帮助读者更好地理解和应用汇编语言的高级特性。 ... [详细]
author-avatar
知心friend2007
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有