决策树梳理(代更新)

一、信息论基础(熵 联合熵 条件熵 信息增益 基尼不纯度)

  1. 熵(Entropy)
    1.1 一条消息可以携带多少信息(以二分类为例)
    假设数据有正例(pos)和反例(neg)两类,我们从数据集中随机选取一个样例,“结果显示这个样例是正例”这句话携带了多少信息

    先给出公式: 其中P是该样例是正例pos的概率。
    ① 我们可以这样想:如果数据集中所有的样例本来就都是正的(即P=1),那么我们说“随机抽取一个样例是正例”这句话就是一句废话,本来事实就是大家都是正的还需要你再说一遍干啥,这句话一点信息含量都没有,所以最后I=0.
    ② 如果事实是这些数据中99%概率的样例都是正的,那么这时候如果有个人跳出来说“我随机从中抽取一个样例,它结果是正的”,这个时候大家也觉得这句话没有太大信息含量,因为不管怎么抽,结果大概率都是正的。最后结果也表现出来基本接近于0.
    ③ 如果数据集中为正的概率只有50%,这个时候有人跳出来说“我刚才抽取了一个样例,它是正的”,只有当概率值为这个值的时候大家才会觉得,这个人说话有最高的信息量,因为大家无法实现对样例的正负进行估计。

    1.2 一个离散型变量X所携带的信息量
    一个离散型变量X的熵H(X)定义为:
    H(X)也就是平均信息量,这里的χ是变量x的取值集合,H(X)其实就是X取各种能取的值所携带的平均信息量。
  2. 联合熵
    以二元随机变量X,Y举例,两个变量X和Y的联合信息熵定义为其中x和y是X和Y的特定值, P(x ,y)是这些值一起出现的联合概率。
    一集变量的联合熵大于或等于这集变量中任一个的独立熵,但少于或等于这集变量的独立熵之和。
  3. 条件熵
    仍以二元变量举例,H(X|Y)代表在已知一个变量Y发生的条件下,另一个变量X发生所新增的不确定性。

    条件熵 H(Y|X)H(Y|X) 相当于联合熵 H(X,Y)减去单独的熵 H(X),即H(Y|X)=H(X,Y)−H(X),证明如下:
  4. 信息增益(information gain)以二分类为例
    假设属性at把数据集T划分成了若干个子集Ti,每个Ti里的样例又可以标记为2类:pos和neg。
    ①首先,根据上面熵的定义,我们可以求出每个子集Ti的熵H(Ti)。
    ②我们可以求出被属性at划分过的数据集T的熵H(T,at)

    其中Pi是每个Ti的概率,实际是用相对频率(Ti中样例的个数除以总数据集T中样例的个数)算出来的,即Pi=|Ti|/|T|。
    ③用属性at对数据集T进行划分所得到的信息增益(information gain)就是I(T,at)。

    信息增益I实际上是数据集T被at划分后减小的熵,为什么划分后熵会减小?因为在划分过程中我们的信息是愈加明确的,所以熵会减小。
  5. 基尼指数Gini index(基尼不纯度)
    基尼指数(基尼不纯度)= 样本被选中的概率 * 样本被分错的概率

    Gini指数越小表示集合中被选中的样本被分错的概率越小,也就是说集合的纯度越高,反之,集合越不纯。
    注:当为二分类时,Gini(P) = 2p(1-p)。

二、决策树的不同分类算法(ID3算法、C4.5、CART分类树)的原理及应用场景

生成决策树的关键在于每次选取什么样的属性去进行划分。一般而言,随着划分过程的不断进行,我们希望决策树的分支节点所包含的样本尽可能属于同一类别,即节点的纯度(purity)不断提高。

  1. ID3算法(iterative Dichotomiser 3)Quinlan,1986
    1.1 Calculate the entropy of the training set, T, using the percentages, p(pos) and p(neg), of the positive and negative.
    1.2 For each attribute, at, that divides T into subsets, Ti, with relative sizes Pi, do the following:
    ①:calculate the entropy of each subset, Ti;
    ②:calculate the average entropy: H(T, at);
    ③:calculate information gain: I(T, at);
    1.3 Choose the attribute with the highest value of information gain and Divide T into subsets, Ti;
    1.4 For each Ti: If all examples in Ti belong to the same class, then create a leaf labeled with this class; otherwise, apply the same procedure recursively to each training subset.

    ID3的缺点:
    ① 处理大型数据速度较慢,经常出现内存不足;
    ② 不可以处理数值型数据(可以通过将连续值转换为关于某个threshold的布尔问题来解决,问题就变为了如何选择合适的threashold,同样可以用信息增益来得出)
     
  2. C4.5决策树算法
    事实上,信息增益对可取值数目较多的属性有所偏好,为减少这种偏好可能带来的不利影响,C4.5算法不直接采用信息增益,而是采用gain ratio(增益率)选择最优分化属性。 增益率定义为
    其中
    它的本质是在信息增益的基础之上乘上一个惩罚参数。特征个数较多时,惩罚参数较小;特征个数较少时,惩罚参数较大。
    通过C4.5算法构造决策树时,信息增益率最大的属性即为当前节点的分裂属性,随着递归计算,被计算的属性的信息增益率会变得越来越小,到后期则选择相对比较大的信息增益率的属性作为分裂属性。
  3. CART分类树
    CART假设决策树是二叉树,内部结点特征的取值为“是”和“否”,左分支是取值为“是”的分支,右分支是取值为“否”的分支。这样的决策树等价于递归地二分每个特征,将输入空间即特征空间划分为有限个单元,并在这些单元上确定预测的概率分布,也就是在输入给定的条件下输出的条件概率分布。
    CART算法由以下两步组成:
    ①:决策树生成:基于训练数据集生成决策树,生成的决策树要尽量大; 决策树剪枝:用验证数据集对已生成的树进行剪枝并选择最优子树,这时损失函数最小作为剪枝的标准。
    ②:CART决策树的生成就是递归地构建二叉决策树的过程。CART决策树既可以用于分类也可以用于回归。本文我们仅讨论用于分类的CART。对分类树而言,CART用Gini系数最小化准则来进行特征选择,生成二叉树。
    根据训练数据集,从根结点开始,递归地对每个结点进行以下操作,构建二叉决策树:
    设结点的训练数据集为D,计算现有特征对该数据集的Gini系数。此时,对每一个特征A,对其可能取的每个值a,根据样本点对A=a的测试为“是”或 “否”将D分割成D1和D2两部分,计算A=a时的Gini系数。
    在所有可能的特征A以及它们所有可能的切分点a中,选择Gini系数最小的特征及其对应的切分点作为最优特征与最优切分点。依最优特征与最优切分点,从现结点生成两个子结点,将训练数据集依特征分配到两个子结点中去。对两个子结点递归地调用步骤1~2,直至满足停止条件。
    生成CART决策树:
    算法停止计算的条件是结点中的样本个数小于预定阈值,或样本集的Gini系数小于预定阈值(样本基本属于同一类),或者没有更多特征。

三、回归树原理

四、决策树防止过拟合手段

五、模型评估

六、sklearn参数详解,Python绘制决策树

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值