经典分类算法——决策树

决策树是一种自顶向下的递归方法,其基本思想是以信息熵为度量构造一棵熵值下降最快的树,到叶子节点处的熵值为零,此时每个叶节点中的实例都属于一类。

决策树学习算法优点是,它可以自学习。在学习过程中,不需要使用者了解过多背景知识,只需要对实例进行较好的标注,就能够进行学习。决策树属于有监督学习。从一类无序、无规则的事物中推理决策树表示的分类规则。

      决策树的建立

建立决策树的关键是,在当前状态下选择哪个属性作为分类依据。根据不同的目标函数,建立决策树主要有三种算法:

ID3 (信息增益)

C4.5 (信息增益率)

CART (基尼指数)

信息增益表示得知特征A的信息而使得类X的信息的不确定性的减少程度。定义特征A对训练数据集D的信息增益为g(D,A),定义g(D,A)为集合D的经验熵H(D)与特征A给定条件下D的经验条件熵H(D|A)之差,即g(D,A)=H(D)-H(D|A)。选择信息增益最大的特征作为当前的分裂特征。

上公式中,经验熵, (D表示训练数据集,|D|表示样本个数, 表示有K个类,为属于的样本个数,有:)。注:经验熵是对标号关于类的求和。

经验条件熵,特征A有n个不同的取值,根据特征A的取值将D划分为n个子集的样本个数,有:,记子集中属于类的样本的集合为的样本个数。注:经验条件熵是对特征关于属性的求和。

信息增益率:g(D,A)/H(D)

Gini系数。注,Gini系数也称贫富差距系数。

决策树剪枝

在决策树的创建时,由于数据中的噪声和离群点,许多分枝反映的是训练数据中的异常。剪枝方法是用来处理这种过分拟合数据的问题。通常剪枝方法都是使用统计度量,剪去最不可靠的分枝。

剪枝总体思路:由完全树开始,剪枝部分结点得到T1,再次剪枝部分结点得到T2...直到仅剩树根的树;在验证数据集上对这k个树分别评价,选择损失函数最小的树

  剪枝系数确定:

1.根据原损失函数

2.叶结点越多,决策树越复杂,损失越大,修正:

为0时,未剪枝的决策树损失最小

为正无穷大时,单根结点的决策树损失最小;

3.假定当前对以r为根的子树剪枝,剪枝后只保留r本身而删除所有的叶子;

4.考察以r为根的子树

剪枝后的损失函数:

剪枝前的损失函数:

5.令上两式相等,则得到结点r的剪枝系数

剪枝算法:

1.计算所有内部节点的剪枝系数;

2.查找最小剪枝系数的结点,剪枝得决策树;

3.重复1.2.,直到决策树只有1个结点;

4.得到决策树序列

5.使用验证样本集选择最优子树。

时间: 2024-12-28 13:30:44

经典分类算法——决策树的相关文章

机器学习经典分类算法 —— k-均值算法(附python实现代码及数据集)

目录 工作原理 python实现 算法实战 对mnist数据集进行聚类 小结 附录 工作原理 聚类是一种无监督的学习,它将相似的对象归到同一个簇中.类似于全自动分类(自动的意思是连类别都是自动构建的).K-均值算法可以发现k个不同的簇,且每个簇的中心采用簇中所含值的均值计算而成.它的工作流程的伪代码表示如下: 创建k个点作为起始质心 当任意一个点的簇分配结果发生改变时 对数据集中的每个数据点 对每个质心 计算质心与数据点之间的距离 将数据点分配到距其最近的簇 对每一个簇,计算簇中所有点的均值并将

转载:算法杂货铺——分类算法之决策树(Decision tree)

作者:张洋 算法杂货铺——分类算法之决策树(Decision tree) 2010-09-19 16:30 by T2噬菌体, 44346 阅读, 29 评论, 收藏, 编辑 3.1.摘要 在前面两篇文章中,分别介绍和讨论了朴素贝叶斯分类与贝叶斯网络两种分类算法.这两种算法都以贝叶斯定理为基础,可以对分类及决策问题进行概率推断.在这一篇文章中,将讨论另一种被广泛使用的分类算法——决策树(decision tree).相比贝叶斯算法,决策树的优势在于构造过程不需要任何领域知识或参数设置,因此在实际

