【算法】决策树

本文旨在用最短的文章,最通俗的描述,让读者迅速掌握决策树究竟是什么?干什么?怎么用?三大问题。只需要您注意力集中25分钟。

1.明白概念:

a)决策树是一种分类算法,通过训练数据集构建决策树,可以高效的对未知的数据进行分类,主要是用来做预测

b)决策树是一种树状结构,它的每个叶节点对应着一个分类,非叶节点对应着某个属性的划分,根据样本在该属性上的不同取值将其划分成若干个子集。

2.怎么用?

a).根据一些特征值,建立起一个树状结构,根据树状结构的评判标准,来进行预测。

b).树的内部结点表示对某个属性的判断,该结点的分支是对应的判断结果;叶子结点代表一个类标

3.关键点:

构造决策树的核心问题是每一步如何选择适当的属性对样本做拆分。

这就要用到信息熵,熵值越大,不确定程度就越高,就可以把这个属性放在树的根节点。

4.举例:

假如你想通过过去的天气,是否周末,是否促销三个属性和销量的关系来预测将来的销量的高低,这时你就可以通过以前的数据,选择这三个属性,通过计算信息熵的值来进行排序,对样本进行划分。这样就可以形成树状图了

5.具体建立决策树的步骤:

a)计算总的信息熵

b)计算每个测试属性的信息熵

c)计算天气,是否周末和是否促销属性的信息增益值

  信息增益值=总的信息熵-测试属性的信息熵

d)针对每一个分支节点继续进行信息增益的计算,如此反复,直到没有新的节点分支,最终形成一棵决策树

e)当有新的样本进来就可以利用这颗决策树进行预测

6.补充————信息熵的计算

信息增益基于香浓的信息论,它找出的属性R具有这样的特点:以属性R分裂前后的信息增益比其他属性最大。这里信息的定义如下:

其中的m表示数据集D中类别C的个数,Pi表示D中任意一个记录属于Ci的概率,计算时Pi=(D中属于Ci类的集合的记录个数/|D|)。Info(D)表示将数据集D不同的类分开需要的信息量。

举例:

a)比如我们将一个立方体A抛向空中,记落地时着地的面为f1,f1的取值为{1,2,3,4,5,6},

 f1的熵entropy(f1)=-(1/6*log(1/6)+…+1/6*log(1/6))=-1*log(1/6)=2.58;

b)现在我们把立方体A换为正四面体B,记落地时着地的面为f2,f2的取值为{1,2,3,4},

  f2的熵entropy(1)=-(1/4*log(1/4)+1/4*log(1/4)+1/4*log(1/4)+1/4*log(1/4)) =-log(1/4)=2;

c)如果我们再换成一个球C,记落地时着地的面为f3,显然不管怎么扔着地都是同一个面,即f3的取值为{1},

  故其熵entropy(f3)=-1*log(1)=0。

结论:可以看到面数越多,熵值也越大,而当只有一个面的球时,熵值为0,此时表示不确定程度为0,也就是着地时向下的面是确定的。

时间: 2024-10-25 02:40:15

【算法】决策树的相关文章

[转载]简单易学的机器学习算法-决策树之ID3算的

一.决策树分类算法概述 决策树算法是从数据的属性(或者特征)出发,以属性作为基础,划分不同的类.例如对于如下数据集 (数据集) 其中,第一列和第二列为属性(特征),最后一列为类别标签,1表示是,0表示否.决策树算法的思想是基于属性对数据分类,对于以上的数据我们可以得到以下的决策树模型 (决策树模型) 先是根据第一个属性将一部份数据区分开,再根据第二个属性将剩余的区分开. 实现决策树的算法有很多种,有ID3.C4.5和CART等算法.下面我们介绍ID3算法. 二.ID3算法的概述 ID3算法是由Q

机器学习中的算法——决策树模型组合之随机森林与GBDT

前言: 决策树这种算法有着很多良好的特性,比如说训练时间复杂度较低,预测的过程比较快速,模型容易展示(容易将得到的决策树做成图片展示出来)等.但是同时,单决策树又有一些不好的地方,比如说容易over-fitting,虽然有一些方法,如剪枝可以减少这种情况,但是还是不够的. 美国金融银行业的大数据算法:随机森林模型+综合模型 模型组合(比如说有Boosting,Bagging等)与决策树相关的算法比较多,这些算法最终的结果是生成N(可能会有几百棵以上)棵树,这样可以大大的减少单决策树带来的毛病,有

