机器学习&&数据挖掘之一:决策树基础认识
决策树入门篇
前言:分类是数据挖掘中的主要分析手段,其任务就是对数据集进行学习并构造一个拥有预测功能的分类模型,用于预测未知样本的类标号,把类标号未知的样本按照某一规则映射到预先给定的类标号中。
分类模型学习方法其中一类就是基于决策树的学习方法,下面,简单总结一下决策树的基础知识和构造决策树的两种算法:ID3、C4.5。
关键词:决策树、ID3、C4.5、信息熵、信息增益、分裂信息、信息增益率
正文
决策树分类的方法的特点是对训练样本集进行训练,生成一颗二叉或多叉的决策树。
ID3算法:使用信息增益作为属性选择标准。首先检测并计算所有的属性,然后选择信息增益最大的属性作为决策树节点,由该属性的不同取值建立分支,再对各分支的子集采取相同的信息增益计算方法后继续选择信息增益大的属性作为节点。一直递归调用下去,直到所有子集仅包含一个类别的数据为止,最后就得到了一颗决策树。
熵(Entropy,信息熵)的计算方法:假定S为训练集,S的目标属性C有m个可能的类标号值,C={C1,C2,C3…Cm},每个类标号值相应的概率为p1,p2,p3…pm。那么训练集S的信息熵定义为:Entropy(S)=Entropy(p1,p2,,pm)=-(p1*log2(p1)+p2*log2(p2)+pm*log2(pm));
信息增益:假设训练集为S,并用属性A来划分S,那么属性A的信息增益Gain(S,A)为训练集S的熵减去按属性A划分S后的子集的熵,即Gain(S,A)=Entropy(S)-Entropy_A(S)。
优缺点分析:ID3算法采用一种自顶向下、贪婪的搜索方法,理论清晰,方法简单,学习能力较强,但是ID3算法只能处理分类型数据,无法处理连续性数据。该算法使用信息增益作为决策树属性节点的选择标准,由于信息增益在类别值多的属性上大于类别值少的属性的计算结果,这将导致决策树偏向于选择类别值多的属性。
C4.5算法:基于ID3算法的不足而改进的决策树分类算法。
如果属性A为离散型数据:计算方法和ID3相同。
如果属性A为连续型数据:则对属性A的取值排序,将每两个相邻值的中点看做分裂点,然后对每个分裂点计算Sl和Sr(Sl和Sr分别对应于属性A的取值对该分裂点进行划分开的两部分子集,即Sl为属性A取值中比该分裂点小的值的个数,Sr亦如此),然后计算该分裂点的熵Entropy_A(S)=abs(Sl)/abs(S)Entropy(Sl)+abs(Sr)/abs(S)Entro
py(Sr),选择Entropy_A(S)值最小的分裂点作为属性A的最佳分裂点,并以此分裂点按属性A划分S的熵值作为属性A划分S的熵值。
分裂信息SplitE(A)=-(S1/S*log2(S1/S)+S2/S*log2(S2/S)……Sk/S*log2
(Sk/S)
对有缺失数据的处理:以某种方式填充缺失的数据(如平均值,常见值,赋予概率等等)
信息增益率定义为GainRatio(A)=Gain(A)/SplitE(A)。
优缺点分析:C4.5算法能够处理离散型数据和连续型数据以及有缺失值的数据,使用信息增益率来作为决策树的属性选择标准,对生成的决策树进行剪枝处理;在构造树的过程中,需要对数据集进行多次扫描和排序,因此算法相对而言不是很高效,并且C4.5算法对大规模数据集的处理不是很理想。
机器学习&&数据挖掘之一:决策树基础认识的更多相关文章
- Python 网页爬虫 & 文本处理 & 科学计算 & 机器学习 & 数据挖掘兵器谱(转)
原文:http://www.52nlp.cn/python-网页爬虫-文本处理-科学计算-机器学习-数据挖掘 曾经因为NLTK的缘故开始学习Python,之后渐渐成为我工作中的第一辅助脚本语言,虽然开 ...
- 常用的机器学习&数据挖掘知识点【转】
转自: [基础]常用的机器学习&数据挖掘知识点 Basis(基础): MSE(Mean Square Error 均方误差),LMS(LeastMean Square 最小均方),LSM(Le ...
- [resource-]Python 网页爬虫 & 文本处理 & 科学计算 & 机器学习 & 数据挖掘兵器谱
reference: http://www.52nlp.cn/python-%e7%bd%91%e9%a1%b5%e7%88%ac%e8%99%ab-%e6%96%87%e6%9c%ac%e5%a4% ...
- 【Python】Python 网页爬虫 & 文本处理 & 科学计算 & 机器学习 & 数据挖掘兵器谱
本文转载自:https://www.cnblogs.com/colipso/p/4284510.html 好文 mark http://www.52nlp.cn/python-%E7%BD%91%E9 ...
- 机器学习&数据挖掘笔记_16(常见面试之机器学习算法思想简单梳理)
前言: 找工作时(IT行业),除了常见的软件开发以外,机器学习岗位也可以当作是一个选择,不少计算机方向的研究生都会接触这个,如果你的研究方向是机器学习/数据挖掘之类,且又对其非常感兴趣的话,可以考虑考 ...
- 机器学习&数据挖掘笔记(常见面试之机器学习算法思想简单梳理)
机器学习&数据挖掘笔记_16(常见面试之机器学习算法思想简单梳理) 作者:tornadomeet 出处:http://www.cnblogs.com/tornadomeet 前言: 找工作时( ...
- [转]机器学习&数据挖掘笔记_16(常见面试之机器学习算法思想简单梳理)
机器学习&数据挖掘笔记_16(常见面试之机器学习算法思想简单梳理) 转自http://www.cnblogs.com/tornadomeet/p/3395593.html 前言: 找工作时(I ...
- 常见的机器学习&数据挖掘知识点
原文:http://blog.csdn.net/heyongluoyao8/article/details/47840255 常见的机器学习&数据挖掘知识点 转载请说明出处 Basis(基础) ...
- 2018-02-03-PY3下经典数据集iris的机器学习算法举例-零基础
---layout: posttitle: 2018-02-03-PY3下经典数据集iris的机器学习算法举例-零基础key: 20180203tags: 机器学习 ML IRIS python3mo ...
- Python数据挖掘之决策树DTC数据分析及鸢尾数据集分析
Python数据挖掘之决策树DTC数据分析及鸢尾数据集分析 今天主要讲述的内容是关于决策树的知识,主要包括以下内容:1.分类及决策树算法介绍2.鸢尾花卉数据集介绍3.决策树实现鸢尾数据集分析.希望这篇 ...
随机推荐
- cmd中无法运行svn命令
Svn 不是内部或外部命令,也不是可运行的程序 解决方法: 增加“svn安装目录/bin”,例如:C:\Program Files\TortoiseSVN\bin
- ES2015 ——let命令的暂时性死区
ES6新增了let命令,用来声明变量.它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效. 和var不同的还有,let命令不存在变量提升,所以声明前调用变量,都会报错,这就涉及到 ...
- 瀑布流ListView
前言 终于忙完了一段时间,现在前段时间写的一个瀑布流ListView到想法分享下,这个东西是扩展自Listview,当列表内容拉到最后后触发刷新操作,以便抓取更多到数据. 先贴下整个代码,先有个整体到 ...
- PHP导出excel文件
现在教教你如何导入excel文件: 在我的文件储存里面有一个com文件夹的,将其解压放在ThinkPHP/Library/文件夹里面,然后就是写控制器啦!去调用这个插件: <?php names ...
- python encode decode unicode区别及用法
decode 解码 encode 转码 unicode是一种编码,具体可以百度搜 # coding: UTF-8 u = u'汉' print repr(u) # u'\u6c49' s = u.en ...
- DISP_FUNCTION用法
DISP_FUNCTION(theClass, pszName, pfnMember, vtRetVal, vtsParams ) 参数 theClass 类名. pszName 扩展函数名. pfn ...
- Java生成唯一的ID
public class UIDGenerator { private static Date date = new Date(); private static StringBuilder buf ...
- [原创]pg_shard使用场景及功能测试
pg_shard是一个PostgreSQL的sharding extension.可以用于Shards.Replicates tables和高可用.它可以在不修改Applications的情况下无缝分 ...
- 教你怎么安装Redis
以下命令以root用户运行:#cd /tmp/#wget http://redis.googlecode.com/files/redis-2.6.11.tar.gz#tar xzf redis-2.6 ...
- ubuntu server获取并自动设置最快镜像的方法
一,安装方法1 add-apt-repository ppa:ossug-hychen/getfastmirrorapt-get install getfastmirror 如果添加了临时源,这样移除 ...