决策树

概述

决策树是在已知各种情况发生概率的基础上,通过构成决策树来求取净现值的期望值大于等于零的概率,评价项目风险,判断其可行性的决策分析方法,是直观运用概率分析的一种图解法。由于这种决策分支画成图形很像一棵树的枝干,故称决策树。在机器学习中,决策树是一个预测模型,他代表的是对象属性与对象值之间的一种映射关系。决策树是一种类似于流程图的树结构。其中,每个内部节点(非树叶结点)表示在一个属性上的测试,每个分枝代表该测试的一个输出,而每个树叶结点(或终端结点)存放一个类标号。树的最顶层结点是根结点。下图是一个典型的决策树:


上述决策树表述了用户购买电脑的决策过程。涉及到的属性包括age(代表用户的年龄段)、student(代表是否是学生用户)和credit_rating(用户的信用度)。在进行决策时,首先对age属性进行判断,如果用户的年龄段属于middle_aged,则用户就会购买电脑;如果用户的年龄段属于youth,则需要再对student属性进行判断;如果用户的年龄段属于senior,则需要对credit_rating属性进行判断。以上只是完成了在age属性上的决策,如果决策路线未到达树叶结点,需要根据用户的属性信息,不断进行属性决策,直到到达树叶结点,从而得到目标决策。

决策树生成

决策树算法涉及三个参数:数据分区(D)、属性列表(attribute_list)、属性选择函数(attribute_selection_method)。

算法:Generate_decision_tree。由数据分区D中的训练元组产生决策树。

输入: - 数据分区D,训练元组和它们对应类标号的集合。 -attribute_list,候选属性的集合。 -Attribute_selection_method,一个确定“最好地”划分数据元组为个体类的分裂准则的过程。这个准则由分裂属性(splitting_attribute)和分裂点或划分子集组成。

输出:一颗决策树。

方法Generate_decision_tree(D,attribute_list):

创建一个结点N;
if D中的元组都在同一类C中 then
    返回N作为叶结点,以类C标记;
if attribute_list为空 then
    返回N作为叶结点,标记为D中的多数类;
使用Attribute_selection_method(D, attribute_list),找出“最好地”splitting_criterion;  // 分裂准则
用splitting_criterion标记结点N;
if splitting_attribute是离散值的,并且允许多路划分 then
    attribute_list = attribute_list - splitting_attribute;
for splitting_criterion的每个输出j
    设D(j)是D中满足输出j的数据元组的集合;
    if D(j)为空 then
        加一个树叶到结点N,标记为D中的多数类;
    else
        加一个由Generate_decision_tree(D, attribute_list)返回的结点到N;
endfor
返回N;

在决策树的生成过程中,对于attribute_list为空(即用于决策的属性数不足)和属性输出所对应的集合为空这两种情况,都是以D的多数类作为标记。这里表达的含义就是,对于无法进行决策的分支,采取多数表决策略,从而使正确决策的概率达到最大。

假设给定训练集D,用n表示用于决策的属性个数,|D|是训练集D中的元组个数,那么基于上述算法,对训练集D进行决策树学习的计算复杂度为O(n*|D|*log(|D|))。

属性选择度量

属性选择度量是一种选择分裂准则。基于属性选择度量,可以把给定的数据集合进行拆分。如果拆分后的每个数据分区的类标号各不相同,即实现了不同类别的完全划分,则这种情况下选择的分裂属性是最好的。当然,这是理想中的结果,在实际的数据分割中,基本不可能仅仅通过单一属性就实现不同类别之间的完全划分,只能够达到一种近似的完全划分。所以,需要通过属性选择度量将不同属性的划分效果进行比较,将度量效果最好的属性作为分裂属性。下面就介绍三种比较常用的属性选择度量算法:

一、信息增益

信息增益的原理是选择能为分类器带来最多信息量的属性作为优先的分裂属性。通过计算原数据集的总信息量与通过分裂属性分裂后的各数据集的信息量总和之差,来判断该分裂属性带来了多少信息量的减少。带来的信息量减少越多,说明该分裂属性具有越好的分类效果。

在迭代的二分器算法(即ID3)中将信息增益作为属性选择的度量方式。谈到信息增益,首先就必须介绍一下信息熵的概念。信息熵是由香农首先提出的一种度量信息量大小的概念。信息熵是对信息的量化。

信息熵的计算公式如下:

这里的D表示数据分区,是D中任意元组属于类的非零概率,并用估计。m表示属性不同取值的个数。

如果我们想按照训练集D中的某个属性A来划分,就需要利用下面的方法来计算:


这里的v表示属性A取值的个数,表示属性A的某个取值将D划分的一个分区。

通过上面两个公式,就可以求出对于属性A,其所对应的信息增益值的大小:


通过计算属性A的信息增益值,可以获得通过属性A进行划分所得到信息量的大小。即通过属性A的取值,我们能够获得多少对分类有用的信息。所以,信息增益越大,说明该属性对于分类的贡献就越大。

