码迷,mamicode.com
首页 > 其他好文 > 详细

常见树模型节点分裂方式总结

时间:2020-08-27 17:03:55      阅读:126      评论:0      收藏:0      [点我收藏+]

标签:集合   优化   div   依赖   imageview   img   load   度量   math   

信息增益是树模型,比如ID3算法用来寻早最优特征分割点的计算标准了解信息增益之前, 需要了解熵

信息增益与熵(entropy)有关,在概率论中,熵是随机变量不确定性的度量,熵越大,随机变量的不确定性就越大;假设\(X\)是取有限个值的离散随机变量,其概率分布为:

\[P(X=x_i)=p_i,i=1,2,3,...,n \]

则,熵的定义为:

\[H(X)=-\sum_{i=1}^{n}p_i*\log{p_i}$$一般取自然对数$e$为底数 值得注意的是,熵实际上是随机变量$X$的分布的泛函数,它并不依赖$X$的实际取值,而仅仅依赖$X$的概率分布,所以它又可以被记作: $$H(p)=-\sum_{i=1}^{n}p_i*\log{p_i}\]

其中, \(n\)表示\(X\)\(n\)种不同的取值, 这个值一般是离散的. \(p_i\)表示为\(X\)取到值为\(i\)的概率.\(log\)一般是自然底数
考虑如下数据集\(D\):

技术图片
那么整个数据集的熵就是正类和负类的熵之和

\[Entropy(D) =-(\frac{4}{9} * \log \frac{4}{9} + \frac{5}{9} * \log\frac{5}{9})=0.6869 \]

信息增益

信息增益可以理解为分类前的信息熵减去分类后的信息熵

条件熵

多个变量的熵叫联合熵, 比如两个变量\(X,Y\)的联合熵就表示为:

\[H(X,Y)=-\sum_{i=1}^{n}p_{(x_i,y_i)}\log p_{(x_i,y_i)} \]

类似于条件概率,熵同样也存在着条件熵, 条件熵描述了知道某个变量以后, 剩下的变量的不确定性, 其表达式如下:

\[H(X|Y)=-\sum_{i=1}^{n}p_{(x_i,y_i)}\log p(x_i|y_i) \]

\(H(X)\)度量了\(X\)的不确定性, \(H(X|Y)\)度量了知道\(Y\)后,\(X\)的不确定性, 那么\(H(X)-H(X|Y)\)度量的可以理解为:知道\(Y\)的基础上, \(X\)不确定性减少的程度,我们记为\(I(X,Y)\),信息增益如图如图:
技术图片
假定当前样本集合\(D\)中,第\(k\)类样本所占比例为\(p_k(k=1,2,3...,|y|)\), 则\(D\)的信息熵定义为:

\[Ent(D)=-\sum_{k=1}^{|y|}p_k \log p_k \]

假定离散属性\(a\)\(V\)个可能的取值\({a^1,a^2...a^v}\), 若使用\(a\)来对样本集进行划分,则会产生\(V\)个分支结点, 也就是说, ID3构建的决策树, 是多叉树, 那么它的信息增益就是

\[Gain(D,a) = Ent(D)-\sum_{v=1}^{V} \frac{|D^v|}{|D|}Ent(D^v) \]

我们计算特征\(a_3\)的信息增益, 因为\(a_3\)是连续变量. 我们在处理的时候, 一般将连续的变量离散化, 或者可以通过二分法将数据分为2个集合, 那么我们有划分点的集合:

\[T_a = {\frac{a^i+a^{i+1}}{2}}, i\in{1,2...,n-1} \]

通常,使用二分法的时候, 需要对特征进行排序, 这样是为了简化计算,避免重复的计算
经过排序后, 数据变为:

1 3 4 4 5 6 7 7 8
+ - + + - - - + -

假设我们以排序后的第一个样本和第二个样本进行分割, 那么我们可以得到分割点为(1+3)/2=2
大于2的样本只有1个, 小于2的样本有8个,考虑上正负类的结果:

