机器学习之C4.5
来源:互联网 发布:蜂蜜源码 编辑:程序博客网 时间:2024/06/05 06:11
C4.5算法,决策树的一种生成算法。是对ID3的一个改进算法,在选择最佳分裂属性时,ID3使用的标准是信息增益,而C4.5使用的是信息增益率。
C4.5和ID3一样,生成的决策树可以是多叉树,CART生成的是二叉树。
信息增益率
在选择多值属性时通过考虑分支的数量和大小来减少偏差。
计算
首先计算训练集的信息增益,不再赘述
Intrinsic Value(有的博客称之为分裂信息度量)的计算:
意思就是在计算属性a的Intrinsic Value时,对于a的所有值,属性a=此值的个数占总个数的比例*log2这个比例
具体计算举例看此博客:[信息增益率计算example](http://blog.csdn.net/xuxurui007/article/details/18045943 “信息增益率计算example”)
相对与ID3算法的改进
- 既可以处理连续数据也可以处理离散数据
- 可以处理属性丢失的训练集
- 处理多值属性?(attributes with differing costs)
对连续属性的处理
如果属性是离散型,节点的个数就是离散数值的个数,这时可能产生多叉。
对于连续性属性,选择一个阈值,进行二叉划分
阈值的选择方法,我看到有两种,具体实现细节不同,但都是使划分后的信息增益率最大
1. Ri的最小值赋给A1,Ri的最大值赋给Am(m是自己选择的值)
for j from 2:m-1
Do Aj=A1+j*(Am-A1)/m
从A1到Am中选择使得信息增益率最大的值作为阈值
2. 另外一种方法:
属性R上的数据个数为total,将数据集按照该属性值从小到大排序
生成total-1个分割点。第i个分割点的取值
python实现
惊奇的发现自己写的C4.5算法竟然对了。感谢机器学习实战,其中有一些实现方法是借鉴和学习这本书里的代码。不过我只对离散多值属性进行了验证,是正确的,没有对连续属性进行验证,一是因为没有测试数据,而是因为今天没有时间了,还要听英语,明天要开始下一个算法。
这个程序比较庞大,我是倒着写的,就是先写被其他函数用到函数,最后写主要函数
- 机器学习之C4.5
- 机器学习之决策树--C4.5
- 机器学习-C4.5决策树
- 机器学习算法之C4.5(C语言实现)
- python 机器学习之C4.5决策树分类
- 机器学习:WEKA的应用之 J48(C4.5)
- 机器学习_算法_ID3,C4.5
- 机器学习算法-决策树C4.5练习
- 【机器学习十大算法】C4.5
- 【机器学习】决策树C4.5、ID3
- 机器学习-决策树-ID3, C4.5
- 机器学习算法 --- 决策树ID3,C4.5
- 机器学习系列(5):决策树之ID3和C4.5
- 《机器学习实战》之决策树ID3、C4.5、CART算法【二】
- 机器学习之决策树分类算法(ID3 and C4.5)
- 决策树之C4.5算法学习
- Machine Learning 学习 之 C4.5
- 【机器学习】分类算法:决策树(ID3、C4.5、CART)
- Android基础之四层架构
- Pandas中resample方法详解
- the request was rejected because no multipart boundary was found??求解
- 树 facetest
- iOS导出4个ipa包的含义
- 机器学习之C4.5
- 查看linux服务器内存使用情况free -m命令详解
- 前端打包利器,webpack工具,app打包工具
- Java中的文件操作
- 解决oracle数据库中ps.setString()失效的问题
- Transform组件助手类
- Java基础-泛型(下)
- 59安装MySQL 60MySQL入门语句10条 61提交留言到MySQL
- ACM学习历程13——multimap集合容器