推荐系统起手式-几种简单推荐模型(基于流行度的推荐)

从今天起,寒山叟将给带领你们进入另外一个重要领域,那就是推荐系统。寒山叟将会针对各类推荐系统,从算法原理和工程架构方面给你们一一作介绍,但愿对正在学习或工业实践中的你有所帮助,也欢迎你们留言探讨,指正不足。html

基于流行度的推荐算法

1.简介架构

什么是基于流行度的推荐?就是推荐模型的创建是围绕计算内容的流行度展开的,也就是说基于流行度推荐的核心就是计算内容的流行度。通熟讲就是什么内容流行度越高,就给用户推荐什么。本质上就是什么内容对用户吸引力高,就给用户推荐什么。那什么是流行度呢?也就是咱们一般说的“热度”。咱们在各个互联网产品中最多见到基于流行度推荐的形式就是某某榜TOP(N)。好比微博的热搜榜,酷我音乐排行榜,电商网站热搜榜、某某类商品销量排行榜等等都四处可见。固然这里咱们须要注意,咱们不能把基于流行度的推荐说成是TOP(N),TOP(N)是一种产品形式,而流行度推荐指的是一类围绕流行度计算而产生的推荐模型。
学习

2.影响流行度的因素测试

在物理上“热度”受时间和空间的限制,好比烧的炙红的铁块距离你10cm和10m感觉到的热度是不一样的,一样的距离你10分钟和10小时感觉到的热度也是不一样的。言归正传,咱们看下在推荐中内容的热度是怎样受到时间和空间因素影响的。咱们作推荐的目标是将相对于用户最好的内容推荐给用户,这里咱们作一个假设,质量越好的内容,他的流行度就越高,一般咱们是这么理解的。然而事实却不是这样的,内容质量虽然会很大程度上决定流行度,可是时间和空间才是流行度的幕后推手。网站

下面咱们来讲一下时间因素,时间因素咱们分两方面看。首先,用户访问一个应用或服务,是有时间偏好的,这种时间偏好致使不一样的应用或服务在时间维度有不一样的“流量规律”。好比新闻类网站咱们通常会集中在早晨和晚上时段查看,任何新闻投放在这一时段都会有比较好的关注度,咱们不能说投放在中午的新闻就是质量差。其次,内容热度随着时间的推移是会发生衰减的。好比去年热卖的商品与今年销售的新品谁的质量高,咱们也不能下定论。总结:内容的质量必定程度决定内容的热度,因为应用在时间维度的流量差别会致使内容流行度差别很大,内容热度在时间维度上的天然衰减也会致使流行度差别,因此咱们考察流行度首先要限制时间因素,即:某一时间段的流行度。spa

接着咱们来讲一下空间因素,空间因素咱们分两方面看。首先,用户访问一个应用或服务,进入不一样位置的用户多少是有经常都有隐含的差别,这就决定了,访问应用位置的流量是有差别的。好比新闻类网站咱们通常会集中看首页首航有啥文章,任何文章投放在这一位置都会有比较好的关注度,咱们不能说投放在犄角旮旯的文章就是质量差。其次,内容热度随着物理空间的迁移是而发生衰减的。好比美国人可能不会关心鹿晗和关晓彤谈恋爱,可是中国人会,因此在应用国际版上的某内容的流行度也会发生变化,固然其中也有政策差别的影响。总结:内容的质量必定程度决定内容的热度,因为应用在空间维度的流量差别会致使内容流行度差别很大,内容热度在空间维度上的天然衰减也会致使流行度差别,因此咱们考察流行度首先要限制空间因素,即:某一位置的流行度。htm

最后咱们总结一下:空间和时间会带来应用访问流量差别,间接影响了特定内容的流行度,当咱们进行流行度计量的时候,要限定时间和空间维度,不然流行度不能反映内容质量。blog

3.流行度的度量get

