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

原文链接:https://cloud.tencent.com/developer/article/1531448

导语:

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

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散度。

得到

,从而确定这些变量的组合对于分类的任务的区分性。

整个特征重要性的流程如下图所示:

历史系列文章:

【技术分享】一:搜索排序—概述

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

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

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

【技术分享】五:搜索排序-特征分析相关推荐

  1. 业界分享 | 美团搜索排序实践

    作者 | 陈胜 美团 搜索排序负责人 整理 | DataFunTalk 美团的业务品类非常多,不同业务之间的履约方式差异很大.例如当用户进行搜索时,返回的是一个异构混排后的结果,可能会推荐一些具体的到 ...

  2. 阿里IM技术分享(八):深度解密钉钉即时消息服务DTIM的技术设计

    本文引用自InfoQ社区"5亿用户如何高效沟通?钉钉首次对外揭秘即时消息服务DTIM"一文,作者陈万红等.策划褚杏娟,有修订和改动. 一.引言 本文是国内企业IM的事实王者钉钉首次 ...

  3. 【技术分享】一:搜索排序—概述

    本文原作者:彭江军,经授权后发布. 原文链接:https://cloud.tencent.com/developer/article/1523867 1: 搜索排序的概念 搜索排序:在一次会话中,用户 ...

  4. 《跨境电商——速卖通搜索排名规则解析与SEO技术》一一1.3 从购买过程看速卖通的搜索排序机制...

    本节书摘来自异步社区出版社<跨境电商--速卖通搜索排名规则解析与SEO技术>一书中的第1章,第1.3节,作者: 冯晓宁,更多章节内容可以访问云栖社区"异步社区"公众号查 ...

  5. LiveVideoStackCon讲师热身分享 ( 五 ) —— 建立中国自主视频技术生态

    LiveVideoStackCon 2018音视频技术大会是每年的多媒体技术人的盛宴,为了让参会者与大会讲师更多互动交流,我们推出了LiveVideoStackCon讲师热身分享第一季,在每周四晚19 ...

  6. 技术分享 | 排序(filesort)详细解析(8000 字长文)

    作者:高鹏(网名八怪) 文章末尾有他著作的<深入理解 MySQL 主从原理 32 讲>,深入透彻理解 MySQL 主从,GTID 相关技术知识. 本文来源:转载自公众号-老叶茶馆 *爱可生 ...

  7. DockOne技术分享(一二五):深信服容器云的负载均衡实现

    本文讲的是DockOne技术分享(一二五):深信服容器云的负载均衡实现[编者的话]此次重点讲的是在深信服容器云项目中的负载均衡方案的原理与实现.同时,因为我们投入的人力有限,人员的水平也有不足,但是借 ...

  8. 去哪儿酒店实时报价搜索技术分享

    去哪儿酒店实时报价搜索技术分享 去哪儿酒店搜索每天处理近千万次用户的实时报价查询请求, 涉及到200多家目标网站的近30万家酒店. 对其内容详细阅读

  9. 阿里飞猪个性化搜索排序探索实践

    导读:旅行类商品 ( 如机票.火车票.汽车票 ) 相对实物电商更加标品,用户决策因素更加单一,而行业内大多基于简单规则排序,如时间.价格或业务逻辑加权,难以满足用户的个性化出行需求.飞猪在过去一段时间 ...

最新文章

  1. 一文教会你三维网格物体识别
  2. 开放式创新改变世界——OpenStack生态系统将重新洗牌
  3. 2021年斯坦福AI指数报告重磅出炉!中国AI期刊影响力首超美国,视频处理是新风口
  4. 芒果正式版7.1sdk和siverligt Toolkit for 芒果
  5. 英特尔凌动处理器_曾押宝英特尔凌动CPU,华硕手机如今活得如何了?
  6. 监控操作系统和服务器,LoadRunner如何监控不同操作系统的服务器?
  7. UNIX(多线程):18---异步任务提供者(Provider) 介绍(续)
  8. 在既有系统中打通Apache Ignite、MySQL和Node.js
  9. mysql利用内存表导入数据_Mysql 大量数据导入
  10. python——进程基础
  11. qlv转mp4播放不了,解决方法
  12. win10linux双系统引导设置,win10 + Ubuntu20.04 LTS双系统引导界面美化
  13. 全光谱台灯对孩子有伤害吗?儿童用台灯的好处和坏处是什么
  14. 第三十四章 数论——高斯消元解线性方程组
  15. Python OpenCV putText() 在图像中放置文本
  16. 2015英国女王殿下的圣诞致辞
  17. linux下的lseek函数
  18. 【Exception】Navicat连接Oracle闪退 Navicat连接Oracle 报错:connection to server failed,probable Oracle Net admi
  19. python绘制两条折线图
  20. 世界区块链大会,ZJUBCA再出发

热门文章

  1. ping命令使用什么协议
  2. Python 用 os.listdir() 获取文件列表和筛选特定格式文件
  3. 微信小程序、app集成微信支付
  4. 高等流体力学复习04
  5. strsep 是将字符串截断
  6. 带你轻松认识SSL协议中的加密套件
  7. Python判断输入的数是否为数值类型,如果是则指出类型
  8. 安迪·鲁宾支持的猫头鹰实验室刚推出了一款机器人视频会议摄像机
  9. java火车票售票系统_基于java的火车票售票系统,界面Swing
  10. 【C语言基础】C语言操作符