KL 散度(从动力系统到推荐系统)
来源:互联网 发布:免费抠图软件 编辑:程序博客网 时间:2024/05/14 12:23
拿描述音乐的文本来说吧。我们分别按照类别“音乐”(P)和类别“古典音乐”(Q)统计两类文本中的词分布。
- KL(Q||P)。我们用音乐这个类别的编码来编码古典音乐,因为音乐包含了古典音乐,所以我们可以期望得到不是那么大的额外代价(也就是KL散度)
- KL(P||Q)。我们用古典音乐类别的编码来编码音乐,因为这个类别没有包含其它类型的音乐信息,所以我们会得到一个相对来说比较大的额外代价。
我们可以从这种不对称的差异中获得一些父子类的信息。
作者:Earthson Lu
链接:http://www.zhihu.com/question/28181173/answer/39744087
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
在信息论和动力系统里面,Kullback-Leibler 散度(简称 KL 散度,KL divergence)是两个概率分布 和 的一个非对称的度量公式。这个概念是由 Solomon Kullback 和 Richard Leibler 在 1951 年引入的。从概率分布 到概率分布 的 KL 散度用 来表示。尽管从直觉上看 KL 散度是一个度量或者是一个距离,但是它却不满足度量或者距离的定义。例如,从 到 的 KL 散度就不一定等于从 到 的 KL 散度。本文即将介绍如何将动力系统的概念运用到实际推荐系统的工作中,从而达到更佳的推荐效果。
KL 散度的数学定义:
对于离散空间的两个概率分布 和 而言,从 到 的KL 散度被定义为
换句话说,它是两个概率分布 和 的对数差的期望,这里的期望是以概率 来描述的。KL 散度有定义当且 对于所有的 都成立。如果 那么可以假设 KL 散度的第 项是零,因为
对于连续空间 的两个概率分布 和 而言,从 到 的KL 散度被定义为:
这里的 和 是概率分布 和 的概率密度。
KL 散度的基本性质:
(1)KL 散度总是非负的,并且只有 几乎处处成立的时候,
证明:利用 Jensen’s Inequality,可以得到:
(2)如果 是独立分布,并且联合分布是 是独立分布并且联合分布是 那么
+
(3)如果定义分布 和 的交叉熵是
分布 的熵是
那么
(4)KL 散度是两个概率分布 和 差别的非对称性的度量。 KL 散度是用来度量使用基于 的编码来编码来自 的样本平均所需的额外的位元数。典型情况下, 表示数据的真实分布, 表示数据的理论分布,模型分布,或 的近似分布。
(5)从 KL 散度的定义可以得出 所以 KL 散度不满足距离的对称性。当然,如果需要把它弄成对称的,可以定义
+
(6)KL 散度的不对称。回顾 KL 散度的定义:
从公式上看,在 大的地方,想让 KL 散度小,我们需要让 的值尽量也大;而当 本身小的时候, 对整个 KL 散度的影响却没有那么大(因为 log 项本身因为分子就很小,再加上乘以了很小的 )。直观来说就是,在 P 的概率密度大的地方,它应该尽量和 Q 概率密度大的区域保持一致以保证 KL 散度小,而在 P 概率密度很小的地方,P 和 Q 的差别对 KL 的影响很小。
如果对于分布 P 和 Q,KL(P||Q) 很大而 KL(Q||P) 很小,则说明:
[i]在分布 P 下概率比较大的事件中,这类事件在分布 Q 下的概率很小;
[ii]在分布 Q 下概率比较大的事件中,这类事件在分布 P 下的概率也都比较大。
简单例子计算:
比如有四个类别,一个方法 P 得到四个类别的概率分别是0.1,0.2,0.3,0.4。另一种方法 Q(或者说是事实情况)是得到四个类别的概率分别是0.4,0.3,0.2,0.1,那么这两个分布的 KL 散度就是
+ + +
实际案例分析:
在实际的工作中,我们通常会有某个网页或者app被用户点击或者播放的数据,同时,我们会拥有用户画像(personas),此刻我们关心的问题就是如何计算网页里面的某个新闻或者 app 里面的某个专辑受到不同维度的用户画像的喜好程度。比如,如何判断该新闻是受到各个年龄层的用户的喜爱还是只是受到某个年龄层的用户的喜爱?如何判断某个电台节目是受到大众的喜爱还是更加受到男性或者女性的喜爱?此时,为了提高网页的点击率或者电台节目的有效点击量,就需要给不同的用户群推荐不同的物品,如何计算物品在不同用户群的喜欢程度就是关键所在。
[1]性别分布情况
举个例子:某个电台专辑被 66.7% 的男性用户播放过,被 33.3% 的女性用户播放过,那么该物品是不是真的就是更加受到男性用户的青睐呢?
答案是否定的。如果使用这款 app 的用户的男女比例恰好是 1:1,那么根据以上数据,该电台专辑显然更加受到男性用户的喜爱。但是,实际的情况,使用这款 app 的用户的男女比例不一定是 1:1。如果 男性用户:女性用户 = 2:1 的话,并且某个电台专辑被 66.7% 的男性用户播放过,被 33.3% 的女性用户播放过,那么说明男性和女性对该专辑的喜好程度是一样的。因为男女的原始比例是 2:1,该专辑被男女播放的比例同样是 2:1,所以,该专辑对男女的喜爱程度恰好是 1:1,该专辑对男女用户并没有区分度。
那么如何计算该专辑的喜好程度呢?那就需要使用KL 散度来建立数学模型。此时不妨假设使用这个 app 的男女比例占比约为 65%:35%(如下图所示),其中 1 指的是男性用户,2 指的是女性用户。
选择“催眠音乐类”的某个专辑,查看该专辑被男女两性的播放程度:其中浅色部分指的是该专辑被男性用户的播放比例,深色部分指的是该专辑被女性用户的播放比例。
从两幅图像上看,这两幅图的分布情况大体接近,性别的原始分布是 Q,专辑被不同性别的播放比例是 P,通过 KL 散度的数学公式,可以计算出 KL 散度 约为 0.0001。无论是从图像上还是数据上都可以说明:该专辑深受男女的喜欢,两者的喜好程度应该约为1:1。
选取“亲子宝贝类”的某个专辑,查看该专辑被不同性别用户的播放比例如下:
从这幅图像上看,该专辑被女性用户的播放比例是 83%,被男性用户的播放比例是 17%;这个数字与原始的男女分布比例 65% :35% 相差甚远,通过 KL 散度的计算,可以得出 约为 0.9。从数据上看,该专辑就有明显的性别倾向,因为此刻的 KL 散度较大。从图像上看,该专辑深受女性用户的喜欢,该专辑对男性用户则没有特别大的吸引力。
[2]年龄分布情况
类似的方法可以用于处理年龄的分布,由于年龄特征是一个连续的特征,需要使用特征工程的离散化方法,把年龄分成几个阶段,比如中小学生,大学生,工作初期的人,成家立业的人,中年人,老年人等阶段。通过用户画像数据,可以计算出该app被各个年龄层的用户的使用情况:
此时选择“催眠音乐类”的某个专辑,统计出该专辑被各个年龄层的用户的播放比例如下图所示:
从两幅图像上看,这两幅图的分布情况大体接近,年龄的原始分布是 Q,专辑被不同年龄层的用户的播放情况是 P,通过 KL 散度的数学公式,依旧可以计算出 KL 散度 约为0.005。从数据上看,该专辑深受各个年龄层的用户的喜欢。
另外选择“亲子宝贝类”的某个专辑,该专辑被不同年龄层的用户的播放比例是:
从图像上看,该专辑被 24_29 岁这个年龄层的播放比例约为 59%,但是该年龄层的用户的原始占比约为 24%,从图像上看,该专辑深受 24_29 岁用户的喜欢,对其余年龄层的用户的吸引力则一般。通过计算 KL 散度,可以得到 约为 0.62,无论是从图像上或者数据上看,该专辑都有明显的年龄倾向。
[3]结论
从以上的案例分析来看,
(1)“催眠音乐类”深受各个年龄层的用户喜爱,也对男女性别具有同样的吸引力,因为 KL 散度较小。因此该专辑的年龄和性别的区分度不大。
(2)“亲子宝贝类”对年龄层在 24-29 岁的用户更有吸引力,摒弃对女性用户的吸引力大于男性用户,因为该专辑的 KL 散度较大。说明该专辑的年龄和性别的区分度很大,这个就可以做为分群推荐的基础。
(3)对其余专辑或者用户画像的情况可以使用类似的方法来处理,这里不再赘述。
- KL 散度(从动力系统到推荐系统)
- 推荐系统-从入门到精通
- 推荐系统-从入门到精通
- 推荐系统-从入门到精通
- 推荐系统-从入门到精通
- 推荐系统从入门到精通
- 推荐系统-从入门到精通
- KL Divergence(KL散度)
- KL 散度( KL-Divergence)
- Netflix推荐系统:从评分预测到消费者法则
- Netflix推荐系统:从评分预测到消费者法则
- Netflix推荐系统:从评分预测到消费者法则
- 推荐系统从入门到精通的过程
- 饿了么推荐系统:从0到1
- 饿了么推荐系统的从0到1
- 推荐系统的循序进阶读物(从入门到精通)
- 推荐系统的循序进阶读物(从入门到精通)
- 推荐系统的循序进阶读物(从入门到精通)
- JUnit单元测试--JUnit简介
- 10267 - Graphical Editor
- csu 1329 一行盒子
- 《剑指offer》-数组中出现次数超过一半的数字
- Node.js简介
- KL 散度(从动力系统到推荐系统)
- 沼泽鳄鱼 矩阵乘法
- MFC嵌入浏览器框架CEF
- C++运算符重载
- Spring 与依赖注入
- [JZOJ3397]【GDOI2014模拟】雨天的尾巴
- 【SSH网上商城项目实战27】域名空间的申请和项目的部署及发布
- 二叉树--遍历
- Java - 蓝桥杯 - 历届试题 买不到的数目