机器学习——决策树

1.基本流程

  决策树是是一类常见的机器学习方法,按照二分类或多分类进行分类。决策树是基于树结构来进行决策的,这恰是人类在面临问题时一种很自然的处理机制。例如,我们要对“这是好瓜吗?”这样的问题进行决策时,通常会进行一些列的判断或“子决策”:我们先看“它是什么颜色?”,如果是“青绿色”,则我们再看“它的根蒂是什么形态?”,如果是“蜷缩”,我们再判断“它敲起来是什么声音?”,最后,我们得出最终决策:这是个好瓜。这个决策过程如图1.1所示。

西瓜问题的一颗决策树

 

显然,决策过程的最终结论是我们想要的结果,例如“是”好瓜,或“不是”好瓜;决策过程中提出的每个判定问题都是对某个属性的的“测试”,例如“色泽=?”“根蒂=?”;一般的,一棵决策树包含一个根节点、若干个内部节点和若干个叶节点;叶节点对应于决策结果(如果为分类任务,则结果为样本多的y值,如果为回归任务,结果为平均值),其他每个及诶按则对应于一个属性测试;每个节点包含的样本集合根据试行测试额结果被划分到子节点中;根节点包含样本全集,从根节点到每个叶节点的路径对应了一个判定测试序列。决策时学习的目的是为了产生一颗泛化能力强,即处理未见示例能力强的决策树,其基本流程遵循简单且直观的“分而治之”(divide-and-conquer)策略,如图4.2所示

图1.2 决策树学习基本算法

 

2.划分选择

由算法1.2可知,决策树学习的关键是第8行,即如何选择最优划分属性。一般而言,随着划分过程的不断进行,我们希望决策树的分支节点所包含的样本尽可能属于同一类别,即结点的“纯度”(purity)越来越高。选择最优属性的方法有四种:信息增益、信息增益率、GINI系数,这三种由于分类问题计算纯度,如果是回归问题,则使用MSE来选择属性。

2.1 信息增益

