- 决策树分类
1.Hunt算法:许多决策树算法的基础 包括ID3、C4.5和CART
通过将训练记录相继划分成较纯的子集,以递归方式建立决策树。
(其实就是通过属性来递归区别,重点是在如何选择属性,如何停止)
- 选择最佳划分的度量
决策树归纳算法必须为不同类型的属性提供表示属性测试条件和其对应输出的方法。
二元属性,标称属性,序数属性,连续属性。
1.决策树归纳算法
决策树是一个类似于流程图的树结构;其中,每个内部结点表示在一个属性上的测试,每个分枝代表一个测试输出,而每个树叶结点代表类或类分布。树的最顶层结点是根结点。一棵典型的判定树如下图。这是一个用于预测不同的天气条件下比赛是否能如期举行。
ID3算法
下面是著名的ID3算法的伪代码:
Generate_decision_tree(samples,attribute_list)
{
创建结点 N;
if samples 都在同一个类C then
return N 作为叶结点,以类C标记;
if attribut_list 为空 then
return N 作为叶结点,标记为samples中最普通的类;
选择attribute_list中具有最高信息增益的属性test_attribute
标记结点 N 为test_attribute
for each test_attribute 中的未知值ai :
{
由结点 N 长出一个条件为 test_attribute = ai的分枝;
设si 是samples 中test_attribute = ai的样本的集合;
if si 为空 then
加上一个树叶,标记为 samples中最普通的类;
else{
加上一个由 Generate_decision_tree(si, attribute_list–test_attribute)返回的 结点(子树);
}
}
}
可以看到,决策树生成算法一个重要的工作就是选择当前信息增益最大的属性对决策树进行分裂,并根据该属性可能的取值建立对应的分支。
这里的信息增益是涉及了信息论中信息熵的概念。信息熵是表示一个事件的不确定性的大小,不确定性越大那么该事件包含的信息熵就越大,如果一个事件完全确定了,那么它所包含的信息熵就是0。信息熵的计算公式如下,其中表示该事件最终结果为的概率。
信息增益就是分裂前的信息熵–分裂后的信息熵,信息增益越大就表示分裂过程中所释放的信息量就越大。
比如决策表的信息如下表:
NO. |
Outlook |
Temperature |
Windy |
Humidity |
Play? |
1 |
sunny |
hot |
false |
high |
No |
2 |
sunny |
hot |
true |
high |
No |
3 |
overcast |
hot |
false |
high |
Yes |
4 |
rain |
mild |
false |
high |
Yes |
5 |
rain |
cool |
false |
normal |
Yes |
6 |
rain |
cool |
true |
normal |
No |
7 |
overcast |
cool |
true |
normal |
Yes |
8 |
sunny |
mild |
false |
high |
No |
9 |
sunny |
cool |
false |
normal |
Yes |
10 |
rain |
mild |
false |
normal |
Yes |
11 |
sunny |
mild |
true |
normal |
Yes |
12 |
overcast |
mild |
true |
high |
Yes |
13 |
overcast |
hot |
false |
normal |
Yes |
14 |
rain |
mild |
true |
high |
No |
我们计算在决策树根节点处计算属性“Outlook”的信息增益。计算过程如下:
分裂前的信息熵= -p(noplay)log p(noplay)-p(play)log p(play)
= info([9,5]) = -(9/14)log(9/14)-(5/14)log(5/14)
=0.940 bits
= info([2,3]) + info([4,0]) + info([3,2])
=0.693 bits
“Outlook”的信息增益 gain(“Outlook”) = 0.940 - 0.693 = 0.247bits
用同样的方法可以计算得到在根节点处:
gain(“Temperature”) = 0.029 bits
gain(“Windy”) = 0.048bits
gain(“Humidity”) = 0.152 bits
可见在根节点处“Outlook”属性的信息增益最大,我们就选择“Outlook”作为根节点处的分裂属性。“Outlook”把决策树在根节点 处分成了3个分支,每一个分支也都对应了一个子决策信息表,按照同样的方法建立子树。比如:“sunny”的那个分支对应的子决策表就是:
NO. |
Temperature |
Windy |
Humidity |
Play? |
1 |
hot |
false |
high |
No |
2 |
hot |
true |
high |
No |
8 |
mild |
false |
high |
No |
9 |
cool |
false |
normal |
Yes |
11 |
mild |
true |
normal |
Yes |
这样依次递归建立决策子树,直到分裂属性为空或者学习样本为空或者所有的节点都属于同一类。
C4.5算法
本质上C4.5算法只能算是ID3算法的改进版本。C4.5对ID3的改进如下:
1、 改善ID3算法的归纳偏置问题
2、 可处理连续数值型属性的离散化问题
3、 对决策树采取后剪枝。
4、 可处理样本的属性值确实问题
归纳偏置问题
所有的学习器在学习的时候都是有偏见。ID3算法的偏见是信息熵理论胎里带的,它更偏向于属性值多的那些属性,这样的树分支多而且树比较短。这样可能带来的问题是样本被过早的分散到多个分支中,导致样本在下一级的训练中训练不足。
C4.5改善ID3的归纳偏置问题的方法是引入了信息增益率:
其中Gain就是ID3算法中的信息增益,SplitInfo是分裂信息,表示属性值的广度和均匀性。分类信息的定义如下:
还是以根节点处得“Outlook”属性为例进行说明,其分裂信息为:
SplitInfo(“Outlook”)= -(5/14)log(5/14)-(5/14)log(5/14)- (4/14)log(4/14)。
连续数值型属性的离散化
C4.5既可以处理离散型描述属性,也可以处理连续性描述属性。在选择某节点上的分枝属性时,对于离散型描述属性,C4.5的处理方法与ID3相同,对于连续数值型属性,处理方式如下:
1、 将该结点上的所有数据样本按照连续型描述属性的具体数值,由小到大进行排序,得到属性值的取值序列(A1,A2……An)。
2、 生成属性值的若干个划分点,每个划分点都可以把属性值集合分成两个域。一个比较简单的划分方法就是取n-1个划分点,划分点Vi=(Ai + Ai+1)/2
3、 分别计算按照每个划分点划分得到的信息增益或者增益率,把信息增益或者信息增益率最大的那个划分点最为连续数值型属性的离散化划分点。
采用了一种后剪枝方法
避免树的高度无节制的增长,避免过度拟合数据,该方法使用训练样本集本身来估计剪枝前后的误差,从而决定是否真正剪枝。方法中使用的公式如下:
其中N是实例的数量,f=E/N为观察到的误差率(其中E为N个实例中分类错误的个数),q为真实的误差率,c为置信度(C4.5算法的一个输入参 数,默认值为0.25),z为对应于置信度c的标准差,其值可根据c的设定值通过查正态分布表得到。通过该公式即可计算出真实误差率q的一个置信度上限, 用此上限为该节点误差率e做一个悲观的估计:
通过判断剪枝前后e的大小,从而决定是否需要剪枝。
对于缺失值的处理
在某些情况下,可供使用的数据可能缺少某些属性的值。假如〈x,c(x)〉是样本集S中的一个训练实例,但是其 属性A的值A(x)未知。处理缺少属性值的一种策略是赋给它结点n所对应的训练实例中该属性的最常见值;另外一种更复杂的策略是为A的每个可能值赋予一个 概率。例如,给定一个布尔属性A,如果结点n包含6个已知A=1和4个A=0的实例,那么A(x)=1的概率是0.6,而A(x)=0的概率是0.4。于 是,实例x的60%被分配到A=1的分支,40%被分配到另一个分支。这些片断样例(fractional examples)的目的是计算信息增益,另外,如果有第二个缺少值的属性必须被测试,这些样例可以在后继的树分支中被进一步细分。C4.5就是使用这种 方法处理缺少的属性值。
相关推荐
5. 数据挖掘技术:常见的数据挖掘技术包括决策树、贝叶斯网络、支持向量机、聚类算法如K-means和DBSCAN,以及关联规则算法如Apriori。这些技术各有优缺点,适用于不同的数据特性和问题场景。 6. 数据挖掘的应用领域...
常见的分类算法有决策树、随机森林、支持向量机等,预测则常用线性回归、时间序列分析等。 5. **演化分析**:关注数据随时间的变化,用于发现趋势、周期性和突变,常用于市场趋势分析、用户行为研究等。 **智能...
Apriori是一种常用的关联规则挖掘算法,广泛应用于数据挖掘、机器学习等领域。该算法的主要思想是通过找到频繁项集来挖掘关联规则。Apriori的优点是可以处理高维空间中的数据,且具有良好的泛化能力。 机器学习十大...
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、本项目仅用作交流学习参考,请切勿用于商业用途。
DATA: 可供参考的微博评论数据。 详见 /DATA/weibocommennts.csv CODE: apiGetSheet.py 调用百度API 获得 微博评论对应 文字的 情感得分, sheetGetvalue.py 根据情感得分进行标准化,获得实际倾向。
管理员 管理员信息管理 负责人管理 员工信息管理 公告信息管理 小型车收费标准设置(元/每公里) 大卡车收费标准设置(元/吨公里) 收费信息统计,统计小车和卡车收费,按月统计 负责人 个人资料修改 公告查看 小车收费统计(某员工某月统计) 大卡车收费统计(某员工某月统计) 员工 个人资料修改 公告查看 小型车收费登记(车牌号,车辆照片,行使公里数,收费金额,收费日期,收费员,按公里数可以自动计算费用 收费金额=收费标准*公里数) 大卡车金额设置(每吨/元)(车牌号,车辆照片,行使公里数,吨,收费金额,收费日期,收费员, 收费金额=收费标准*吨*公里数 ) 环境说明: 开发语言:Java 框架:ssm,mybatis JDK版本:JDK1.8 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:eclipse/idea Maven包:Maven3.3 服务器:tomcat7
本套zabbix是基于6.0版本部署,内容涵盖zabbix的简介、zabbix server安装、zabbix基本概念、快速入门、zabbix进阶、zabbix实践、zabbix的高级监控使用。 =======知识领域 网络监控:监控网络设备、服务器和应用程序的运行状态。 系统监控:监控服务器性能,如CPU使用率、内存使用情况、网络流量等。 数据库监控:监控数据库性能和状态。 应用程序监控:监控应用程序的运行情况和性能指标。 云监控:监控云服务和虚拟机的健康状况
商品库存管理系统课程设计报告.docx
嘉兴智能卫浴项目建议书.docx
Java系统源码+夕阳红公寓管理系统 内容概要: 本资源包含了完整的Java前后端源码及说明文档,适用于想要快速搭建并部署Java Web应用程序的开发者、学习者。 技术栈: 后端:Java生态系统,包含Spring Boot、Shiro、MyBatis等,数据库使用Mysql 前端:Vue、Bootstrap、Jquery等 适用场景示例: 1、毕业生希望快速启动一个新的Java Web应用程序。 2、团队寻找一个稳定的模板来加速产品开发周期。 3、教育机构或个人学习者用于教学目的或自学练习。 4、创业公司需要一个可以立即投入使用的MVP(最小可行产品)。
(1)用户管理: 用户注册:新用户注册 用户登录:新用户登录 找回密码:忘记密码找回密码 用户评论:发表对新闻的评论 (2)管理员管理: 系统账号管理:管理员管理系统现有账号,进行删除停用等操作 系统公告管理:系统公告的发布和删除 新闻栏目管理:新闻栏目的新增和删除 ...
Java系统源码+计算机学院校友网 内容概要: 本资源包含了完整的Java前后端源码及说明文档,适用于想要快速搭建并部署Java Web应用程序的开发者、学习者。 技术栈: 后端:Java生态系统,包含Spring Boot、Shiro、MyBatis等,数据库使用Mysql 前端:Vue、Bootstrap、Jquery等 适用场景示例: 1、毕业生希望快速启动一个新的Java Web应用程序。 2、团队寻找一个稳定的模板来加速产品开发周期。 3、教育机构或个人学习者用于教学目的或自学练习。 4、创业公司需要一个可以立即投入使用的MVP(最小可行产品)。
四六级报名管理系统.pdf
C语言PTA-数组答案代码合集(湖工1-50)
YOLOv8 安全背心识别项目代码 项目详细介绍请看链接: https://blog.csdn.net/qq_53332949/article/details/144543625 数据集详细介绍请看:https://blog.csdn.net/qq_53332949/article/details/141503406 数据集下载请看:https://download.csdn.net/download/qq_53332949/89711610?spm=1001.2101.3001.9500 按文件中requirements.txt文件配置环境即可使用。
后后勤智能1.。1. 1. 1. 管理系统-...pdf后勤智能1.。1. 1. 管理系统-...pdf后勤智能1.。1. 管理系统-...pdf后勤智能1.。管理系统-...pdf勤智能管理系统-...pdf
瓶子、塑料袋检测70-YOLO(v5至v9)、COCO、CreateML、Darknet、Paligemma、TFRecord、VOC数据集合集.rarset1(拍摄照片)-V15 2023-08-09 3:43 PM ============================= *与您的团队在计算机视觉项目上合作 *收集和组织图像 *了解和搜索非结构化图像数据 *注释,创建数据集 *导出,训练和部署计算机视觉模型 *使用主动学习随着时间的推移改善数据集 对于最先进的计算机视觉培训笔记本,您可以与此数据集一起使用 该数据集包括133张图像。 汽车以可可格式注释。 将以下预处理应用于每个图像: *像素数据的自动取向(带有Exif-Arientation剥离) *调整大小为640x640(拉伸) 应用以下扩展来创建每个源图像的3个版本: * -24和+24度之间的随机旋转
管理员 个人密码修改 项目经理管理 员工管理(调试员,解决方案人员) 日志管理(用户登录日志) 系统设置 项目经理 个人信息管理,修改 项目模块管理 按项目分配调试员 调试员 个人信息管理,修改 BUG信息管理(各个环节的跟踪信息录入) 查看解决方案 解决方案人员 个人信息管理,修改 查看缺陷信息 提出解决方案 环境说明: 开发语言:Java 框架:ssm,mybatis JDK版本:JDK1.8 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:eclipse/idea Maven包:Maven3.3 服务器:tomcat7
电路电压检测14-YOLO(v5至v9)、COCO、CreateML、Paligemma、VOC数据集合集.rar电路电压-V2释放 ============================= *与您的团队在计算机视觉项目上合作 *收集和组织图像 *了解非结构化图像数据 *注释,创建数据集 *导出,训练和部署计算机视觉模型 *使用主动学习随着时间的推移改善数据集 它包括132张图像。 电路电压以可可格式注释。 将以下预处理应用于每个图像: 没有应用图像增强技术。
项目包含前后台完整源码。 项目都经过严格调试,确保可以运行! 具体项目介绍可查看博主文章或私聊获取 助力学习实践,提升编程技能,快来获取这份宝贵的资源吧!