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


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

    基于流行度的推荐

    1.简介

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

    2.影响流行度的因素

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

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

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

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

    3.流行度的度量

    上面我们讨论了时间和空间因素对流行度计算的影响。所以我们在度量流行度的时候,要排除时间和空间的影响,这里我们就不能用某一指标的绝度数量来表示。我们知道时空因素影响流行度是通过流量密度来施加的,所以我们要用一个相对值(比值)或某种可能性(概率)来度量流行度,用户激发热度行为数/用户数。比如我们常说的点击率、购买率、阅读率、观看率等等,以下我们统称为点击率。然而,点击率本身虽然解决了一部分时间和位置偏差所带来的影响,但是点击率的估计所需要的数据依然会受到数据偏差的影响。因此,我们往往希望能够建立无偏差的数据(这也是一个热门的研究课题,有兴趣你可以了解一下:数据驱动-重叠实验平台构建,这里就不展开论述了)。这里我介绍一种常见的处理方式可以收集没有偏差的数据,就是将线上流量进行分桶,一个桶利用现在已有的对物品流行度的估计展示推荐结果内容,一个桶展示随机内容,这种方法是一种特殊的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预估还有好多思路和经验!你如果有兴趣,期待我们在广告里可以继续探讨。

  • 相关阅读:
    Spring中的一些常用接口
    ApplicationContextAware的作用
    用spring的 InitializingBean 的 afterPropertiesSet 来初始化
    虚拟机扩容(/dev/mapper/centos-root 空间不足)
    AJAX
    Git
    jQuery
    JS
    JS
    jQuery
  • 原文地址:https://www.cnblogs.com/xiashusen-vd/p/11442229.html
Copyright © 2020-2023  润新知