基于熵的特征提取算法
1、引言安全
最近一直在研究天然语言处理、文本分析相关的问题,看了很多论文,数据分析是一个很是有意思的东西,故准备写一些博文来分享近来的一点心得。app
先来看一个有意思的例子,假设拥有不少用户手机装有哪些APP的数据,随便列举几个淘宝、美团、美柚、网易彩票等等APP,经过用户手机所安装的app来推测用户的性别,固然前提是预先有了一批数据做为训练集。那么绘制成以下表格(安装了该APP则√,不然×):机器学习
淘宝学习 |
美柚get |
网易彩票博客 |
性别数据分析 |
√it |
√table |
× |
女 |
√ |
× |
√ |
男 |
√ |
√ |
× |
女 |
√ |
√ |
× |
女 |
√ |
√ |
√ |
男 |
√ |
× |
√ |
男 |
√ |
× |
× |
男 |
√ |
√ |
× |
? |
研究的问题明确一下,经过前面7条数据来判断最后一条数据的性别?
一眼扫过,直觉告诉我:
一、是否安装淘宝APP,对预测没有太大做用,由于男女都安装
二、安装美柚和网易彩票,貌似颇有区分度,这两个因子“信息量”貌似很大。
信息量大不大,能不能定量计算呢?请接着往下看,系好安全带,咱们全速前进咯。
2、熵
对于熵的定义,我百度百科摘了一段,以下:
熵的概念是由德国物理学家克劳修斯于1865年所提出。最初是用来描述“能量退化”的物质状态参数之一,在热力学中有普遍的应用。但那时熵仅仅是一个能够经过热量改变来测定的物理量,其本质仍没有很好的解释,直到统计物理、信息论等一系列科学理论发展,熵的本质才逐渐被解释清楚,即,熵的本质是一个系统“内在的混乱程度”。
最后一句话表名了熵的本质,他是描述一个系统混乱程度的,越是混乱,熵就越高,咱们就越难看清真相,在上面的例子中什么信息都不知道的时候,就很难判断最后一条数据的性别。
那么物理学的概念怎么用于信息论的呢?1948年,香农提出了“信息熵”的概念,定义以下:
H(x) = -∑p(xi)log(p(xi)) (i=1,2,..n)
其中:xi表示变量x可能的取值,p(xi)表示变量xi的几率
3、信息增益
信息增益是描述知道了某个因子或者信息,整个系统混沌状态的减小量。
条件熵公式:H(x|y)=-∑p(yi)H(x|y=yi)(i=1,2,..n)
那么信息增益:IG(y)=H(x)-H(x|y)
其中IG(y)表示y因子的信息增益,H(x|y)表示y发生的状况下x的信息熵
4、计算
一、整个预测系统的信息熵
7条信息中3女、4男
H(性别)=-3/7*log3/7-4/7*log4/7=0.6829
二、知道“美柚”这个信息,预测系统的熵
安装美柚app的有4个,其中女三、男1
不安装美柚app的有3个,其中女0、男3
H(性别|y=安装美柚)=-3/4*log3/4-1/4*log1/4=0.5623
P(安装美柚)=4/7
P(性别|y=不安装美柚)=-0-3/3*log3/3=0
P(不安装美柚)=3/7
IG(美柚)=0.6829-(0.5632*4/7+0*3/7)=0.3610
三、知道“网易体育”这个信息,预测系统的熵
安装网易体育app的有3个,其中女0、男3
不安装网易体育app的有4个,其中女三、男1
P(性别|y=安装网易体育)=-0-3/3*log3/3=0
P(安装网易体育)=3/7
H(性别|y=不安装网易体育)=-3/4*log3/4-1/4*log1/4=0.5623
P(不安装网易体育)=4/7
IG(网易体育)=0.6829-(0.5632*4/7+0*3/7)=0.3610
四、知道“淘宝”这个信息,预测系统的熵
7条数据中7个用户安装淘宝app,3女4男
H(性别|y=安装淘宝)=-3/7*log3/7-4/7*log4/7=0.6829
P(安装淘宝)=7/7=1
IG(淘宝)=0.6829-0.6829*1=0
果真,知道用户安装淘宝app,对于预测系统而言,信息增益为0,那就是知道淘宝这个因子,预测不了用户的性别,那么这个因子能够排除。网易体育和美柚这个两个因子的信息增益都为0.3610,说明获得了这两个信息,整个系统系统的混沌状态减少了,那么能够做为预测模型的因子。
5、小结
咱们常常说“信息量大”,实际上一个信息所携带的信息量是能够定量计算的,这是一个有意思的事情。
在使用诸如朴素贝叶斯、决策树、随机森林等等此类的机器学习算法来训练模型时,每每会须要进行特征提取,那么信息增益能够很好的实现这一点,另外还能达到降维的目的。
最后,咱们设想一个这样的场景:有不少文章,文章的类别不少,有教育类、科技类、体育类等等,咱们须要作的是把文章归类,以便与检索。因为数据量很大,人工归类不太可能,有没有办法让计算机帮咱们作呢?或者让计算机像人同样,读一篇文章,稍微分析一下就知道了文章的类别。最初计算机可能只能识别几个类别,经过对数据的学习,它慢慢的能够识别全部类别了。这是一个挺有趣的问题,请关注第二篇博客《利用机器学习来进行文本分析》。
快乐源于分享。
此博客乃做者原创, 转载请注明出处