本文原作者:彭江军,经授权后发布。

导语:

数据决定了任务的上限,模型方法决定达到上限的能力。在这里想借助信息熵的一些概念来对数据的重要性做一些分析,将数据的分布差异度量出来,并据此得到特征对于分类的重要性度量。 对于特征的重要性的分析不适合放到特征特别多的情况下,因为往往特征之间是不独立的,所以去统计大量的特征组合的分布是一件很费时间的事情,但是本文的方法对于单个特征或者中少量的特征还是可以尝试的。

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://cloud.tencent.com/developer/article/1523867

【技术分析】二:搜索排序—工业流程

https://cloud.tencent.com/developer/article/1525595

【技术分享】三:搜索排序—机器学习化建模

https://cloud.tencent.com/developer/article/1527336

【技术分享】四:搜索排序—数据的采集与构造

https://cloud.tencent.com/developer/article/1528253

【技术分析】六:搜索排序—指标介绍与选择

https://cloud.tencent.com/developer/article/1532635

【技术分享】七:搜索排序—排序模型

https://cloud.tencent.com/developer/article/1533656

腾讯云一站式机器学习平台智能钛TI-ONE试运营阶段限时0折,欢迎大家积极试用。

https://cloud.tencent.com/product/tio

更多优质技术文章请关注官方知乎机构号:

https://www.zhihu.com/org/teng-xun-zhi-neng-tai-ji-qi-xue-xi-ping-tai/activities

更多优质技术文章请关注官方微信公众号:

文章来源于腾讯云开发者社区,点击查看原文