决策树算法(一)——一些重要的数学概念

写在前面的话

趁着现在我还是高中数理化老师,偶尔兼职英语老师的时候赶紧抓紧时间写点有关计算机科学技术的东西。一来是表示我对计算机的热爱,二来,当然是最重要的咯,满足一下我强大的虚荣心。哈哈哈哈!想想高中数学物理化学老师在折腾计算机,是不是有种瞬间吊炸天的感觉。

这个系列我写了一个月了,之后会陆陆续续的放出来的。希望对大家有一点点帮助。如果您没有看懂我在写啥,那一定是我错了,讲的不够清楚。世界上没有什么知识点是难的,只是看你知识储备和理解力达到了相应的水平没有。至少我是这么认为的。

当然,您要是觉得我写的有啥不好的,使劲的喷,随便喷,带着愤怒的情绪狂喷都没有问题!把问题告诉我,让我有所进步,让大家一起进步,那真真是极好的!

1.背景知识

在我们谈论决策树的时候我们先来玩一个游戏好咯。

2016年是奥运年,我最喜欢的两个运动员,(内心戏:当然是女的咯。因为我也是妹子,哈哈哈。)一个当然是女王隆达罗西,还有一个就是伊辛巴耶娃咯。

好的,现在我们就来玩猜运动员的游戏。

我在心里想一个运动员的名字,比如说就是伊辛巴耶娃。然后你有20次的提问机会,但是我只能回答你是还是不是这两种可能。

我们可以这样对话:

你:男的?

我:不是

你:参加过往届奥运会?

我:是

你:参加过两次?

我:不是

你:参加过三次?

我:是

你:参加的是田赛

我:是

你:耶辛巴伊娃

我:恭喜你,答对了!

以上我们玩的这个过程就有一点点像决策树算法

我们经常使用决策树处理分类问题,近年来,决策树也是经常使用的数据挖掘的算法。

决策树的概念是非常简单的,我们可以通过一个图形来快速的了解决策数。我用了《机器学习与实战》这本书的内容来讲解。如图1所示,下面的这个流程图就是一个决策树,正方形代表的是判断模块(decision
block),椭圆形代表的是终止模块(terminating block),表示已经得出结论,可以终止运行,从判断模块引出的左右箭头称作分支(branch)

这是一个假想的邮件分类系统。首先这个系统会检测发送邮件的域名地址,如果地址为myEmployer.com 则将邮件归类到“无聊时需要阅读的邮件”如果没有这个域名我们就检查邮件中的内容是不是包含了“曲棍球”的邮件。如果包含则把这些邮件放置在“需要及时处理的朋友邮件”,否则就把这些邮件归类到“无需阅读的垃圾邮件”

2.构造决策树

根据上面的描述我们已经发现构造决策树做分类的时候首要目的就是每次分类的时候都能找到最容易区分一个集合和另一个集合的特征。在上面例子中,我们首先就是查找邮件的域名,在第一次分类的时候,邮件的域名就是我们最重要的分类特征。

为了找到决定性的特征,划分出最好的结果,我们必须评估每个特征,完成测试之后,原始数据集就被划分为几个数据子集。根据我们挑选出的最佳特征,这些数据会被分成两类。我们分别检测这两类,如果类别相同则不需要再次划分,如果类别不同,我们要重复上面的步骤。就是在被划分出的子集当中在挑选其他的重要特征把这些数据在细分成其他的类别。

根据这个描述,我们可以很容易发现这个过程就是一个递归的过程,怎么找到这些最佳特征,我们要做的事情就需要了解一些数学概念。我们需要用到信息论的知识来划分数据集。

3.一些需要了解的数学概念

划分数据集的原则就是:将无序的数据变得更加有序。我们可以有多种方法来划分数据,在这里我们构建决策树算法使用的是信息论划分数据集,然后编写代码将理论应用到具体的数据集上,然后编写代码构建决策树。我们在组织杂乱无章的数据时使用信息论度量信息。

比如我给出一条信息:

我爱你1314.

这就是一条简单的信息,这个时候我们可以对这个信息做一些分类,比如说找出这句话中的动词,数字,以及代词,名词等。我们要知道的就是 信息处理就是将杂乱无章的信息用数理统计的方法表示出来。

在这里我们可以将这个信息分成 三类: 代词(名词),动词,以及数字,我们用X1表示代词,X2表示动词,X3表示数字,p(xi)表示的是这个分类在这个信息当中出现的概率。那么我们就可以将信息定义为:

