推荐系统

推荐系统就是用户有一个需求, 系统返回相关的item的系统。 推荐系统是非常重要的, 如在商场中, 商家需要决定需要上市的商品, 一件商品如果是冷门了, 它占了货架而没带来额外的利润, 最终使商家损失。 在推荐系统中, 存在Long tail 的现象, 即销量好的东西集中在一个部分, 而其它的商品“销量惨淡”。 因此, 对于线下销售来说, 需要进行cut off, 只上架热销的商品。 在online的销售中, 就不存在需要cut off的问题了, 因为我们的资源非常充足。


推荐系统_第1张图片
long tail

总体而言, 推荐系统分为三类: Editorial and hand curated, 即手工推荐, 举例: 书店的员工会把同类的书放在一起, 这相当于一种推荐了; Simple aggregates 简单的融合, 如考虑这周的top 书单, 然后推荐给用户; Tailored to individual users 个性化推荐, 这是最常见的, 考虑了用户的兴趣及行为, 可挖掘的信息也比较多。

简单来说, 一个推荐系统就是对X与S之间算一个相似度评分!那么首先就是收集信息了, 有了信息特征, 才能计算衡量相似度。 若收集数据不够充分, 还要考虑如何补充, 这个时候我们更多的考虑highly unknown ratings。 一旦数据收集完成, 搭建好了一个系统, 那么如何评价推荐效果就是接下来及其重要的一步了。接下来介绍的是Content-based的推荐系统。


推荐系统_第2张图片
model

下面是一个简单的例子, 从用户的profile得知他喜欢的item的profile并且从中提取特征, 然后进行推荐。


推荐系统_第3张图片
action

先讲协同过滤

  • 协同过滤思想是比较简单的, 给定x, 找到与x相近的集合N, 然后从集合N中找到公共的元素, 进行推荐。 主要有两种协同过滤: user-user and item-item。


    推荐系统_第4张图片
    collaborative
  • 定义相似度。Jaccard只计算共同出现, 而不考虑评分是否一致。 cosine similarity将missing value评为0. 用皮尔森相关系数是比较好的, 缺失值用均值代替。 注意: 样本减去均值, cosine就跟pearson等价了!


    推荐系统_第5张图片
    similarity
  • 接下来就是做推荐了。一种是user-user, 另外一种是item-item。 user-user就是加权平均相近用户的评分, 得到user的评分。


    推荐系统_第6张图片
    recommend
  • item-item的一种方法是跟user-user一样。 根据item i的特征, 找出用户x有评价的商品中跟item i评分接近的item。 然后根据item之间的相似度作为权重因子, 乘上用户的评分。


    推荐系统_第7张图片
    another
  • 例子。下面的例子是用item-item估计用户5对movie 1的评分。 基本步骤就是用皮尔森相关系数衡量用户5有评分的movie之间的相似度, 然后进行加权平均, 这样就得到了用户的评分了。 以上是从行的观点来看; user-user是从列的观点来看, 这种一种对偶的做法: 找到对movie 1 有评分的用户中与用户5接近的, 然后用其它用户的评分加权平均作为用户5的评分。 可以看出来user-user受其它用户的影响比较大, 而item-item利用的是用户本身对其它商品的评价来得到评价, 在实际应用中这种做法是比较好的。


    推荐系统_第8张图片
    example

    推荐系统_第9张图片
    example
  • 协同过滤的好处是不用构建特征, 但是存在如下的问题:需要足够的用户评分来构建系统; 矩阵是稀疏的, 找到有评价的相邻用户是困难的; 一个新来的item是无法进行评价的, 因为没有用户评分; 趋于推荐popular item。


    推荐系统_第10张图片
    pros/cons
  • 在实际中, 为了解决上述提到的问题, 引入全局统计信息, 评分的公式是用如下的公式的。 u是整个系统的用户的评分的均值, bx是用户x对均值u的偏移量(也就是用户对系统全部用户评分的偏移), bi是该item对均值u的偏移量。 最终对global 信息和协同过滤的评分相加作为最终的评分。


    推荐系统_第11张图片
    practice

你可能感兴趣的:(推荐系统)