在属性选择中,优先选择信息增益较大的属性作为分裂属性,可以确保找到一颗简单的(但不一定是最简单的)树。

例子:

训练集D(buys_computer作为类标号属性):


第一步:计算对训练集D进行分类所需要的期望信息

由于buys_computer只有yes和no两种取值,所以m=2。其中,取值为yes的有9个,取值为no的有5个。所以期望信息为:


第二步:分别计算不同属性的期望信息需求

1.对于属性age:m=3,youth的个数为5,其中有2个yes和3个no;middle_aged的个数为4,其中有4个yes和0个no;senior的个数为5个,其中有3个yes和2个no。

所以,训练集D根据属性age进行划分,分类所需要的期望信息为:


因此,根据属性age划分,所对应的信息增益值为:


2.对其他属性分别按照上述方法计算其对应的信息增益值。通过计算可以得到:


第三步:比较四种属性所对应的信息增益值,选择值最大的作为此次分裂步骤的分裂属性。

通过比较发现属性age的信息增益值最大,所以,将属性age作为这次分裂步骤的分裂属性。这样,就可以得到下面的决策树:


第四步:对三个不同的数据分区,按照上面的方法分别进行属性选择,直到出现以下三种终止条件的任何一个:

(1)分区的所有元组都属于同一类别。

(2)没有剩余属性可以用来进一步划分元组。

(3)给定的分枝没有元组。

最后,对于连续值的属性,就需要发现属性的最佳分裂点,实现属性值的离散化。假设属性A具有m个给定值,一种可行的确定分裂点的方法是:首先,对m个属性进行排序,然后,分别计算相邻两个属性值的平均数。这样就会得到m-1的候选分裂点。接下来,就对这m-1值分别计算期望信息,选择具有最小期望信息的值作为属性A的分裂点。这种划分方法是将属性A分割成了两部分。

二、增益率

采用信息增益的属性选择度量方式是存在一定的问题的。它更倾向于选择具有多输出的属性作为分裂属性。即,一个属性的不同取值越多,它就更容易被作为分裂属性。如果上面的例子中,我们将记录编号作为一个属性,则该属性所对应的信息增益值为0.940,可以发现记录编号所需要的信息量为0。这样该属性所对应的信息增益值肯定也是最大的。但是,选择该属性作为分裂属性没有任何意义,实际上,它只是对所有的可能结果进行了穷举。为了克服这种偏倚,在C4.5算法中,采用了一种新的属性选择度量方法:信息增益率。

增益率是对信息增益进行了规范化。首先,它也需要按照上面的方法计算每个属性的信息增益。然后,它额外的引入了一个称为“分裂信息”的量,其计算公式如下:


该值代表由训练数据集D划分成对应于属性A测试的v个输出的v个分区产生的信息。

通过计算分裂信息,就可以得到信息增益率的值,其计算公式如下:


选择具有最大增益率的属性作为分裂属性。

增益率也存在一定的问题,当分裂信息的值趋向于零,即增益率的分母趋向于零,会使得增益率的值变得不稳定。一种可行的解决方法是:在属性选择时,首先根据增益率选择那些信息增益较大的属性(通常设定为高于平均值),然后,对于信息增益较小的属性,就根据信息增益来进行选择。

例子(同信息增益中的例子):

第一步:按照信息增益的步骤,求出每个属性的信息增益值。

具体计算结果参照信息增益中的数据。

第二步:分别计算每个属性的分裂信息值

1.对于属性income:取值为low的有4个,取值为medium的有6个,取值为high的有4个。所以其分裂信息值为:


2.按相同的方法,分别计算其他属性的分裂信息量

通过计算可以得到:


第三步:分别计算不同属性的信息增益率


通过比较各属性的信息增益率,发现属性age所对应的信息增益率最大。所以,选择属性age作为分裂属性。

三、基尼指数(Gini指数)

相对于同时期的ID3和C4.5算法,CART决策树算法采用了另一种属性选择度量方法:基尼指数(Gini指数)。

基尼指数度量的是数据分区或训练元组集D的不纯度,其计算公式为:


其中,是D中元组属于类的概率,并用估计。m表示属性不同取值的个数。

基尼指数考虑每个属性的二元划分。假设对于属性A给定的取值划分为,则在该划分的条件下,D的基尼指数为:


上述公式只是计算了属性A的一种划分下的基尼指数,如果属性A具有r个不同的取值,其所对应的不同取值划分为种(去除了全集和空集)。所以,就需要对每种划分都进行基尼指数的计算。然后,选择基尼指数最小的取值划分作为该属性的分裂子集。

实现了对各属性分裂自己的确定,接下来就需要来确定分裂属性。对于属性A,通过下面的公式来衡量其对数据区域分裂的贡献:


