id3算法

3.机器学习之决策树详解

半腔热情 提交于 2020-03-16 13:47:41
本篇博客主要介绍机器学习中的决策树模型。决策树算法在机器学习中算是很经典的一个算法系列。它既可以作为分类算法,也可以作为回归算法,同时也特别适合集成学习比如随机森林。决策树模型是一类算法的集合,在数据挖掘十大算法中,具体的决策树算法占有两席位置,即C4.5和CART算法。 决策树分类的思想类似于找对象。现想象一个女孩的母亲要给这个女孩介绍男朋友,于是有了下面的对话: 女儿:多大年纪了? 母亲:26。 女儿:长的帅不帅? 母亲:挺帅的。女儿:收入高不? 母亲:不算很高,中等情况。 女儿:是公务员不? 母亲:是,在税务局上班呢。 女儿:那好,我去见见。 这个女孩的决策过程就是典型的分类树决策。相当于通过年龄、长相、收入和是否公务员对将男人分为两个类别:见和不见。假设这个女孩对男人的要求是:30岁以下、长相中等以上并且是高收入者或中等以上收入的公务员,那么这个可以用下图表示女孩的决策逻辑:  决策树(decision tree)是一个树结构(可以是二叉树或非二叉树)。其每个非叶节点表示一个特征属性上的测试,每个分支代表这个特征属性在某个值域上的输出,而每个叶节点存放一个类别。使用决策树进行决策的过程就是从根节点开始,测试待分类项中相应的特征属性,并按照其值选择输出分支,直到到达叶子节点,将叶子节点存放的类别作为决策结果。 决策树是在已知各种情况发生概率((各个样本数据出现中

机器学习实战 -- 决策树(ID3)

蓝咒 提交于 2020-02-22 03:49:05
机器学习实战 -- 决策树(ID3) ID3是什么我也不知道,不急,知道他是干什么的就行 ID3是最经典最基础的一种决策树算法,他会将每一个特征都设为决策节点,有时候,一个数据集中,某些特征属性是不必要的或者说信息熵增加的很少,这种决策信息是可以合并的修剪的,但是ID3算法并不会这么做 决策树的核心论点是香农信息论,借此理论得出某种分类情况下的信息熵 某种决策下,分类趋向于统一,则香农熵很小(熵描述杂乱无序的程度,如果'YES', 'NO' 可能性对半分,那么这个分类决策最终是趋向于杂乱的熵值会很大, 只出现 'YES' 那么表示这个决策的结果趋向于一个统一的结果,固定,那么熵就很小) 综上: 某个决策节点下,信息熵越小,说明这个决策方式越好 整个决策树分为三个部分:1.学习出决策树 2.绘制决策树 3.存储决策树 比起sklearn这个决策树更简单,没有考虑基尼系数,只关注信息熵 from math import log '' ''' 计算香农熵 ''' def calcShannonEnt(dataset): '' ''' dataset —— 数据集 eg:[[f1,f2,f3,L1],[f1,f2,f3,L2]] f 表示特征, L 表示标签 shannonEnt —— 香农熵 ''' numEntries=len(dataset) # 统计数据集中样本数量

机器学习8:决策树ID3

旧时模样 提交于 2020-02-05 02:00:55
决策树ID3 原理 熵 (entropy)概念–衡量不确定性的大小 一条信息的信息量大小和它的不确定性有直接的关系,要搞清楚一件非常非常不确定的事情,或者是我们一无所知的事情,需要了解大量信息->信息量的度量就 等于不确定性的多少。 信息熵的计算 ID3算法 C4.5算法 算法实现 from sklearn . feature_extraction import DictVectorizer from sklearn import tree from sklearn import preprocessing import csv import numpy as np # 读入数据 Dtree = open ( r 'AllElectronics.csv' , 'r' ) reader = csv . reader ( Dtree ) # 获取第一行数据 headers = reader . __next__ ( ) print ( headers ) # 定义两个列表 featureList = [ ] labelList = [ ] for row in reader : # 把label存入list labelList . append ( row [ - 1 ] ) rowDict = { } for i in range ( 1 , len ( row ) - 1 ) :

ID3决策树

妖精的绣舞 提交于 2020-01-07 13:05:59
决策树是一个树形结构,类似下面这样: 上图除了根节点外,有三个叶子节点和一个非叶子节点。 在解决分类问题的决策树中,叶子节点就表示所有的分类,比如这里的分类就有3种:无聊时阅读的邮件、需及时处理的邮件、无需阅读的邮件。 使用决策树来分类某个样本数据,就是利用根节点选取的特征,将当前输入样本划分到根节点下的某个子节点上,然后再利用子节点表示的特征来将当前样本划分到该子节点下的某个子节点上,以此继续,直到到达某个叶子节点,那么这个叶子节点表示的类别就是当前决策树对该样本数据所属的类别的预测。 对于上图,因为各个节点表示的特征和各个叶子节点表示的分类都已经给出了,所以给定一个数据很容易就能预测出对应的类别,但是在实际的分类场景中,我们手上有了标注好的训练样本数据后,要如何来构建一颗能够预测新样本类别的决策树呢?换句话说就是,我们如何知道这颗决策树的各个节点选取什么特征来划分数据才最合适呢?ok,你可能听过一些算法的名字,比如ID3、C4.5、CART等,它们其实就是用来解决这个问题的。 这里我们将介绍ID3算法。 我们选取划分数据集的特征的时候,需要考虑的标准是什么特征可以更好的将数据集分开,比如判断是男人还是女人,那么【是否穿高跟鞋】要比【是否带耳钉】更容易将人群划分开,或者说更能划分出纯度高的数据子集。 然而,其实很多时候我们都无法轻易的看出哪种特征能划分出更纯的数据子集

决策树算法

牧云@^-^@ 提交于 2019-12-05 09:25:17
一、目录 1、目录 2、决策树初步认知 3、决策树--ID3算法 4、决策树--C4.5算法 5、决策树--CART 6、CART算法的剪枝 7、决策树的优缺点 8、其他补充 二、决策树初步认知 决策树算法在机器学习中算是很经典的一个算法系列了。它先按照影响结果的主要因素进行排序,选取最主要的因素先进行分岔,依次循环下去。各种方法不同之处在于选择的因素判别方法不同。 它既可以作为分类算法,回归算法,同时也特别适合集成学习比如随机森林。作为一个码农经常会不停的敲if-else 。If-else其实就已经在用到决策树的思想了:关于递归的终止条件有三种情形: 1)当前节点包含的样本属于同一类,则无需划分,该节点作为叶子节点,该节点输出的类别为样本的类别 2)该节点包含的样本集合为空,不能划分 3)当前属性集为空,则无法划分,该节点作为叶子节点,该节点的输出类别为样本中数量多数的类别 本文就对 ID3, C4.5和CART 算法做一个详细的介绍。选择CART做重点介绍的原因是scikit-learn使用了优化版的CART算法作为其决策树算法的实现。 三、决策树 --ID3 算法 1970年代,一个叫昆兰的大牛找到了用信息论中的熵来度量决策树的决策选择过程,方法一出,它的简洁和高效就引起了轰动,昆兰把这个算法叫做ID3。 1.1 信息熵 首先,我们需要熟悉信息论中熵的概念。

