信息论基础(熵联合,条件熵,熵信息增益,基尼不纯度)
联合熵:(X,Y)在一起时的不确定性度量。
联合熵性质:![]()
联合熵公式
大于每个独立的熵:
小于独立熵的和:
条件熵:知道X的条件下,Y的信息量。
![]()
条件熵公式 从公式的推断过程,可以得到条件熵的一个性质:
互信息(信息增益):知道X,给Y的信息量带来多少损失。
![]()
互信息(信息增益) 可以得到互信息的一个性质:
熵、联合熵、条件熵、互信息的关系:
![]()
熵、联合熵、条件熵、互信息的关系图 举个例子:假设H(X)用一块糖来表示,Y代表一杯水,H(X|Y)也就是将这杯水倒在糖上,H(X)还剩多少,那么溶于水的那部分糖就是Y给H(X)带来的损失,即就是互信息。
这样,我们就可以理解决策树为什么要选取信息增益(互信息)最大的特征。因为信息增益是指由于特征A而使得数据集D不确定性减少的程度。信息增益越大,不确定性减少的程度越大,那么该特征的选取就有利于分类朝着确定性方向发展。
基尼不纯度:将来自集合中的某种结果随机应用于集合中某一数据项的预期误差率。
![]()
基尼不纯度的定义
决策树的不同分类算法(ID3算法,C4.5,CART分类树)的原理及应用场景
回归树原理
决策树防止过拟合手段
产生过度拟合数据问题的原因有哪些?
原因1:样本问题
(1)样本里的噪音数据干扰过大,大到模型过分记住了噪音特征,反而忽略了真实的输入输出间的关系;(什么是噪音数据?)
(2)样本抽取错误,包括(但不限于)样本数量太少,抽样方法错误,抽样时没有足够正确考虑业务场景或业务特点,等等导致抽出的样本数据不能有效足够代表业务逻辑或业务场景;
(3)建模时使用了样本中太多无关的输入变量。
原因2:构建决策树的方法问题
在决策树模型搭建中,我们使用的算法对于决策树的生长没有合理的限制和修剪的话,决策树的自由生长有可能每片叶子里只包含单纯的事件数据或非事件数据,可以想象,这种决策树当然可以完美匹配(拟合)训练数据,但是一旦应用到新的业务真实数据时,效果是一塌糊涂。
上面的原因都是现象,但是其本质只有一个,那就是“业务逻辑理解错误造成的”,无论是抽样,还是噪音,还是决策树等等,如果我们对于业务背景和业务知识非常了解,非常透彻的话,一定是可以避免绝大多数过拟合现象产生的。因为在模型从确定需求,到思路讨论,到搭建,到业务应用验证,各个环节都是可以用业务敏感来防止过拟合于未然的。
如何解决过度拟合数据问题的发生?
针对原因1的解决方法:
合理、有效地抽样,用相对能够反映业务逻辑的训练集去产生决策树;
针对原因2的解决方法(主要):
剪枝:提前停止树的增长或者对已经生成的树按照一定的规则进行后剪枝。
剪枝的方法
剪枝是一个简化过拟合决策树的过程。有两种常用的剪枝方法:
(1)先剪枝
(2)后剪枝
模型评估
sklearn参数详解,Python的绘制决策树
参考