用Python开始机器学习(2:决策树分类算法)

http://blog.csdn.net/lsldd/article/details/41223147 从这一章开始进入正式的算法学习. 首先我们学习经典而有效的分类算法:决策树分类算法. 1.决策树算法 决策树用树形结构对样本的属性进行分类,是最直观的分类算法,而且也可以用于回归.不过对于一些特殊的逻辑分类会有困难.典型的如异或(XOR)逻辑,决策树并不擅长解决此类问题. 决策树的构建不是唯一的,遗憾的是最优决策树的构建属于NP问题.因此如何构建一棵好的决策树是研究的重点. J. Ross Q

决策树ID3算法[分类算法]

ID3分类算法的编码实现 1 <?php 2 /* 3 *决策树ID3算法(分类算法的实现) 4 */ 5 6 /* 7 *把.txt中的内容读到数组中保存 8 *$filename:文件名称 9 */ 10 11 //-------------------------------------------------------------------- 12 function gerFileContent($filename) 13 { 14 $array = array(NULL); 15

数据挖掘中分类算法小结

数据挖掘中分类算法小结 数据仓库,数据库或者其它信息库中隐藏着许多可以为商业.科研等活动的决策提供所需要的知识.分类与预测是两种数据分析形式,它们可以用来抽取能够描述重要数据集合或预测未来数据趋势的模型.分类方法(Classification)用于预测数据对象的离散类别(Categorical Label);预测方法(Prediction )用于预测数据对象的连续取值. 分类技术在很多领域都有应用,例如可以通过客户分类构造一个分类模型来对银行贷款进行风险评估;当前的市场营销中很重要的一个特点是强

十大经典数据挖掘算法

国际权威学术组织the IEEE International Conference on Data Mining (ICDM) 2006年12本月十大评选经典的数据挖掘算法:C4.5, k-Means, SVM, Apriori, EM, PageRank, AdaBoost, kNN, Naive Bayes, and CART. 不不过选中的十大算法.事实上參加评选的18种算法,实际上随便拿出一种来都能够称得上是经典算法,它们在数据挖掘领域都产生了极为深远的影响. 1. C4.5 C4.5算

18大经典数据挖掘算法小结

18大经典数据挖掘算法小结 本文所有涉及到的数据挖掘代码的都放在了我的github上了. 地址链接: https://github.com/linyiqun/DataMiningAlgorithm 大概花了将近2个月的时间,自己把18大数据挖掘的经典算法进行了学习并且进行了代码实现,涉及到了决策分类,聚类,链接挖掘,关联挖掘,模式挖掘等等方面.也算是对数据挖掘领域的小小入门了吧.下面就做个小小的总结,后面都是我自己相应算法的博文链接,希望能够帮助大家学习. 1.C4.5算法.C4.5算法与ID3

R语言与数据分析之三:分类算法2

上期与大家分享的传统分类算法都是建立在判别函数的基础上,通过判别函数值来确定目标样本所属的分类,这类算法有个最基本的假设:线性假设.今天继续和大家分享下比较现代的分类算法:决策树和神经网络.这两个算法都来源于人工智能和机器学习学科. 首先和小伙伴介绍下数据挖掘领域比较经典的Knn(nearest neighbor)算法(最近邻算法) 算法基本思想: Step1:计算出待测样本与学习集中所有点的距离(欧式距离或马氏距离),按距离大小排序,选择出距离最近的K个学习点: Step2:统计被筛选出来的K

图解十大经典机器学习算法

图解十大经典机器学习算法 弱人工智能近几年取得了重大突破,悄然间,已经成为每个人生活中必不可少的一部分.以我们的智能手机为例,看看到底温藏着多少人工智能的神奇魔术. 下图是一部典型的智能手机上安装的一些常见应用程序,可能很多人都猜不到,人工智能技术已经是手机上很多应用程序的核心驱动力. 图1 智能手机上的相关应用 传统的机器学习算法包括决策树.聚类.贝叶斯分类.支持向量机.EM.Adaboost等等.这篇文章将对常用算法做常识性的介绍,没有代码,也没有复杂的理论推导,就是图解一下,知道这些算法是