决策树中的J48算法分析

J48原理:本来名称为C4.8,由于是Java实现的算法,再加上C4.8为商业收费算法。 其实J48是自上而下的,递归的分治策略,选择某个属性放置在根节点,为每个可能的属性值产生一个分支,将实例分成多个子集,每个子集对应一个根节点的分支,然后在每个分支上递归地重复这个过程。当所有实例有相同的分类时,停止。

问题是如何:如恶化选择根节点属性,建立分支呢?

例如:weather.nominal.arff

我们希望得到的是纯分裂,即分裂为纯节点,希望找到一个属性,它的一个节点全是yes,一个节点全是no,这是最好的情况,因为如果是混合节点则需要再次分裂

通过量化来确定能产生最纯子节点的属性---计算纯度(目标是得到最小的决策树)。而自上而下的树归纳法用到了一些启发式方法---产生纯节点的启发法是以信息论为基础的,即信息熵,以bits测量信息。

信息增益=分裂前分布的信息熵-分裂后分布的信息熵,选择信息增益最大的属性。

计算这四个属性的信息增益,如下图:

经过计算得到outlook、windy、humidity、temperature的信息增益分别为0.247bits、0.048bits、0.152bits、0.029bits,所以选择outlook为根节点。

计算举例 
分裂前:Info(outlook)=entropy(outlook)=-9/14*lg(9/14)-5/14*lg(5/14)=0.940286

分裂后:Inf0a(outlook)=5/14*Info(D1)+4/14*Info(D2)+5/14*Info(D3)=0.693535

Info(D1)=-2/5*lg(2/5)-3/5*lg(3/5)=0.9709490 , Info(D2)=0

Info(D3)=-3/5*lg(3/5)-2/5*lg(2/5)

Gain(outlook)=Info(outlook)-Inf0a(outlook)=0.247bits

时间: 2024-08-10 00:07:27

决策树中的J48算法分析的相关文章

决策树中的熵和基尼指数

决策树是一种很基本的分类与回归方法,但正如前面博文机器学习排序算法:RankNet to LambdaRank to LambdaMART中所讲的LambdaMART算法一样,这种最基本的算法却是很多经典.复杂.高效的机器学习算法的基础.关于什么是决策树,网上一搜就会有很多博客文章,所以本文并不想讨论这个话题.本文想讨论的是决策树中两个非常重要的决策指标:熵和基尼指数.熵和基尼指数都是用来定义随机变量的不确定性的指标.下面先介绍什么是随机变量的不确定性. 1. 随机变量的不确定性 什么是随机变量

机器学习【2】决策树中熵和信息增益的计算,构造决策树 ID3

信息熵很亮的是在你知道一个事件的结果后,平均会带给你多大的信息量,当事件的不确定性越大,那么要搞清它所需要的信息量也就越大,也就是信息熵越大,是无序性,不确定性的度量指标. 信息熵的计算: -p[i]logp[i],底数为2 public static double calcEntropy(int p[]) { double entropy = 0; // 用来计算总的样本数量,p[i]/sum即i的概率 double sum = 0; int len = p.length; for (int

决策森林和卷积神经网络二道归一

现在有很多人认为神经网络可以和人脑中的机制相似.我却认为,或许人脑中有的机制与此类似,但一定是一个复杂的系统.因为人脑的运行没有那么快,却能识别大千世界.所以直观上看人脑应该是知识库加快速索引加级联识别算法,之所以用级联是因为要保证速度. 但我们其实可以完全不必模仿人脑的构造,因为人工建立的智能一定比人脑在各个方面都要强上百倍,也正如学飞行不能看雄鹰振翅而是空气动力学一样. 我认为人脑最重要的机制是元推理能力,所谓的元推理能力是推理能力的最小集合,基于此可以衍生出更精确的更强大的推理.当然,记忆

决策树算法

利用ID3算法来判断某天是否适合打网球. (1)类别属性信息熵的计算由于未分区前,训练数据集中共有14个实例, 其中有9个实例属于yes类(适合打网球的),5个实例属于no类(不适合打网球), 因此分区前类别属性的熵为: (2)非类别属性信息熵的计算,若先选择Outlook属性. (3)Outlook属性的信息增益为: (4)同理计算出其他3个非类别属性的信息增益,取最大的那个属性作为分裂节点,此例中最大的是Outlook,进而得到如下图所示: (5)上图中,针对sunny中的子训练数据集分支,

数据挖掘之决策树算法ID3算法的相关原理

ID3决策树:针对属性选择问题,是决策树算法中最为典型和最具影响力的决策树算法. ID3决策树算法使用信息增益度作为选择测试属性. 其中p(ai) 表示ai 发生的概率. 假设有n个互不相容的事件a1,a2,a3,-.,an,它们中有且仅有一个 发生,则其平均的信息量可如下度量: 对数底数可以为任何数,不同的取值对应了熵的不同单位. 通常取2,并规定当p(ai)=0时 =0 Entropy(S,A)=∑(|Sv|/|S|)* Entropy(Sv)公式2 以去不去打羽毛球为例子 A:属性:out

再探决策树算法之利用sklearn进行决策树实战

sklearn模块提供了决策树的解决方案,不用自己去造轮子了(不会造,感觉略复杂): 下面是笔记: Sklearn.tree参数介绍及使用建议 参数介绍及使用建议官网: http://scikit-learn.org/stable/modules/generated/sklearn.tree.DecisionTreeClassifier.html class sklearn.tree.DecisionTreeClassifier(criterion='gini', splitter='best'

数据挖掘 决策树算法 ID3 通俗演绎

决策树是对数据进行分类,以此达到预测的目的.该决策树方法先根据训练集数据形成决策树,如果该树不能对所有对象给出正确的分类,那么选择一些例外加入到训练集数据中,重复该过程一直到形成正确的决策集.决策树代表着决策集的树形结构. 决策树由决策结点.分支和叶子组成.决策树中最上面的结点为根结点,每个分支是一个新的决策结点,或者是树的叶子.每个决策结点代表一个问题或决策,通常对应于待分类对象的属性.每一个叶子结点代表一种可能的分类结果.沿决策树从上到下遍历的过程中,在每个结点都会遇到一个测试,对每个结点上

决策树算法-信息熵-信息增益-信息增益率-GINI系数-转

1. 算法背景介绍 分类树(决策树)是一种十分常用的分类方法.他是一种监管学习,所谓监管学习说白了很简单,就是给定一堆样本,每个样本都有一组属性和一个类别,这些类别是事先确定的,那么通过学习得到一个分类器,这个分类器能够对新出现的对象给出正确的分类.这样的机器学习就被称之为监督学习.分类本质上就是一个map的过程.C4.5分类树就是决策树算法中最流行的一种.下面给出一个数据集作为算法例子的基础,比如有这么一个数据集,如下: 这个Golf数据集就是我们这篇博客讨论的基础.我们分类的目的就是根据某一

就是要你明白机器学习系列--决策树算法之悲观剪枝算法(PEP)

前言 在机器学习经典算法中,决策树算法的重要性想必大家都是知道的.不管是ID3算法还是比如C4.5算法等等,都面临一个问题,就是通过直接生成的完全决策树对于训练样本来说是“过度拟合”的,说白了是太精确了.由于完全决策树对训练样本的特征描述得“过于精确” ,无法实现对新样本的合理分析, 所以此时它不是一棵分析新数据的最佳决策树.解决这个问题的方法就是对决策树进行剪枝,剪去影响预测精度的分支.常见的剪枝策略有预剪枝(pre -pruning)技术和后剪枝(post -pruning )技术两种.预剪