该式衡量了属性A降低数据区域D的不纯度的能力。所以,该值越大,说明属性A对于区别数据区域的贡献就越大。因此,选择最大化不纯度降低(即最小基尼指数)的属性作为分裂属性。

例子(同信息增益中的例子):

第一步:计算整个训练集的不纯度

由于buys_computer只有yes和no两种取值,所以m=2。其中,取值为yes的有9个,取值为no的有5个。所以不纯度为:


第二步:分别计算不同属性划分下的不纯度

1.对于属性income:总共有三种不同的取值,即{low,medium,high}。所以,对income的可能取值划分有:{low,medium}和{high},{low,high}和{medium},{medium,high}和{low}。共6种取值划分,3种取值划分对。下面,就分别对这3种情况下的取值对进行计算基尼指数:

(1)首先,对于{low,medium}和{high}的划分,{low,medium}中对应10条记录,其中有7个yes,3个no。{high}中对应4条记录,其中有2个yes,2个no。所以,该划分下的基尼指数为:


(2){low,high}和{medium}:


(3){medium,high}和{low}:


通过比较可以发现,在{low,medium}和{high}划分下的基尼指数最小,为0.443。所以,属性income的最佳划分为:{low,medium}和{high}。

2.对其他属性分别求解最小基尼指数

按照上述方法,分别对属性age、student、credit_rating进行计算基尼指数。得到:

属性age在{youth,senior}和{middle_aged}下,得到最佳划分,最小基尼指数为0.357。

属性student和属性credit_rating本身就是二元属性,所以只有一种划分。所对应的最小基尼指数分别为0.367和0.429。

第三步:计算不同属性的最大不纯度降级


通过计算可以发现,属性age的不纯度降低最大。所以,选择属性age作为分裂属性,其中分裂规则为{youth,senior}和{middle_aged}。

四、其他属性选择度量

以上三种属性选择度量方式是比较常用的方法。它们都不是无偏的。

信息增益偏向于多值属性。

信息增益率倾向于产生不平衡的划分,可能会导致其中一个分区比其他分区小得多。

基尼指数偏向于多值属性,还倾向于导致相等大小的分区和纯度。

属性选择度量方法还有:

1.基于卡方检验的属性选择度量

2.C-SEP

3.G-统计量

4.基于最小描述长度(MDL)原理的属性选择度量

5.多元划分(即元组的划分基于属性的组合而不是单个属性)

五、属性选择度量的选择

目前所用到的属性选择度量方法都不是无偏的。决策树的时间复杂度随着树的高度指数增加。同时,对于较矮的树,更有可能产生较高的错误率。所以,对于属性选择度量方法的选择很难提供一个可以参考的标准。就目前不同属性选择度量的表现来说,大部分度量都能产生较好的结果。

转载于:https://www.cnblogs.com/ritchiewang/p/5767426.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
蛋白质是生物体中普遍存在的一类重要生物大分子,由天然氨基酸通过肽键连接而成。它具有复杂的分子结构和特定的生物功能,是表达生物遗传性状的一类主要物质。 蛋白质的结构可分为四级:一级结构是组成蛋白质多肽链的线性氨基酸序列;二级结构是依靠不同氨基酸之间的C=O和N-H基团间的氢键形成的稳定结构,主要为α螺旋和β折叠;三级结构是通过多个二级结构元素在三维空间的排列所形成的一个蛋白质分子的三维结构;四级结构用于描述由不同多肽链(亚基)间相互作用形成具有功能的蛋白质复合物分子。 蛋白质在生物体内具有多种功能,包括提供能量、维持电解质平衡、信息交流、构成人的身体以及免疫等。例如,蛋白质分解可以为人体提供能量,每克蛋白质能产生4千卡的热能;血液里的蛋白质能帮助维持体内的酸碱平衡和血液的渗透压;蛋白质是组成人体器官组织的重要物质,可以修复受损的器官功能,以及维持细胞的生长和更新;蛋白质也是构成多种生理活性的物质,如免疫球蛋白,具有维持机体正常免疫功能的作用。 蛋白质的合成是指生物按照从脱氧核糖核酸(DNA)转录得到的信使核糖核酸(mRNA)上的遗传信息合成蛋白质的过程。这个过程包括氨基酸的活化、多肽链合成的起始、肽链的延长、肽链的终止和释放以及蛋白质合成后的加工修饰等步骤。 蛋白质降解是指食物中的蛋白质经过蛋白质降解酶的作用降解为多肽和氨基酸然后被人体吸收的过程。这个过程在细胞的生理活动中发挥着极其重要的作用,例如将蛋白质降解后成为小分子的氨基酸,并被循环利用;处理错误折叠的蛋白质以及多余组分,使之降解,以防机体产生错误应答。 总的来说,蛋白质是生物体内不可或缺的一类重要物质,对于维持生物体的正常生理功能具有至关重要的作用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值