zoukankan      html  css  js  c++  java
  • 推荐算法简介:基于用户的协同过滤、基于物品的协同过滤、基于内容的推荐

    参考来源: https://blog.csdn.net/u011748319/article/details/90269818

    1、推荐算法

    1.1、协同过滤

    协同过滤是目前应用最广泛的推荐算法,它仅仅通过了解用户与物品之间的关系进行推荐,而根本不会考虑到物品本身的属性。

    可分成两类:

    1、基于用户(user-based)的协同过滤

    2、基于商品(item-based)的协同过滤

    1.1.1、基于用户的协同过滤

    基本思想:

    基于用户对物品的偏好找到邻居用户(相似用户),然后将邻居用户(相似用户)喜欢的东西推荐给当前用户。

    (用户喜欢那些和他有相似爱好的用户喜欢的东西)

    计算方法:

    将一个用户对所有物品的偏好作为一个向量,计算用户之间的相似度。找到邻居后,根据邻居的相似度权重以及他们对物品的偏好,预测

    当前用户未涉及的物品,计算得到一个排序的物品列表作为推荐。

    相似度即为两个向量之间的距离。距离越小相似度越大。

    比如:用户A与用户B相似,那么就会给用户A推荐 “用户A未涉及但是用户C喜欢的东西” ,也就是物品D了。

    缺点:

    基于用户的协同过滤难以形成有意义的邻居集合。

    在很多时候,很多用户两两之间只有很少几个共同评分,也就是用户之间的重合度并不高。而仅有的共同打了分的物品,往往是一些很常见的物品(如票房大片,如生活必需品)

    再者,用户之间的距离可能会变得很快,这种离线算法难以瞬间更新推荐结果。

    1.1.2、基于物品的协同过滤

    算法思想:

    基于用户对物品的偏好找到相似的物品,然后根据用户的历史偏好,推荐相似的物品。

    (用户喜欢跟他过去喜欢的物品相似的物品)

    计算方法:

    将所有用户对某个物品的偏好作为一个向量来计算物品之间的相似度。

    得到物品的相似物品后,根据用户历史的偏好预测当前用户还没有涉及的物品的偏好,计算得到一个排序的物品列表作为推荐。

    比如:物品A和物品C都被用户A和用户B所查看,所以物品A和物品C比较相似。又由于用户C看了物品A,所以我们就会推荐与之相似的物品C给用户C。

    优点:

    物品之间的距离可能是根据成千上万的用户的评分计算得出,往往能在一段时间内保持稳定。因此,这种算法可以预先计算距离,

    其在线部分能更快的生产推荐列表。

    缺点:

    不同领域的最热门物品之间经常具有较高的相似度。比如,基于算法,我们可能会给喜欢《算法导论》的同学推荐《哈利波特》,也就是

    推荐不同领域的畅销作品,这样的推荐结果可能并不是我们想要的。

    1.1.3、实现协同过滤的步骤

    1、收集用户偏好

    2、找到相似的用户或物品

    计算相似度的方式

    欧式距离

    余弦距离

    Tanimoto系数

    k近邻或基于相似度门槛

    3、计算推荐

    额外考虑时间因素:

    1、在基于商品的协同过滤中:
    (1)同一个用户在间隔很短的时间内喜欢的两件商品之间,可以给予更高的相似度。

    (2)在描述目标用户偏好时,给其最近喜欢的商品较高权重。

    2、在基于用户的协同过滤中:

    (1)如果两个用户同时喜欢了相同的物品,那么可以给这两个用户更高的相似度。

    (2)在描述邻居用户的偏好时,给其最近喜欢的物品较高权重。

    1.2.基于内容的推荐

    基本思想:

    根据推荐物品或内容的元数据,发现物品或者内容的相关性,然后基于用户以往的喜好记录,推荐给用户相似的物品。

    例子:

    电影A和C的类型都是爱情和浪漫,那么就会给看过电影A的人推荐电影C

    1.3.三种推荐算法的区别

    基于用户的协同过滤:

    适于物品比用户多、物品时效性较强的情形,否则计算慢。

    推荐结果的个性化较弱,较宽泛,但能实现跨领域、精细度高的结果。

    基于物品的协同过滤:

    应用最广泛,尤其以电商行业为典型。

    适于用户多,物品少的情形,否则计算慢。

    在物品冷启动、数据稀疏时效果不佳

    推荐精度高,更具个性化

    倾向于推荐同类商品,推荐的多样性不足,形成信息闭环。

    基于内容的推荐:
    是最直观的算法

    容易受限于对文本、图像、音视频的内容进行描述的详细程序

    常借助于文本相似度计算

    不存在冷启动的问题

    但推荐精度通常垫底

    主题过于集中,精细度不足。

  • 相关阅读:
    C 获取编译日期函数
    C# HttpWebRequest 使用,一个Http分析Demo
    C# 字节序调整
    char/wchar_t之间的互转MultiByteToWideChar和WideCharToMultiByte的用法
    前导声明代替头文件依赖和交叉包含
    MFC network address control使用
    [收藏]POSIX标准
    带引用计数的智能指针
    C# string byte[] 转换
    DIV随鼠标滚动
  • 原文地址:https://www.cnblogs.com/ssqq5200936/p/12638507.html
Copyright © 2011-2022 走看看