“信息熵”(information entropy)是度量样本集合纯度最常用的一种指标,假定当前样本集合D中第k类样本所占比例为pk(k=1,2,...pk(k=1,2,... | \gamma |),则D的信息熵定义为

Ent(D)的值越小,代表信息量越少,纯度越高。

假定离散属性a有V个可能的取值{a^{1},a^{2},...a^{v}},若使用a对样本集合D进行划分,则会产生V个分支结点,其中第v个分支结点包含了D中所有在属性a上取值为a^{v}的样本,记为D^{v}。信息增益:

其中\left | D^{v} \right |/\left | D \right |代表第V个分支结点所占的权重。

一般而言,信息增益越大,则意味着使用属性a来进行划分所获得的的“纯度提升”越大,因此,我们可以用信息增益来进行决策树的划分属性选择。ID3(ID是iterative Dichotomiser的简称)决策树学习算法及时以信息增益为准则来选择划分属性的。

2.2 增益率

信息增益准则对可能取值数目较多的属性有所偏好,为减少这种偏好可能带来的不利影响,C4.5决策树算法使用“增益率”(gain ratio)来选择最优划分属性。增益率的定义为:

信息增益准则对 可取值数目较少的属性有所偏好,因此C4.5算法并不是直接选择增益率最大的候选划分属性,而是使用了一个启发式,先从候选属性找出信息增益高于平均水平的,再从中选择增益率最高的。

2.3 基尼系数

CART(classification and regression)决策树使用基尼系数(Gini index)来选择最优划分属性,数据D的纯度可用基尼值来度量:

Gini(D)反映了从数据集D中随机抽取两个样本,其类别 标记不一致的概率取值在[0,1]之间,因此Gini(D)越小,则数据集D的纯度越高。

属性a的基尼指数定义为:

因此,我们在划分时选择使得划分后基尼指数最小的属性作为最优属性划分。 

案例:

西瓜数据集

 然后,我们要计算出当前属性集合{色泽、根蒂、敲声、纹理、脐部、触感}中每个属性的信息增益、增益率、Gini系数。以属性“色泽为例”,他有三个可能的取值:{青绿、乌黑、浅白}。若使用该属性对D进行划分,则得到3个子集,分别记为:D1(色泽=青绿),D2(色泽=乌黑),D3(色泽=浅白)。

子集D1包含编号为{1,4,6,10,13,17}6个样例,其中正例占p1=3/6,反例占3/6;D2包含编号为{2,3,7,8,9,15}的6个样例,其中正、反例分别占p1=4/6,p2=2/6;D3包含编号为{5,11,12,14,16}的5个样例,其中正、反例分别占p1=1/5,p2=4/5。

按照信息增益计算的过程:由此可以算出根节点和三个分支结点的信息熵为:

 

按色泽分的信息增益为:

类似的可算出按其他属性分的信息增益: 

显示按照纹理分的信息增益最大,因此按照纹理分。类似的对每个分支结点进行上述操作,最终得到决策树。

按照增益率计算的过程:先选出信息增益高出平均水平的属性,分别为“纹理”和“脐部”

Gain_ratio(D,纹理) = \frac{Gain(D,a)}{IV(a)}(a代表纹理属性)

                               =0.381/-(9/17*log2(9/17)-5/17*log2(5/17)-3/17*log2(3/17)

                                =0.263

同理可算出:

Gain_ratio(D,脐部) = \frac{Gain(D,a)}{IV(a)}(a代表脐部属性)

                               =0.289/-(7/17*log2(7/17)-6/17*log2(6/17)-5/17*log2(5/17)

                                =0.167

纹理的增益率最大,所以按纹理划分,其他节点以此类推。

按照基尼系数计算的过程:

Gini_index(D,色泽)= 6/17*(1-(3/6)²-(3/6)²)+6/17*(1-4/6)²-(2/6)²)+5/17*(1-(1/5)²-(4/5)²)

                              =0.427

同理算出:

Gini_index(D,根蒂)=0.422

Gini_index(D,敲声)=0.424

Gini_index(D,纹理)=0.277

Gini_index(D,脐部)=0.345

Gini_index(D,触感)=0.494

纹理的基尼系数最小,因此按照纹理划分。

1.3 剪枝

剪枝的目的是为了防止过拟合(即树长得太茂盛,过分的分类),剪枝分为预剪枝和后剪枝。

预剪枝是在树生成前设置好树的深度或者判断此次分类是否提高验证集准确度,如果不能则不进行分类。

后剪枝是在树生成后,从后往前对结点进行判断,如果减掉这个分支,验证集准确度能否提高,如果能提高则进行剪枝,如果不能则不剪枝。

未剪枝的决策树
预剪枝的决策树

 

后剪枝决策树

 

文章转自西瓜书-周志华

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
决策树算法是一种广泛应用于分类和回归的机器学习算法,它基于树形结构对样本进行分类或预测。决策树算法的主要思想是通过一系列的判断来对样本进行分类或预测。在决策树中,每个节点表示一个属性或特征,每个分支代表该属性或特征的一个取值,而每个叶子节点代表一个分类或预测结果。 决策树算法的训练过程主要包括以下步骤: 1. 特征选择:根据某种指标(如信息增益或基尼系数)选择最优的特征作为当前节点的分裂属性。 2. 决策树生成:根据选择的特征将数据集分成若干个子集,并递归地生成决策树。 3. 剪枝:通过剪枝操作来提高决策树的泛化性能。 决策树算法的优点包括易于理解和解释、计算复杂度较低、对缺失值不敏感等。但是,决策树算法也存在一些缺点,如容易出现过拟合、对离散数据敏感等。 下面是一个决策树算法的案例:假设我们要根据一个人的年龄、性别、教育程度和职业预测其收入水平(高于或低于50K)。首先,我们需要将这些特征进行编码,将其转换为数值型数据。然后,我们可以使用决策树算法对这些数据进行训练,并生成一个决策树模型。最后,我们可以使用该模型对新的数据进行分类或预测。例如,根据一个人的年龄、性别、教育程度和职业,我们可以使用决策树模型预测该人的收入水平。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值