Collaborative Filtering

一个经典的推荐系统通常分为召回阶段和排序阶段,召回阶段是指从大量的(可能高达数十亿)的item中选定候选集(通常为几千到几百的范围)的过程,而排序阶段是指对候选集中的item按照用户偏好进行排序。本质上来讲,全部推荐算法的目标都是识别用户对某一item的偏好,也就是说,对于以下的一个user-item-preference矩阵,咱们须要预测其中任意一点的值:算法

大部分状况下,这张表是至关稀疏的,并且在随着时间不断更新,咱们也不可能把它所有算出来。因此基本上咱们只有在查询的时候才会由模型来计算某个用户的preference的值,而不一样的推荐系统即意味着:架构

  1. 对用户preference的不一样定义。有时候,用户的评分是明确的,好比咱们会在豆瓣和淘宝对item进行打分。但更多时候,咱们是没有这个明确的rank的。这种状况下,咱们拥有的数据是用户的implicit feedback(隐式反馈),好比说用户的浏览、点击、播放等行为。咱们须要使用用户的行为来肯定preference的值,在不少状况下,咱们使用不一样行为的加权和做为preference。用户行为的权重会根据咱们的关注度而改变,好比在视频网站,咱们可能关注播放行为;在淘宝,可能主要关注购买行为。咱们根据不一样的关注点对用户的preference进行不一样的定义,这个定义决定了推荐系统的输入,每每也决定了推荐系统的目标。网站

  2. 对预测目标的不一样定义。一个推荐系统是很是复杂的,咱们会在不一样场景下使用不少不一样的推荐算法,来构成整个推荐算法。用户的preference每每是较为复杂的,在不少场景下不能直接观测,这时咱们一般会使用另一些指标来做为它的度量。还有不少时候preference不是一个适合做为推荐算法目标的值,因此咱们在不一样的场景下仍是会为推荐算法设立不一样的相关的目标值。典型的好比CTR(click rate),playback_duration之类的。ui

  3. 对评测指标的不一样定义。评测指标是个总体的目标,好比用户满意度、用户购买率等等,咱们在最终评价一个推荐系统的好坏时会用这些指标。好比一个视频网站,真正关注的确定是用户留存率、盈利等数据,这是长期评测指标;总的用户watch minutes是短时间评测指标;preference是一个用户播放行为、点击行为、收藏行为等综合起来决定的值;而在不一样场景的推荐算法中,预测目标多是用户的CTR,playback_duration等等。设计

  4. 召回阶段的不一样筛选策略。基本是比较大方向的规则,好比popular content + saved content + historic related content等等。3d

  5. 排序阶段不一样的预测模型。种类很是多,是如今推荐系统领域的主要关注方向。cdn

  6. 不一样的模型更新时间,即时的或者离线的。这个跟推荐系统的底层架构有关,一般是在整个系统设计的时候就已经决定了,不过仍是有一些例外的状况,好比说有一些算法自己就是即时更新不须要预训练的,我遇到过的有MAB,kalman filter等等。 而咱们平常的工做基本上只关注第5点,不一样场景下,排序阶段不一样的预测模型。接下来咱们讨论的算法都只与这一点有关。视频

协同过滤: Collaborative Filtering

协同过滤是最经典的邻域推荐算法之一。所谓邻域算法,就是新的推荐项目是由它的邻居的数据生成的。在不一样的协同过滤算法中,对邻居的定义是不一样的。blog

User-based CF

咱们考虑上面的user-item矩阵。假定咱们如今有了一些user对item的preference,咱们接下来的目标是把空白填满,咱们会选择怎么填呢?在user-based CF,咱们使用两个步骤:排序

(1)找到和目标用户兴趣类似的用户集合。

(2)找到这个集合中的用户喜欢的,且目标用户未consume的item,更新它们的user-item preference并排序。

咱们把用户类似度定义为余弦类似度:

即:

  • 召回阶段,创建物品对用户的倒排索引表,对于每一个物品都保存对该物品产生过行为的用户,扫描该表,找到全部|N(u)∩ N(v)|不为0的用户对,计算其他弦类似度。对于用户v,其全部有交集的用户中和他最类似的k个用户是他的邻居。这些用户发生过行为的item集合就是召回集合。

  • 排序阶段:用户u对物品i的感兴趣程度以下,其中S(u, k)是和用户u兴趣最接近的k个用户,N(i)是对物品i有过行为的用户集合,wuv是用户u和v的兴趣类似度,rvi是用户v对物品i的感兴趣程度。

对user-based CF的改进基本是对这两个公式的改变,即改变用户类似度的计算方法,或者改变物品感兴趣程度的计算方法。

Item-based CF

咱们仍是看这个user-item矩阵。在item-based CF中,咱们给用户推荐和他们以前喜欢的物品类似的物品。而和user-based CF相对称,它主要经过用户的行为计算物品之间的类似度。

物品类似度:

其中N(i)表示喜欢item i的用户

和User-CF算法相似,使用item-CF能够先创建用户-物品倒排索引表,从而计算物品之间的余弦类似度,并在获得物品之间的类似度后,使用以下公式计算user u对item j的preference:

其中N(u)是用户交互过的物品,S(j,K)是最类似的K个物品,wji是物品j和物品i的类似度,rui是user u对item i的偏好。

item-CF的最大优点是能够从历史数据中提供推荐解释。

经过偏好归一化、惩罚热门物品,改变类似度公式等方法,咱们能够不断改进item-CF。

相关文章
相关标签/搜索