\[Ent(D, a_3<2)=-(\frac{1}{1} * \log \frac{1}{1} +\frac{0}{1} * \log \frac{0}{1} ) \Ent(D, a_3>2)=-(\frac{3}{8} * \log \frac{3}{8} +\frac{5}{8} * \log \frac{5}{8} )\Ent(D,a_3,2) = \frac {1}{9}*Ent(D,a_3<2)+\frac{8}{9}*Ent(D,a_3>2) \]

按照这个步骤, 我们能计算出\(a_3\)特征的每个分裂点的熵, 我们选择熵最小的作为分裂结点, 因为这样能导致信息增益最大
假设我们的分裂结点刚好是2, 那么\(a_3\)特征的信息增益为:

\[Gain(D,a)=Ent(D)-Ent(D,a_3,2) \]

Gini系数

假设有\(K\)个类,第\(k\)个类的概率为\(p_k\), 则基尼系数的表达式为:

\[Gini(p)=\sum ^{K}p_k(1-p_k)=1-\sum_{k=1}^{K}p_k^2 \]

对于二分类问题, 则公式可以简化为: \(Gnini(p)=2p(1-p)\), p代表属于第一类样本的概率
对于给定的样本集合\(D\), \(K\)个类, 第\(k\)个类别的数量为\(C_k\), 则样本\(D\)的基尼系数为:

\[Gini(D)=1-\sum_{k=1}^{K}(\frac{|C_k|}{|D|})^2 \]

显然, 对于集合\(D\),假设属性\(A\)的某个值\(a\)将数据集D切分为\(D_1,D_2\),则在特征A的条件下, D的基尼系数表达式为:

\[Gini(D,A)=\frac{|D_1|}{|D|}Gini(D_1)+\frac{|D_2|}{|D|}Gini(D_2) \]

相比于复杂的对数运算, 基尼系数的运算简单很多, 对于连续值得处理, 也是像上面一样连续二分连续特征
比如, 我们计算\(a_1\)的Gini系数:

\[Gini(D,a_1=T)=1-[(\frac{3}{4})^2+(\frac{1}{4})^2] \Gini(D,a_1=F)=1-[(\frac{1}{5})^2+(\frac{4}{5})^2] \Gini(D,a)=\frac{4}{9}*Gini(D,a_1=T)+\frac{5}{9}*Gini(D,a_1=F) \]

最后, 我们选择Gini系数最大的就可以了

总结

信息增益: 以某特征划分数据集前后的熵的差值

在熵的理解那部分提到了,熵可以表示样本集合的不确定性,熵越大,样本的不确定性就越大。因此可以使用划分前后集合熵的差值来衡量使用当前特征对于样本集合D划分效果的好坏。
信息增益的理解:对于待划分的数据集D,其 entroy(前)是一定的,但是划分之后的熵 entroy(后)是不定的,entroy(后)越小说明使用此特征划分得到的子集的不确定性越小(也就是纯度越高),因此 entroy(前) - entroy(后)差异越大,说明使用当前特征划分数据集D的话,其纯度上升的更快。而我们在构建最优的决策树的时候总希望能更快速到达纯度更高的集合,这一点可以参考优化算法中的梯度下降算法,每一步沿着负梯度方法最小化损失函数的原因就是负梯度方向是函数值减小最快的方向。同理:在决策树构建的过程中我们总是希望集合往最快到达纯度更高的子集合方向发展,因此我们总是选择使得信息增益最大的特征来划分当前数据集D。
缺点: 信息增益偏向取值较多的特征
原因: 当特征的取值较多时,根据此特征划分更容易得到纯度更高的子集,因此划分之后的熵更低,由于划分前的熵是一定的,因此信息增益更大,因此信息增益比较 偏向取值较多的特征。

Gini系数

尼指数(基尼不纯度):表示在样本集合中一个随机选中的样本被分错的概率。

常见树模型节点分裂方式总结

标签:集合   优化   div   依赖   imageview   img   load   度量   math   

原文地址:https://www.cnblogs.com/zhouyc/p/13545080.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!