ID3算法 决策树 C++实现

人工智能课的实验. 数据结构:多叉树 这个实验我写了好久,开始的时候从数据的读入和表示入手,写到递归建树的部分时遇到了瓶颈,更新样例集和属性集的办法过于繁琐: 于是参考网上的代码后重新写,建立决策树类,把属性集.样例集作为数据成员加入类中,并设立访问数组,这样每次更新属性集.样例集时只是标记访问数组的对应元素即可,不必实际拷贝. 主函数: 1 #include "Decision_tree.h" 2 using namespace std; 3 int main() 4 { 5 int

经典分类算法——决策树

决策树是一种自顶向下的递归方法,其基本思想是以信息熵为度量构造一棵熵值下降最快的树,到叶子节点处的熵值为零,此时每个叶节点中的实例都属于一类. 决策树学习算法优点是,它可以自学习.在学习过程中,不需要使用者了解过多背景知识,只需要对实例进行较好的标注,就能够进行学习.决策树属于有监督学习.从一类无序.无规则的事物中推理决策树表示的分类规则.       决策树的建立 建立决策树的关键是,在当前状态下选择哪个属性作为分类依据.根据不同的目标函数,建立决策树主要有三种算法: ID3 (信息增益) C

R_Studio(cart算法决策树)对book3.csv数据用测试集进行测试并评估模型

对book3.csv数据集,实现如下功能: (1)创建训练集.测试集 (2)用rpart包创建关于类别的cart算法的决策树 (3)用测试集进行测试,并评估模型 book3.csv数据集 setwd('D:\\data') list.files() dat=read.csv(file="book3.csv",header=TRUE) #变量重命名,并通过x1~x11对class属性进行预测 colnames(dat)<-c("x1","x2"

机器学习---算法---决策树

转自:https://blog.csdn.net/qq_43208303/article/details/84837412 决策树是一种机器学习的方法.决策树的生成算法有ID3, C4.5和CART等.决策树是一种树形结构,其中每个内部节点表示一个属性上的判断,每个分支代表一个判断结果的输出,最后每个叶节点代表一种分类结果.决策树是一种十分常用的分类方法,需要监管学习(有教师的Supervised Learning),监管学习就是给出一堆样本,每个样本都有一组属性和一个分类结果,也就是分类结果已

从决策树学习谈到贝叶斯分类算法、EM、HMM

从决策树学习谈到贝叶斯分类算法.EM.HMM 引言 近期在面试中,除了基础 &  算法 & 项目之外,经常被问到或被要求介绍和描写叙述下自己所知道的几种分类或聚类算法(当然,这全然不代表你将来的面试中会遇到此类问题,仅仅是由于我的简历上写了句:熟悉常见的聚类 & 分类算法而已),而我向来恨对一个东西仅仅知其皮毛而不得深入,故写一个有关数据挖掘十大算法的系列文章以作为自己备试之用,甚至以备将来经常回想思考.行文杂乱,但侥幸若能对读者起到一点帮助,则幸甚至哉. 本文借鉴和參考了两本书,

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

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

机器学习经典算法详解及Python实现--决策树(Decision Tree)

(一)认识决策树 1,决策树分类原理 近来的调查表明决策树也是最经常使用的数据挖掘算法,它的概念非常简单.决策树算法之所以如此流行,一个很重要的原因就是使用者基本上不用了解机器学习算法,也不用深究它是如何工作的.直观看上去,决策树分类器就像判断模块和终止块组成的流程图,终止块表示分类结果(也就是树的叶子).判断模块表示对一个特征取值的判断(该特征有几个值,判断模块就有几个分支). 如果不考虑效率等,那么样本所有特征的判断级联起来终会将某一个样本分到一个类终止块上.实际上,样本所有特征中有一些特征

决策树---ID3算法(介绍及Python实现)

决策树---ID3算法   决策树: 以天气数据库的训练数据为例. Outlook Temperature Humidity Windy PlayGolf? sunny 85 85 FALSE no sunny 80 90 TRUE no overcast 83 86 FALSE yes rainy 70 96 FALSE yes rainy 68 80 FALSE yes rainy 65 70 TRUE no overcast 64 65 TRUE yes sunny 72 95 FALSE