高中毕业的人都知道吧,概率p(Xi)是一个分数,然后对数函数以2为基底,它是比1大的,如果幂是分数,基底是大于1的那个这个值是个负数。为了方便处理,前面添加负号。

信息熵,简称熵是用来表示信息的期望值得。

3.1 信息熵

根据百科词条的定义,我们先来看一下信息论中的一下基本概念

信息论:

信息论是运用概率论与数理统计的方法研究信息、信息熵通信系统、数据传输、密码学数据压缩等问题的应用数学学科。信息系统就是广义的通信系统,泛指某种信息从一处传送到另一处所需的全部设备所构成的系统。

1948年,香农提出了“信息熵”的概念,解决了对信息的量化度量问题。信息熵这个词是C.E.香农从热力学中借用过来的。热力学中的热熵是表示分子状态混乱程度的物理量。香农用信息熵的概念来描述信源的不确定度。

我们可以用信息熵来度量信息量的多少。

在给出信息熵的计算公式的时候,我想先说几个基本的概念,以便于你理解信息熵的计算公式。

3.2随机变量

我们可以先看下面的一些问题。

某人射击一次,可能出现命中0环,命中1环…,命中10环等结果。即可能出现的结果可以由0,1,2,3,4,5,6,7,8,9,10这11个数来表示。

在某次的产品检验中,在可能含有次品的100件产品中任意抽取4件来检验,那么其中含有的次品可能的是0件,1件,2件,3件,4件,即可能出现的结果可以由0,1,2,3,4这5个数来表示。

我们把上面这些事件称为随机实验,随机实验想要得到的结果(例如射击一次命中的环数)可以用一个变量来表示的话,那么这样的变量就叫做随机变量(random variable)

随机变量的一些特征:

1. 可用数表示

2. 实验前可判断出所有可能取值

3. 实验前不能判断具体取哪个值

4. 所有可能值按照某种顺序列出

离散型随机变量 

随机变量的取值是可以一一列出的比如上面所说的射击事件

连续型随机变量 

那就是取值不能一一列出的咯,比如说一天内气温的变化量

推广:

一般地,如果X是随机变量,若有Y=f(X),则Y也是随机变量

3.3数学期望

在概率论中,数学期望简称期望,通俗的说就是平均值,它表示的是随机变量的取值的平均水平。

计算的公式

X1,X2,X3,……,Xn为这离散型随机变量,p(X1),p(X2),p(X3),……p(Xn)为这几个数据的概率函数。在随机出现的几个数据中p(X1),p(X2),p(X3),……p(Xn)概率函数就理解为数据X1,X2,X3,……,Xn出现的频率f(Xi).则:

E(X) = X1*p(X1) + X2*p(X2) + …… + Xn*p(Xn) = X1*f1(X1) + X2*f2(X2) + …… + Xn*fn(Xn)

上面的这个看着有点恶心,我们来温故一下当年高中数学课本中的东东,分分钟暴露了年龄的数学课本啊,但是还是很喜欢

(在这里我们主要考虑离散型随机变量)

总而言之,数学期望就是随机变量的取值乘以在随机实验中这个随机变量取到的概率。

推广一下

下面来举个例子

如果你已经理解了数学期望,随机变量这些概念那么我们就来说说信息熵的计算。

都说了熵是表示信息的期望值,信息的期望值,信息的期望值,如果您已经看懂了数学期望怎么算,那么你应该会很容易理解信息熵会怎么计算。

还是刚才那个例子,我们给出了一个信息:我爱你1314,然后把这个信息分为三类,然后我们要计算这个信息的熵。

那是不是就要计算这个信息所有类别的可能值得数学期望了。

那么熵的公式就是下面这个样子的:

其中n表示的是这个信息被分为n类。

3.4 信息增益(information gain)

在划分数据集之前之后信息发生的变化称为信息增益,知道如何计算信息增益,我们就可以计算每个特征值划分数据集获得的信息增益,获得信息增益最高的特征就是最好的选择。

讲完这个我们现在应该要学会怎么计算信息增益了,下一章再讲吧。实在是打不动这么多字了,下一章我们就开始愉快的写代码了~

写在后面的话

你必须非常努力,才可以看起来毫不费力~

时间: 2024-08-28 03:16:44

决策树算法(一)——一些重要的数学概念的相关文章

AI机器学习-决策树算法-概念和学习过程

