本文原作者: 彭江军, 经授权后发布.
导语:
数据决定了任务的上限, 模型方法决定达到上限的能力. 在这里想借助信息熵的一些概念来对数据的重要性做一些分析, 将数据的分布差异度量出来, 并据此得到特征对于分类的重要性度量. 对于特征的重要性的分析不适合放到特征特别多的情况下, 因为往往特征之间是不独立的, 所以去统计大量的特征组合的分布是一件很费时间的事情, 但是本文的方法对于单个特征或者中少量的特征还是可以尝试的.
1: 信息熵
这一块介绍一些基础的概念, 熟悉的可以绕过.
熵的概念最早起源于物理学, 用于度量一个热力学系统的无序程度. 在信息论里面, 熵是对不确定性的测量. 但是在信息世界, 熵越高, 则能传输越多的信息, 熵越低, 则意味着传输的信息越少.
这句话可以这样理解, 当需要描述这件事的时候, 我们需要花多少的语言可以将这件事说清楚.
事件 1: 描述太阳的升降规律, 那么我们花一句话就可以把这个事情说清楚, 太阳东升西落, 永恒不变, 概率为 1.
事件 2: 两个六点的色子所投掷产生的点数是多少? 那我需要对这件事的描述就会复杂很多. 除了需要计算点数的取值, 还得知道它出现对应取值的概率.
所以从事件本身含有的信息量而言, 事件二比事件一丰富.
将事件记为一个变量, 其取值的概率可以用来描述这件事. 需要描述它的语言总量或者在计算机中传递这个时间所需要的存储空间就体现了它的信息含量.
例子: 假设一个随机变量, 取三种可能值 x_1,x_2,x_3, 概率分别为 0.5,0.25,0.25. 那么最优的二进制编码方案就是用 1 编码 x_1, 用 01 编码 x_2, 用 00 编码 x_3. 那么编码平均比特长度就是
. 其熵为 3/2.
于是天才的 shannon (我记得天才的用在物理学家身上的情况比较多, 像天才的麦克斯韦, 和天才的爱因斯坦, 扯的有点远了) 想出用下面的公式来描述事件的信息含量. 信息论上叫做信息熵.
当随机变量 X 取值有限个数值的时候, 信息熵可以表示为:
2:KL 散度
相对熵 (relative entropy) 又称为 KL 散度(Kullback-Leibler divergence, 简称 KLD), 信息散度(information divergence), 信息增益(information gain).
公式为:
式中 P,Q 是两个不同的分布. KL 散度是两个概率分布 P 和 Q 差别的非对称性的度量. KL 散度是用来 度量使用基于 Q 的编码来编码来自 P 的样本平均所需的额外的位元数. 其数值的大小代表了两个分布的相近程度, 其值越小, 代表两个分布越相近.
但是这个值是非对称的, 即
.
KL 散度被广泛的用来度量两个分布之间的相似性. 常见的做法是计算
, 其中 X_i 是特征列, Y 为因变量. 度量算的因变量在基于特征 X_i 的编码下包含多少的额外信息含量. 此时计算
就可以表示出因为有特征 X_i 的存在可以使得 Y 的信息含量减少的程度, 也就是可以特征 X_i 使得 Y 的不确定性减少的程度.
越小, 意味着 Y 的分布的不确定性可以很大程度上被特征 X_i 消除, 对应
自然就很大.
从信息论的角度来讲, 机器学习要做的事情, 要做的事情就是通过特征来尽可能减少因变量 Y 的不确定的过程. 特征我们是知道的或者是容易得到的, 但是 Y 我们是提前不知道的.
这样的思想引申出以恶搞机器学习的算法, 叫 ID3.
3: 特征的重要性
在 KL 的基础上, 通过计算
, 可以得到目前所有的特征对于减少 Y 的不确定性的减少的程度, 如果最终这个值很小的话, 就说明目前的特征并没有很好的表现力.
通过
可以计算特征的重要性, 但是这种重要性不等于该特征对于分类的重要性. 因为可能特征 X_1 的
要高于特征 X_2 的
. 但是 X_1 对于分类的区分度并不如特征 X_2 好. 即特征 X_1 在不同类别下的分布要比特征 X_1 的差异更加大, 这就说明对于分类任务而言, X_2 对于分类的区分度是更加显著的.
于是便想到了用不同类别的某个特征的分布来去计算该特征对于分类任务的区分度.
如下图所示:
将 pctr 特征分成两个随机变量, 画出在 label=0 和非 0 的两个类上的分布图
对分布计算离散化表示, 计算这个分布的 KL 散度. 由于 KL 散度是非对称的, 进一步想到用 JS 散度来改良 KL 散度. JS 散度的公式为:
下面展示一些我们实验中一些特征的 JS 散度的数值
4: 一族特征的重要性的度量
由于特征之间往往具有高相关性, 因此对于一组特征对于分类任务的区分度不能直接对第二步得到的结果进行加和, 所以可以将多个变量 (P1,P2,...,Pm) 和目标变量 Q 之间做 KL 散度.
得到
, 从而确定这些变量的组合对于分类的任务的区分性.
整个特征重要性的流程如下图所示:
来源: https://www.qcloud.com/developer/article/1531448