基本概念的定义、解释、总结。
相关概念
1、信息量
只能通俗地讲下,随机变量
X
X
存在多个取值,如果一个事件发生概率为1,那么他一定会发生,完全没有信息量。概率越小的事件(取值)发生时,它所含的信息量越大。(参考统计学里的p-value,所谓事出反常必有妖)。可以想到信息量和事件发生的概率成正比。
定义:出现概率为p的消息所含的信息量。
函数图像如下:
curve(expr = -log(x))
2、熵
衡量某一个事件(随机变量的某个取值)的信息量可以用上面的定义表示,那么衡量某一个变量的信息量容易想到用数学期望。
定义:
熵是表示随机变量不确定性的度量。设
X
X
是一个取有限个值的离散随机变量,其概率分布为:
则随机变量 X X 的熵定义为
熵越大,随机变量的不确定性就越大。范围为 0⩽H(p)⩽log(n) 0 ⩽ H ( p ) ⩽ l o g ( n ) 。最大值取到 log(n) l o g ( n ) 据说可以用凸优化的知识证明。容易知道当随机变量所有取值发生的概率均为 1n 1 n 时,取到最大值。直观来说,此时随机变量任意一个取值发生的概率相同,该随机变量的不确定性最大。
3、条件熵
条件熵表示在已知随机变量
X
X
的条件下随机变量的不确定性。定义为:
4、信息增益
信息增益表示得知特征
X
X
的信息而使得类的信息的不确定性减少的程度。信息增益大的特征分类的能力更为强大。定义为集合
D
D
的经验熵与特征
A
A
给定这一条件下的经验条件熵
H(D|A)
H
(
D
|
A
)
之差:
5、信息增益比
信息增益准则对可取值数目较多的属性有所偏好,以一个极端例子做说明:如果把每个样本的编号作为特征,那么该特征的信息增益最大。该特征将产生n个分支,每个分支节点只包含一个样本。这样的决策树不具有泛化能力,无法对新样本进行有效预测。可以采用信息增益比进行特征划分。信息增益比定义为:信息增益
g(D,A)
g
(
D
,
A
)
与特征A的熵
HA(D)
H
A
(
D
)
之比。 如果特征
A
A
的取值比较多,那么通常也比较大。可以理解为加入
HA(D)
H
A
(
D
)
惩罚取值较多的特征,作为一种校正方法。定义公式如下:
其中 HA(D) H A ( D ) 为:
n n 是特征的类别数, Di D i 是特征 A A 的第个取值对应的样本个数。 D D 为样本个数。
[from 周志华《机器学习》]信息增益比对可取值较少的属性有所偏好,C4.5算法并不是直接选择增益率最大的特征划分属性,而是先从候选特征中找到信息增益高于平均水平的属性,再从中选择信息增益比最高的。
[from Mitchell《机器学习》]特征太多的可能取值必然把训练样例分割成非常小的空间。此时对于训练集,它会有非常高的信息增益。但是对于未见实例它可能是一个非常差的目标函数预测器。(吐槽,这个翻译太生硬)
6、基尼指数
假设有个类,样本点属于第
k
k
类的概率为,则概率分布的基尼指数定义为:
其直观含义为从样本中随机抽取两个样本,不属于同一类的概率。
如果样本集合特征
D
D
根据特征是否取某一可能值
a
a
被分割成和
D2
D
2
两部分。则在特征
A
A
的条件下,集合的基尼系数定义为:
决策树的生成和剪枝
生成
ID3采用信息增益进行特征选择,而C4.5算法采用信息增益率进行特征选择。细节需要看下paper了。先这么着吧。有空看下《机器学习实战》,用py复现下吧。
ID3算法流程如下所示:
C4.5算法流程如下所示:
剪枝
完全生长的决策树容易造成过拟合的问题,解决这一问题的方法可以分为两类:
1. 提前停止增长树,在ID3算法完美分类训练数据之前停止生长树,具体:在信息增益小于阈值时,不再分裂,取频数最大的作为叶节点的类别。或者提前设置决策树的深度等
2. 后修剪法,先允许树过度拟合数据,然后对这个树后修剪,修剪原理类似预剪枝,如果信息增益小于阈值,剪枝即可
不同的算法貌似剪枝的方法不一样,李航《统计学习方法》中介绍了一种剪枝算法,可以看看。
CART算法
CART算法根据基尼指数进行特征选择,基尼指数越大说明不确定性越大,所以在某特征条件下,基尼指数越小,特征的区分能力越强。这和条件熵类似,条件熵越小,信息增益越大,特征区分能力越强。
剪枝算法没有看明白,尴尬。。
CART剪枝
剪枝的内容Pinard的博客写的比较清楚,别人写的博客为什么这么好,自己的,捂脸。
问题总结
- 熵的含义,通俗的讲解
- 熵的值域,为什么有上下界
- 信息增益和信息增益比的差异
优缺点
- 优点
- 不需要任何先验假设
- 解释性高,推理过程可以看成If-Then形式,容易转化成规则
- 对缺失值不敏感 ,可以处理数值型、字符型数据
- 没有复杂的参数设置,推理过程完全依赖于属性变量的取值特点
- 判断属性变量的重要性,为特征选择提供参考
- 缺点
- 容易过拟合
- 对异常值过于敏感
- 求解时候容易陷入局部最优
- 如果某些特征的样本比例过大,生成决策树容易偏向于这些特征。这个可以通过调节样本权重来改善
决策树调参
参考Pinard的博客,基于scikit-learn,我只用过R的C50包。
scikit-learn的参数和R的参数有空不好。
Ref
[1] 李航《统计学习方法》
[2] 周志华《机器学习》
[3] 《scikit-learn决策树算法类库使用小结》-Pinard
[4] 《决策树算法原理(下)》-Pinard
[5] 《决策树算法原理(上)》-Pinard