分类树基本思想

分类树的介绍

CART分类树类似于树枝,从根节点往下长出树枝,末尾是树叶。注意CART是二叉树,如果一个特征取值不止两个,那么就要将特征数值话之后,选择一个值进行二划分,形成二叉树。另外注意每一个节点里面存储的是其父节点按照某规则分类之后该节点分到的数据,如果这个节点里面的数据都是同一类别的,那么这个节点就可以不用继续划分了,成为一个叶子节点。如果这个节点里面还混杂类别,那么可以考虑继续划分。以此类推下去。

原理

给一个问题,某个人今天会不会出去打高尔夫?第一直觉就是查一查以往一个月的数据,得知这个人过去一个月每天打高尔夫的记录。把这个事件看成随机变量A,A有两个取值,一个是0一个是1,过去一个月有15天打(1),十五天不打(0)。那么这个随即变量的不确定性(熵)就是 H ( X ) = − ∑ i = 1 n P ( X = X i ) l o g 2 P ( X = X i ) = 1 H(X)=-\sum_{i=1}^nP(X=X_i)log_2P(X=X_i)=1 H(X)=i=1nP(X=Xi)log2P(X=Xi)=1如果我还能知道一些信息,比如过去30天,我知道每天下雨没下雨,并且对应每天去不去打球的记录我也知道。我先按照下雨不下雨把随机变量A的记录分开,在下雨天里面有去打球的也有不去打球的,但是不去打球的偏多;在不下雨天里面也一样,去打球的天数偏多。然后我看看今天下不下雨,今天下雨,那我就去下雨的那些天的记录中看一下,由于下雨天里面10天有9天可能都不出去打球,所以我可以判断今天就不会去打球了。这是一个判断的过程。实际上,可以计算一下下雨天里面记录的熵,由于它有了比较明显的偏向,所以熵的值肯定是比原始数据的熵值小的。但是这是从今天一天出发,因为我知道今天下雨了,那么从整体上来看呢?我知道了下雨不下雨的信息之后,可以计算出下雨天和不下雨天的比重,也就是1/3下雨,2/3不下雨,我再将下雨天记录里面的事件A的熵计算一下,把不下雨天记录里面的事件A的熵计算一下,然后乘上两者的比重,就能得到根据下雨不下雨信息得到划分之后的整体的平均熵,也叫条件熵。

总体来说,根据额外的信息将原始数数划分之后,每一堆数据里面会有较原始数据更加明显的偏向,也就是每一堆数据里面某一类的数据比重变大,那么这一堆数据的熵就会降低,每一堆的熵都比不划分数据集的熵低,那么平均起来,划分之后数据的熵就会变低了,也就是不确定性变小了。

根据不同的信息对数据进行划分之后,熵的值变化大小不一样,根据有的信息划分,信息熵可能直接变成0,根据别的信息划分,熵可能没多大变化,所以这就区分了信息的有用没用。分类树使用了某一个特征划分之后这个特征就没用了,因为划分之后的每一堆都会拥有相同的这个特征,再想继续划分,就得找别的特征了。所以每次都找让熵降低最大的特征进行划分,原因也很简单。我想对数据进行划分,但是我不想让判断的过程很复杂,所以每次都找可以让数据不确定性降低最大的特征来划分,这样判断过程就尽可能简单了。其实这样也是一个特征重要性计算的过程。

当然,可能会出现我把所有的特征都用完了数据还是混杂有不同的类的情况,这时候就没法继续划分了,索性就选择将这里面类别最多的类作为叶子节点的划分结果,或者我设置一个阈值,最大类别的占比大于这个阈值我将这个节点设置为该类,否则我就不判别了。

基尼不纯度

判别过程除了使用熵表示不确定性,还可以使用别的标准表示不确定性吗?基尼不纯度。基尼不纯度表示样本集合中随机选择一个,它被分错的概率。 G i n i ( p ) = ∑ k = 1 m p k ( 1 − p k ) = 1 − ∑ k = 1 m p k 2 Gini(p)=\sum_{k=1}^mp_k(1-p_k)=1-\sum_{k=1}^mp_k^2 Gini(p)=k=1mpk(1pk)=1k=1mpk2理解这个公式就是, p k p_k pk表示选择每一种类的概率,那么 1 − p k 1-p_k 1pk就是将其分类错误的概率。求和就是平均的分错概率了。基尼不纯度肯定不可能等于1,要小于1,但是其越大,说明这个变量越不纯啊!如果一个随机变量99%可能取1,1%的可能取0,那么我随机选择一个值为1的概率为99%,然后我将其分类成0的概率又是1%,如果我取到0了,虽然将其分类错误的概率是99%,但是取到0的概率是1%。这个样本的基尼不纯度表示为0.990.01+0.010.99=0.0198。如果另外一个样本50%取0,50%取1,那么这个基尼不纯度就是0.50.5+0.50.5=0.5。所以就是,基尼不纯度越大,那么这个变量取值具有的倾向性就越小,也就是熵越大。那么我们就可以选择让基尼不纯度降低最大的特征进行划分。

注意

这里只是介绍分类树的一个基本的思想,具体来说,分类树还有不同的算法,id3,c45,cart等。其中id3算法是比较基础的算法,比较符合这里说的分类树的基本思想,c45和cart算法都会在这个算法上进行一定的改进。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值