决策树

决策树

提炼步骤:

1、原始数据标签的熵值(根据两类概率计算出)

2、特征分类(如:天气特征分类为晴朗,多云等)后对应的熵值×此类在特征中的统计概率=特征分类后的熵值

3、根据最大差值来决定谁是根节点

 

决策树的惩罚项:即限制树的深度,叶子节点的个数等。惩罚项的具体表达式如下:

这与Xgboost的损失函数项是相同的

 

既可以做分类也可以做回归,如下图的分类树

先拿年龄再拿性别来分类,说明年龄的分类效果更好

节点越多数据被切的次数越多

数据输入后按照决策树一步步往下走

 

问题来了,如何构造决策树

在众多特征中选哪个特征作为根节点?必须有个衡量标准,即熵/不确定性

集合中,不同数越多,熵值越大,取到的数也就越不稳定。

从公式log函数也可以看出,不同数越多,取出某个数的概率越小,log出来的值越大,熵越大

理想情况下,熵值为0。概率与熵值对应图像如下:

横轴概率为0.5可以拿抛硬币来类比,不知道抛出的结果,最终的熵值(不确定性越大)肯定是越大的

信息增益:表示熵值下降多少

10个特征遍历看那个特征使信息增益最大,就将此特征选为根节点

 

实例说明:

接下来就要开始构造决策树了

拿那个特征作为根节点?选择过程如下:

没有分类时的熵值(原始熵的计算)

Outlook分类后对应的熵值乘此类在Outlook的统计概率,将三部分相加后才得到最后的熵值

 

如果ID也是一个特征,拿ID作为根节点,在分类时就会被分为14类

优缺点:因为每类只有一个数据(取此数据概率为1,相当于全是yes或者全是no),所以每个叶子节点的熵值均为0,结果会导致分类后叶子节点的熵值总和为0,这与原熵值的差肯定是最大的(信息增益最大),于是我们就会错误认为ID作为根节点是最好的。但实际情况用ID作为样本的分类毫无意义的

像ID这类特征:特征很稀疏,各种值都不同的情况下容易被选出来作为根节点

为了解决ID3的问题,提出其他分类方法

 

C4.5:信息增益率,信息增益比自身熵值(每个数的对应熵值,求和)。由于信息增益很大时,信息增益率的结果就会很小

公式:信息增益/自身的熵值

 

CART不是用熵值做的,用的GINI系数来衡量

GINI系数:1-概率的平方

如果分类后各类取到的概率很大(概率很大,说明节点处的数据越纯),GINI系数会变为0。所以gini系数越小越好,gini系数越小最终分类效果越好,节点数据越纯

 

打球的例子中,特征都是离散值,按照特征的属性进行分类

如果是连续值,就需要在连续值中找出一个点,通过这个点来进行分枝

 

 

如果特征很多,最终构造的决策树就会很庞大(每个个节点对应一个特征,按照特征的属性范围条件分枝)。如果加上一些参数后,能限制决策树的分枝。分枝过多会出现过拟合(在测试集上模型效果表现的很好,在测试集上很差)

决策树优点便于可视化展示

预剪枝:提前限制树的深度(可以理解为限制特征的数量),叶子节点的个数,叶子节点样本数(当叶子节点满足要求值后停止分枝)

限制叶子节点的个数示意图如下:同样可以简化树模型,当达到限制叶子节点个数后就不会向下分裂了

后减枝:因为已经有分枝了,所以根据前后值来决定

分裂前有一个Cα(T)值,分裂后有一个Cα(T)值

T表示叶子节点个数

C(T)表示:叶子节点的样本数(T)×gini系数C/熵值

①式表示分裂前的Cα(T)值,②式表示分类后的Cα(T)值,若②的值比①小,说明可以分离,反之,不去分裂

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值