机器学习-决策树的基本思想

机器学习-决策树的基本思想

决策树算法是最早的机器学习算法之一。

算法框架

1.决策树主函数

各种决策树的主函数都大同小异,本质上是一个递归函数。该函数的主要功能是按照某种规则生长出决策树的各个分支节点,并根据终止条件结束算法。一般来讲,主函数需要完成如下几个功能。

(1)输入需要分类的数据集和类别标签

(2)根据某种分类规则得到最优的划分特征,并创建特征的划分节点--计算最优特征子函数

(3)按照该特征的每个取值划分数据集为若干部分--划分数据集子函数

(4)根据划分子函数的计算结果构建出新的节点,作为树生长出的新分支

(5)检验是否符合递归的终止条件

(6)将划分的新节点包含的数据集和类别标签作为输入,递归执行上述步骤。

2.计算最优特征子函数

计算最优特征子函数是除主函数外最重要的函数。每种决策树之所以不同,一般都是因为最优特征选择的标准上有所差异,不同的标准导致不同类型的决策树。如:ID3的最优特征选择标准是信息增益、C4.5是信息增益率、CART是节点方差的大小等。

在算法逻辑上,一般选择最优特征需要遍历整个数据集,评估每个特征,找到最优的那一个特征返回。

3.划分数据集函数

划分数据集函数的主要功能是分隔数据集,有的需要删除某个特征轴所在的数据列,返回剩余的数据集;有的干脆将数据集一分为二。

4.分类器

所有的机器学习算法都要勇于分类或回归预测。决策树的分类器就是通过遍历整个决策树,使测试集数据找到决策树中叶子节点对应的类别标签。这个标签就是返回的结果。

信息熵测度

特征集中的数据常常表现为定性字符串数据,称为标称数据,使用这些数据的算法缺乏泛化能力,在实际计算中需要将这些数据定量化为数字,也就是所谓的离散化。

数据特征的划分过程是一个将数据集从无序变为有序的过程。这样我们就可以处理特征的划分依据问题,即对于一个由多维特征构成的数据集,如何优选出某个特征作为根节点,如何每次都选出特征集中无序度最大的那列特征作为划分节点。

为了衡量一个事物特征取值的有(无)序程度,引入信息熵。

信息熵拆分:信息和熵

熵(Entropy)是德国物理学家克劳修斯在1850年创造的一个术语,用来表示任何一种能量在空间中分布的均匀程度。能量分布的越均匀,熵就越大。

信息就是对不确定性的消除。现实中,信息可以理解为系统从信源的消息转换的状态。在概率中我们称它是一个随机事件。通常,一个信源发送出什么事件是不确定的,可以根据其出现的概率来度量。概率越大,出现机会越多,不确定性小;概率越小,出现机会越少,不确定性越大。

不确定性函数I就称为事件的信息量,是事件U发生概率p的单调递减函数;两个独立事件所差生的不确定性应等于各自不确定性之和,即I(p1,p2) = I(p1) + I(p2),这称为可加性。同时满足这两个条件的函数I是对数函数,即

I(U) = log(1/p) = -log(p)

在一个信源中,不能仅考虑某一单个事件发生的不确定性,而需要考虑信源所有可能情况的平均不确定性。若信源事件有n种取值:U1...Ui....Un,对应概率为p1...pi...pn,且各个事件的出现彼此独立。这时,信源的平均不确定性应当为单个符号不确定性-log pi的统计平均值(E),可称为信息熵,即

信息熵是事物不确定性的度量标准,也称为信息的单位或“测度”。在决策树中,它不仅能用来度量类别的不确性,也可以用来度量包含不同特征的数据样本与类别的不确定性。即某个特征列向量的信息熵越大,就说明该向量的不确定性程度越大,即混乱程度越大,就应优先考虑从该特征向量着手来进行划分。信息熵为决策树的划分提供了最重要的依据和标准。

首先,我们使用信息熵来度量类别标签对样本整体的不确定性。设S是s个数据样本的集合。假定类别标签具有m个不同值,定义m个不同类Ci(i=1,2,...,m)。设si是类Ci中的样本数。对一个给定的样本分类所需要的信息熵由下式给出

其中pi是任意样本属于Ci的概率,并用pi = si/|S|估计

接下来,我们使用信息熵来度量每种特征不同取值的不确定性。

设A具有v个不同值{a1,a2,...,av}。可以用特征A将S划分为v个子集{S1,S2,...Sv}。其中,Sj包含S中这样一些样本:它们在A上具有值aj。如果选A作测试特征,即最优划分特征,那么这些子集就是S节点中生长出来的决策树分支。设sij是子集Sj中类Ci的样本数。由A划分成子集的熵或期望信息由下式给出:

其中是第j个子集的权,并且等于子集中的样本个数除以S中的样本总数。其信息熵值越小,子集划分的纯度越高。

其中,pij = sij/|Sj|是Sj中的样本属于类Ci的概率。

最后,我们使用信息增益来确定决策树分支的划分依据。它是决策树某个分支上整个数据集信息熵与当前节点信息熵的差值,用Gain(A)表示,那么在A上的分支将获得的信息熵增益就是

Gain(A) = I(s1,s2,...,sm) - E(A)

它是由于知道属性A的值而导致的熵的期望压缩。具有最高信息增益的特征就可选作给定集合S的测试属性。创建一个节点,并以该特征标记,对特征的每个值创建分支,并据此划分样本。

原文地址:https://www.cnblogs.com/EnzoDin/p/12417184.html

时间: 2024-07-31 14:05:15

机器学习-决策树的基本思想的相关文章

机器学习—— 决策树(ID3算法)的分析与实现

