zoukankan      html  css  js  c++  java
  • 基于内容的推荐、协同过滤

    基于内容的推荐

    需要分析内容,无需考虑其他用户的行为,例如基于用户喜欢的item的属性/内容进行推荐

    通常使用在文本相关产品上进行推荐     

    使用词袋模型来衡量不同文本的相似度,每个词的权重可以使用频率或者tf-idf表示

    相似度计算公式一般使用余弦相似度

     

    协同过滤(CF)

    基于用户的协同过滤

    找到和用户最近的其他用户,找到其他用户看过或者买过但当前用户没有看过或者买过的item,根据用户与其他用户距离的远近进行打分,找到得分最高的item进行推荐。

    Tip: 基于用户的协同过滤求相似度时应该先去均值

    基于物品的协同过滤

    根据用户对商品或者内容的行为,计算item与item的相似度,找到和当前item最近的进行推荐

    相似度/距离度量方法

    欧式距离:

     

    Jaccard相似度:

     

    余弦相似度:

     

    Pearson相似度:

     

    User CF vs Item CF

    工业上一般使用Item CF,应为一般情况下用户太多,远多于商品的数量,并且Item CF更加稳定,例如随着时间的推移,物品之间的相似度基本不发生变化,而由于个人兴趣的改变,User CF的用户之间的相似度很可能发生较大的变化。

     

    CF优缺点

    协同过滤优点

    基于用户行为,因此对推荐内容无需先验知识

    只需要用户和商品关联矩阵即可,结构简单

    在用户行为丰富的情况下,效果好

    协同过滤缺点

    需要大量的显性/隐性用户行为

    需要通过完全相同的商品关联,相似的不行

    假定用户的兴趣完全取决于之前的行为,而和当前上下文环境无关

    在数据稀疏的情况下受影响。可以考虑二度关联。(如U1与U2无关联,而U1、U2与U3都关联)

    冷启动问题

    对于新用户,所有推荐系统对于新用户都有这个问题,一般的解决办法:

    1) 推荐非常热门的商品,收集一些信息

    2) 在用户注册的时候收集一些信息

    3)在用户注册完之后,用一些互动游戏等确定喜欢与不喜欢

    4)对于新商品,根据本身的属性,求与原来商品的相似度。Item-based协同过滤可以推荐出去。

     

  • 相关阅读:
    IOS无线客户端自动化测试
    junit 测试报错 java.lang.Exception: No runnable methods
    mysql varchar(128)可以存多少汉字
    求两个数的百分比
    日期转换
    两个 integer 值判断是否相等
    整洁代码之道——重构
    Eclipse里项目名有红叉,但是底下的每一个文件都没有红叉
    #dubbo# XML文件报错dubbo:XX解决方法
    String处理入门
  • 原文地址:https://www.cnblogs.com/yongfuxue/p/10096011.html
Copyright © 2011-2022 走看看