1. 概念 决策树是通过一系列规则对数据进行分类的过程,它提供一种在什么条件下会得到什么值的类似规则的方法.决策树分为分类树和回归树两种,分类树对离散变量做决策树,回归树对连续变量做决策树. 分类决策树模型是一种描述对实例进行分类的树形结构.决策树由结点和有向边组成.结点有两种类型:内部节点和叶节点,内部节点表示一个特征或属性,叶节点表示一个类. 直观看上去,决策树分类器就像判断模块和终止块组成的流程图,终止块表示分类结果(也就是树的叶子).判断模块表示对一个特征取值的判断(该特征有几个值,判断

决策树算法原理及实现

(一)认识决策树 1.决策树分类原理 决策树是通过一系列规则对数据进行分类的过程.它提供一种在什么条件下会得到什么值的类似规则的方法.决策树分为分类树和回归树两种,分类树对离散变量做决策树,回归树对连续变量做决策树. 近来的调查表明决策树也是最经常使用的数据挖掘算法,它的概念非常简单.决策树算法之所以如此流行,一个很重要的原因就是使用者基本上不用了解机器学习算法,也不用深究它是如何工作的.直观看上去,决策树分类器就像判断模块和终止块组成的流程图,终止块表示分类结果(也就是树的叶子).判断模块表示

《机器学习实战》基于信息论的三种决策树算法(ID3,C4.5,CART)

============================================================================================ <机器学习实战>系列博客是博主阅读<机器学习实战>这本书的笔记,包含对其中算法的理解和算法的Python代码实现 另外博主这里有机器学习实战这本书的所有算法源代码和算法所用到的源文件,有需要的留言 如需转载请注明出处,谢谢 ======================================

决策树算法

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

算法干货----决策树算法中的熵与信息增益

什么是决策树?为什么要用决策树? 决策树是一种二分树,或是多分数.对于大量数据的细分工作有很大帮助.在日常生活中,决策树的算法可谓是每天都在用.小到用户分类,大到辅助决策.实际上他的使用很多. 至于为什么要用到决策树,个人认为就是因为这种算法简单.代码实现起来主要就是IF-ELSE就可以实现.可这一算法的发展也是从ID3--->C4.5----->C5.0. 它的主要步骤就两个:1,建树 2,剪树 如何建树,就是如何分你的数据,按照哪种特性?比如人口统计数据,是按年龄,身高,体重,学历....

如何实现并应用决策树算法?

本文对决策树算法进行简单的总结和梳理,并对著名的决策树算法ID3(Iterative Dichotomiser 迭代二分器)进行实现,实现采用Python语言,一句老梗,“人生苦短,我用Python”,Python确实能够省很多语言方面的事,从而可以让我们专注于问题和解决问题的逻辑. 根据不同的数据,我实现了三个版本的ID3算法,复杂度逐步提升: 1.纯标称值无缺失数据集 2.连续值和标称值混合且无缺失数据集 3.连续值和标称值混合,有缺失数据集 第一个算法参考了<机器学习实战>的大部分代码,

决策树算法原理

转载于:http://www.cnblogs.com/pinard/p/6050306.html (楼主总结的很好,就拿来主义了,不顾以后还是多像楼主学习) 决策树算法在机器学习中算是很经典的一个算法系列了.它既可以作为分类算法,也可以作为回归算法,同时也特别适合集成学习比如随机森林.本文就对决策树算法原理做一个总结,上篇对ID3, C4.5的算法思想做了总结,下篇重点对CART算法做一个详细的介绍.选择CART做重点介绍的原因是scikit-learn使用了优化版的CART算法作为其决策树算法

决策树算法总结

决策树算法实际就是一个不断分割训练数据集使其成为数据子集的过程.这种分类或回归模型成树形结构,这也是其被成为决策树算法的主要原因.决策树算法最主要的问题是如何分裂原始数据集使其数据集包含的类别纯度越来越高,于是前辈们引入了熵和信息增益等概念.下面来总结一下决策树算法的主要步骤: step1.计算目标属性(类别的熵): step2.选择一个属性分裂数据集,也即计算信息增益: step3.根据各属性的信息增益,选择最佳的分类属性,对数据集进行分裂: step4.判断剩余的数据集是否都属于同一类别,以

Thinking in SQL系列之四:数据挖掘C4.5决策树算法

原创: 牛超   2017-02-11   Mail:[email protected] C4.5是一系列用在机器学习和数据挖掘的分类问题中的算法.它的目标是监督学习:给定一个数据集,其中的每一个元组都能用一组属性值来描述,每一个元组属于一个互斥的类别中的某一类.C4.5的目标是通过学习,积累经验,为后续决策服务. 该算法目前能找到各类版本,C.JAVA.PYTHON.而SQL版本闻所未闻,前篇我有提过,数据处理,SQL为王,如何以SQL的思维来实现C4.5决策树算法是本篇的重点. PS:多年与