KNN算法请参考:http://blog.csdn.net/gamer_gyt/article/details/47418223 一.简介         决策树是一个预测模型:他代表的是对象属性与对象值之间的一种映射关系.树中每个节点表示某个对象,而每个分叉路径则代表的某个可能的属性值,而每个叶结点则对应从根节点到该叶节点所经历的路径所表示的对象的值.决策树仅有单一输出,若欲有复数输出,可以建立独立的决策树以处理不同输出. 数据挖掘中决策树是一种经常要用到的技术,可以用于分析数据,同样也可以用

机器学习-决策树实现-python

今天翻自己的书库的时候,才发现了之前买的一本<机器学习导论>.随手翻了翻,就直接看到了之前看到的决策树实现的问题理论. 闲来无事,也就得写点代码来play 一下: 决策树的概念想必大家都十分熟悉,特别想我们小时候玩的跳方格的游戏.或者说我们之前玩的你猜我猜的游戏,猜不对继续猜,总有一天你会猜对额 为了确定从哪一个特征来进行判别,我们需要一个衡量标准来分类. 1…香农熵 2…信息增益 那我们来实现第一个……香农熵 from math import log def calcShannonEnt(d

机器学习——决策树

1.介绍 决策树是一种依托决策而建立起来的一种树.在机器学习中,决策树是一种预测模型,代表的是一种对象属性与对象值之间的一种映射关系,每一个节点代表某个对象/分类,树中的每一个分叉路径代表某个可能的属性值,而每一个叶子节点则对应从根节点到该叶子节点所经历的路径所表示的对象的值 输入:一组对象属性 输出:对象值(分类算法中得到某个类别) 决策树中间计算过程: 统计学习方法中根据下表贷款数据表生成的决策树如下,当给定一个人的特征属性之后就能判断能不能给他贷款. 2.特征选择 看到上面的第一张决策树的

机器学习——决策树,DecisionTreeClassifier参数详解,决策树可视化查看树结构

0.决策树 决策树是一种树型结构,其中每个内部节结点表示在一个属性上的测试,每一个分支代表一个测试输出,每个叶结点代表一种类别. 决策树学习是以实例为基础的归纳学习 决策树学习采用的是自顶向下的递归方法,其基本思想是以信息熵为度量构造一棵熵值下降最快的树.到叶子节点的处的熵值为零,此时每个叶结点中的实例都属于同一类. 1.决策树学习算法的特点 决策树算法的最大优点是可以自学习.在学习的过程中,不需要使用者了解过多知识背景,只需要对训练实例进行较好的标注,就能够进行学习了. 在决策树的算法中,建立

机器学习-决策树 Decision Tree

咱们正式进入了机器学习的模型的部分,虽然现在最火的的机器学习方面的库是Tensorflow, 但是这里还是先简单介绍一下另一个数据处理方面很火的库叫做sklearn.其实咱们在前面已经介绍了一点点sklearn,主要是在categorical data encoding那一块.其实sklearn在数据建模方面也是非常666的.一般常用的模型都可以用sklearn来做的.既然它都这么牛逼了,咱们为啥还要学TensorFlow呢?其实主要的原因有两个,一是因为Google在流量方面的强势推广,导致绝

机器学习-决策树

一.简介 决策树学习是一种逼近离散值目标函数的方法,在这种方法中学习到的函数被表示为一棵决策树. 二.决策树的表示法 决策树通过把实例从艮节点排列到某个叶子结点来分类实例,叶子结点即为实例所属的分类.树上的每一个结点指定了对实例的某个属性的测试,并且该结点的每一个后继分支对应于该属性的一个可能值.分类实例的方法是从这棵树的根节点开始,测试这个结点的属性,然后按照给定实例的属性值对应的树枝向下移动.然后这个过程在以新结点的根的子树上重复. 决策树对应表达式: 三. 举例 首先计算四个属性的信息增益

机器学习之KNN算法思想及其实现

从一个例子来直观感受KNN思想 如下图 , 绿色圆要被决定赋予哪个类,是红色三角形还是蓝色四方形?如果K=3,由于红色三角形所占比例为2/3,绿色圆将被赋予红色三角形那个类,如果K=5,由于蓝色四方形比例为3/5,因此绿色圆被赋予蓝色四方形类.         从这个例子中,我们再来看KNN思想: 1, 计算已知类别数据集合中的点与当前点之间的距离(使用欧式距离公司: d =sqrt(pow(x-x1),2)+pow(y-y1),2) 2, 按照距离递增次序排序(由近到远) 3, 选取与当前点距

机器学习-决策树最优类别属性选择的三个方法

本文所用符号: \(D\):所有样本,如<西瓜书>中所有的西瓜样本 \(a\):用来划分样本的类别属性,a有V个可取值{\(a^1,a^2 \dots , a^V\)},如若用a表示"色泽",则a的取值是{\(a^1=青绿,a^2=乌黑,a^3=浅白\)},此时\(V=3\) \(D^v\):用a对样本D进行划分后属于\(a^v\)的样本子集 \(|y|\):\(y\)属性可取个数,下文中用y表示模型最终划分的结果集,如西瓜书中的{好瓜,坏瓜} 信息增益 使用信息熵\[En

【机器学习】随机初始化思想神经网络总结

之前在进行梯度下降时,通常我们让Θ等参数为0,这样的做法在逻辑回归中还是可行的,但是在神经网络中,如果你让所有的参数都初始化为0,这将意味着第二层的所有的激活单元都会有相同的值,同理,如果我们初始化所有的参数都是一个非0的数,结果也是一样的. 例如在设置初始化参数Θ时,可以用如下方法: Theta1 = rand(10,11) * (2 *INIT_EPSILON)-INIT_EPSILON 小结一下使用神经网络时的步骤:网络结构:第一件要做的事是选择网络结构,即决定选择多少层以及决定每层分别有