决策树(上)-ID3、C4.5、CART

你离开我真会死。 提交于 2019-12-04 16:19:17
参考资料(要是对于本文的理解不够透彻,必须将以下博客认知阅读,方可全面了解决策树): 1. https://zhuanlan.zhihu.com/p/85731206 2. https://zhuanlan.zhihu.com/p/29980400 3. https://github.com/Vay-keen/Machine-learning-learning-notes/blob/master/%E5%91%A8%E5%BF%97%E5%8D%8E%E3%80%8AMachine%20Learning%E3%80%8B%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0(5)--%E5%86%B3%E7%AD%96%E6%A0%91.md 决策树是一个非常常见并且优秀的机器学习算法,它易于理解、可解释性强,其可作为分类算法,也可用于回归模型。本文将分三篇介绍决策树, 第一篇介绍基本树(包括 ID3、C4.5、CART),第二篇介绍 Random Forest、Adaboost、GBDT,第三篇介绍 Xgboost 和 LightGBM。 在进入正题之前,先让我们了解一些有关信息论的知识! 信息论 1.信息熵 在决策树算法中,熵是一个非常非常重要的概念。 一件事发生的概率越小,我们说它所蕴含的信息量越大。 比如:我们听女人能怀孕不奇怪,如果某天听到哪个男人怀孕了

决策树

只谈情不闲聊 提交于 2019-12-02 16:40:02
决策树: 决策树方法在分类,预测,规则等领域有这广泛的应用,20世纪70年代后期和80年代初期,机器学习研究者提出了ID3算法后,决策树在机器学习,数据挖掘领域取得极大的发展,后来又有了c4.5,成为新的监督学习算法.1984年,几位科学家提出了CART分类算法,ID3和CART算法同时被提出,但都是采用类似的方法训练样本中学习决策树 决策树是一种树状结构,它的每一个叶节点对应着一个分类,非叶子节点对应着在某个属性上的划分,根据样本在该属性上的不同取值将其划分成若干个子集.对于非纯的叶子节点,多数类的标号给出到达这个节点的样本所属的类,构造决策树的核心问题是在每一步如何选择适当的属性对样本做拆分.对于一个分类问题,从已知类标记的训练样本中学习并构造出决策树是一个自上而下,分而治之的过程. 决策树算法 算法 描述 C4.5算法 C4.5决策树生成算法相当于ID3算法的重要改进是使用信息增益率来选择节点属性.C4.5算法可疑克服ID3算法存在的不足:ID3算法只适用于离散的描述属性,而C4.5算法即能够处理离散的描述性,也可以处理连续的描述属性 CART算法 CART决策树是一种十分有效的非参数分类和回归方法,通过构建树,修剪树,评估树来构建一个二叉树.当终结点是连续变量时,该树为回归树,当终结点是分类变量,该树为分类树 ID3算法 其核心的是在决策树的各级节点上