上面咱们讨论了时间和空间因素对流行度计算的影响。因此咱们在度量流行度的时候,要排除时间和空间的影响,这里咱们就不能用某一指标的绝度数量来表示。咱们知道时空因素影响流行度是经过流量密度来施加的,因此咱们要用一个相对值(比值)或某种可能性(几率)来度量流行度,用户激发热度行为数/用户数。好比咱们常说的点击率、购买率、阅读率、观看率等等,如下咱们统称为点击率。然而,点击率自己虽然解决了一部分时间和位置误差所带来的影响,可是点击率的估计所须要的数据依然会受到数据误差的影响。所以,咱们每每但愿可以创建无误差的数据(这也是一个热门的研究课题,有兴趣你能够了解一下:数据驱动-重叠实验平台构建,这里就不展开论述了)。这里我介绍一种常见的处理方式能够收集没有误差的数据,就是将线上流量进行分桶,一个桶利用如今已有的对物品流行度的估计展现推荐结果内容,一个桶展现随机内容,这种方法是一种特殊的EE 算法(Exploitation & Exploration),业界称之为“epsilon 贪心”(epsilon-Greedy)。 以后咱们讨论的主题都是在无偏置的流量前提下。

4.流行度预估建模计算

下面我说一种简单的CTR预估问题建模思想。从数学角度讲点针对点击率的建模,其实就是把内容展现后是否被用户点击,看做一个“伯努利随机变量”,点击率预估就变成了对“伯努利分布参数估计”的问题,好比这时候咱们能够用“极大似然估计”的方法,试着找到能最大限度解释当前数据的参数。咱们利用最大似然法就能够求出在某一段时间内的点击率所表明的伯努利分布的参数估计。这个估计的数值就是某个物品当前的点击总数除以被显示的次数。通俗地讲,若是咱们显示某个物品 10 次,被点击了 5 次,那么在最大似然估计的状况下,点击率的估计值就是 0.5。然而,这样的估计有必定的局限性。若是咱们并无显示当前的物品,那么最大似然估计的分母就是 0。若是当前的物品没有被点击过,那么分子就是 0。在这两种状况下,最大似然估计都没法真正体现出物品的流行度。咱们从统计学的角度来说了讲,如何利用最大似然估计法来对一个伯努利分布所表明的点击率的参数进行估计。这里面的第一个问题就是刚才咱们提到的分子或者分母为0的状况。显然,这种状况下并不能很好地反应这些物品的真实属性。一种解决方案是对分子和分母设置“先验信息”。也就是说,虽然咱们如今没有显示这个物品或者这个物品没有被点击,可是,咱们“主观”地认为,好比说在显示 100 次的状况下,会有 60 次的点击。注意,这些显示次数和点击次数都尚未发生。在这样的先验几率的影响下,点击率的估计,或者说得更加精确一些,点击率的后验几率分布的均值,就成为了实际的点击加上先验的点击,除以实际的显示次数加上先验的显示次数。你能够看到,在有先验分布的状况下,这个比值永远不可能为0。固然,这也就避免了咱们以前所说的用最大似然估计所带来的问题。利用先验信息来“平滑”(Smooth)几率的估计,是贝叶斯统计(Bayesian Statistics)中常用的方法。若是用更加精准的数学语言来表述这个过程,咱们实际上是为这个伯努利分布加上了一个 Beta 分布的先验几率,而且推导出了后验几率也是一个 Beta 分布。这个 Beta 分布参数的均值,就是咱们刚才所说的均值。在实际操做中,并非全部的分布都可以找到这样方便的先验分布,使得后验几率有一个解析解的形式。咱们在这里就不展开讨论了。另一个能够扩展的地方就是,到目前为止,咱们对于流行度的估计都是针对某一个特定的时段。很明显,每一个时段的估计和前面的时间是有必定关联的。这也就提醒咱们是否是能够用以前的点击信息,来更加准确地估计如今这个时段的点击率。答案是能够的。固然,这里会有不一样的方法。一种最简单的方法仍是利用咱们刚才所说的先验几率的思想。那就是,当前 T 时刻的点击和显示的先验数值是 T-1 时刻的某种变换。什么意思呢?好比早上 9 点到 10 点,某个物品有 40 次点击,100 次显示。那么 10 点到 11 点,咱们在尚未显示的状况下,就能够认为这个物品会有 20 次点击,50 次显示。注意,咱们把 9 点到 10 点的真实数据乘以 0.5 用于 10 点到 11 点的先验数据,这种作法是一种主观的作法。并且是否乘以 0.5 仍是其余数值须要取决于测试。可是这种思想,有时候叫做“时间折扣”(Temporal Discount),是一种很是广泛的时序信息处理的手法。

针对CTR预估还有好多思路和经验!你若是有兴趣,期待咱们在广告里能够继续探讨。

相关文章
相关标签/搜索