决策树基础原理介绍

概览

分类问题

eg:给定了一个餐厅的数据,决策是否需要等待;
在这里插入图片描述

首先将特征属性split,假如先从Res开始,将value是Yes的分成一组,value是No的分成一组,也就是x1,x5,x6,x8,x10,x12值都是Yes,可以分成一组,然后在Res = Yes的组里继续分,假如第二次split的属性是Type,可以看出Type有五个不同值,再将这些值分成5个组,一直分到没有属性可分(也就是一组里面所有的属性均一致)为止。

split属性的顺序

根据确定性才划分分割的顺序。

计算确定性的方法(熵)

在这里插入图片描述

解释:
如果V是一个特征x1全部一致(按照x1分割)的样例点集合,有k个不同的特征对应值,P(Vk)就是y = Vk(y:特征所对应的值)的点的个数除以|V|。H(V)是所有特征值
在这里插入图片描述
的加和。

如果只有两个值(如y = 是/否),则可以表示为:
在这里插入图片描述

Hafter:这是综合考虑左节点和右节点的情况做出的加权平均值
在这里插入图片描述

举例:

引入信息增益

信息量:选择split的好特征。
注:y表分类结果。
以餐厅为例:
Assume we have already performed a few node splits on our original restaurant dataset and we would like to further split a subset using the Type feature, which can take 5 distinct values. So the data points of that node will be split into 5 nodes which we will call E1,E2,E3,E4,E5. Each of those nodes Ek will have pk positive data points (y=yes) and nk negative ones (y=no). Furthermore, let p and n denote the number of positive and negative points of the original node before the split. Then the information gain of the feature Type is defined as follows :
在这里插入图片描述

不确定性升高,信息增益升高。

流程伪代码

在这里插入图片描述

简易流程图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-P28oaShf-1651159685725)(http://127.0.0.1/uploads/1651021827326505258Pasted_image_20220425113522.png)]

建造决策树的具体方案(递归调用 形似二叉树)

如上图所示例子
首先设立一个集合S,包含了所有的样例点,选择根节点;建造叶子节点时或许需要从S中去除一部分节点,比如上图建立根节点Paltrons后,Patrons值为No的节点y值与其他特征值均相同,此时就可以将这些Patrons为No的节点从集合中去除。

具体过程

在节点处所有的特征值均相等且y也相等,就返回叶子节点;
如果不相等,选择一个最好的特征j,设置一个splitting value β,j有左右两个节点,左节点集合Sl里面是所有splitting value Xij < β,右节点集合Sr里面是
splitting value Xij >= β的节点集合。

选择最好split

1.尝试所有的拆分特征方法;
1.对于集合S,设J(S)为S损失函数;
3.选择J(Sr)+J(Sl)最小的方案;选择加权平均最小的方案(|Sr|J(Sr)+|Sl|J(Sl))/(|Sr|+|Sl|)

选择J(S)的方案

糟糕的方案

在这里插入图片描述

该方案将J(S)设置为其他所有值不为S的样例点的个数,上图是两种不同的split(根据不同的特征分割),需要计算J(sunny),也就是如果按照sunny分割,特征值是sunny的都分在一起时的损失函数,左图左节点J(Sl) = 9, 右节点J(Sr) = 1,右图左节点J(Sl) = 5,右节点J(Sr) = 5,这时J(Sr)+J(Sl)都相等,加权平均右图更小,但是根据决策树分类原理,左边的更好(左边的右节点只需要再来一层就可以完全区分开sunny和rainy)。所有该方法不建议使用。

好的方案

算出H(S),S节点为父节点,算出Hafter,选择H(S)-Hafter的值最大的一个方案。
还以上图为例,第一个图方案一计算:

H(Sl) = 在这里插入图片描述

其余H算法相同,算出H(S) = 0.918,H(Sl) = 0.439,H(Sr) = 0.998.
Hafter = 0.793
算出H(S) - Hafter = 0.125.
方案二分割法:H(S) - Hafter = 0.(这种情况就是分割后并没有任何progress)
该方法可以选择出更好的split.

两方案比较

图像比较:

更好的方法

在这里插入图片描述

这种方法可以看出决策树的决策过程其实是不确定(熵)逐渐减小的过程,差距越大,熵减就越显著。这种方法做出的图像是严格的凹函数。

糟糕的方法

在这里插入图片描述

这种方法完全会出现上图的情况,改变Sl,Sr(也即改变了分割方法)差距仍是0,Jafter没有变化。
所以这个方法有时候不适用。

具体方案

选择split的好方法

在这里插入图片描述

上例一共有四种分割,在第一处分割处从左到右扫描,可以获知右边的X有两个,C有两个,然后算出第一处分割的H,然后向右扫描剩下的split,扫描到X,左边的X数量+1,右边X - 1.这样只需要线性时间即可。

给测试样例分类

walk down tree,返回它的最后叶子节点的值。
注意:一直分割到单个叶子节点可能导致过拟合问题。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值