1. 协同过滤(CF)

协同过滤分基于用户和基于物品的协同过滤,不管哪种方式,计算步骤如下:

I. 收集用户偏好
II. 找到相似的用户或物品

III. 计算推荐
所谓的用户偏好就是:用户与物品之间的联系,如评分、投票、转发、保存书签、标记标签等用户行为。

所谓的相似用户(或物品)就是:计算向量间的相似度。举例如下:

有用户ABCDE,以及他们对商品1和商品2的打分,建立笛卡尔坐标系,横轴是用户对商品1的评分,纵轴是用户对商品2的评分,那么用户A和用户E的相似度就是AE的欧氏距离。

对于相似度,我们有多种计算方式:欧氏距离,皮尔逊相关系数,COS相似度等,目前应用比较广泛的是皮尔逊相关系数。计算公式如下:
I. 欧几里得距离公式

II. 皮尔逊相关系数(协方差除以标准差)

III. COS相似度

相似度计算好后,选择相似的用户或物品的方式有两种:一是选择固定前几位,二是选择一个阈值,该阈值范围内的都是近邻

协同过滤到此可分别分析基于用户和基于物品的协同过滤。

1.1. 基于用户的协同过滤


核心思想:计算用户之间的相似度,比如上面A和C的相似度高,那么把C喜欢的物品D推荐给A。这里计算相似度时,可以将用户对物品的喜好映射成向量再计算相似度,比如用户A的向量是[1 0 1 0],用户B的向量是[0 1 0 0]
这种模型的问题:
I. 基于用户的协同过滤会产生一张很大的稀疏矩阵(比如淘宝用户几亿,商品千千万万,每人喜好就那几样,比如我买过一样调料品,我对应的向量是[000000...001000...0000],只有某列为1,其余全为0)
II. 我们计算相似度需要两两计算,如果有5亿用户就得计算次,计算量太大
III. 对于新用户,无法得到可用向量
IV. 如果一个物品卖得好,但是相邻用户没有打分,这个物品就不会被推荐,则进入恶性循环。
针对这些问题的相关建议:

I. 相似度计算用皮尔逊相关系数
II. 用户相似度上再乘以,n为共同打分数,N为设置的阈值,这是基于共同的喜好的数目,进一步筛选相似的用户
III. 对数据进行归一化,消除数据本身的影响

IV. 设置阈值,阈值范围内的就是近邻。

1.2. 基于物品的协同过滤


核心思想:计算物品之间的相似度,比如上图A与C相似度高,那么把物品C推荐给喜欢物品A的用户C。这里计算相似度,把用户对商品的喜好映射成向量,比如物品A的向量是[1 1 1],物品B的向量是[0 1 0]。
这种模式的优势:
I. 通常情况下物品数量远远小于用户数量,这样基于物品的向量计算量会小些

II. 可以预想计算相似度,物品是不会变的,人的喜好是会变的

1.3. 冷启动问题

不管是基于用户的协同过滤还是基于物品的协同过滤,都会遇到冷启动问题:
基于用户冷启动问题:
I. 引导用户把自己的属性表达出来(不如第一次进入会问你感兴趣的领域)
II. 利用现有的开放数据平台获取用户属性
III. 利用注册信息(不是很好)
IV. 推荐排行榜单,大众从众心理,再慢慢收集用户喜好
基于物品冷启动问题:

I. 文本分析
II. 主题建模
III. 打标签
IV. 推荐排行榜单
前三种是根据物品的描述
两种协同过滤的比较:

应用场景,基于用户的协同过滤:时事新闻,突发情况;基于物品的协同过滤:电子商务,电影等。

2. 隐语义模型(LFM)

协同过滤是基于统计学,这种模型可以很好地解释,但隐语义模型中包含两个隐含因子,类似于神经网络的隐藏层,根本不好解释隐含因子与最终结果有什么直观联系,但这并不妨碍我们去做这个模型。我们只需要根据现有的数据去训练出合适的隐含因子,使得目标函数最优化,那么模型就是可用的。
    LFM在各项指标性能上均优于UserCF和ItemCF。但当数据集非常稀疏时,LFM的性能明显下降。甚至不如UserCF和ItemCF。

2.1. 对隐含语义模型的理解

我有N个用户对M个电影的评分数据

首先,我要对这个N*M矩阵进行分解,得出用户与隐含因子的关系(F*N矩阵),电影与隐含因子的关系(F*M矩阵),当然事先你可以随便设置这两个矩阵。然后与最终结果对比,即损失值,然后反向传播更新隐含因子,使得隐含因子下的目标函数损失最小。这个过程类似BP神经网络。

得到最优的F*N,F*M矩阵,再计算F*N的转置矩阵乘以F*M,还原为N*M矩阵,如下图

2.2. 目标函数


有了目标函数,对目标函数求偏导,就完成了

参数选择:

I. 特征个数F不要太大,类似神经网络中的神经元个数
II. 学习率不好太大
III. 正则项参数不要太大
IV. 负样本/正样本比例确定好,根据准确率、召回率、覆盖率确定。

协同过滤算法----隐语义模型相关推荐

  1. 协同过滤与隐语义模型推荐系统实例3: 基于矩阵分解(SVD)的推荐

    [ 协同过滤与隐语义模型推荐系统实例1: 数据处理 ] [ 协同过滤与隐语义模型推荐系统实例2: 基于相似度的推荐 ] 隐语义模型推荐 基于矩阵分解(SVD)的推荐 # 先计算歌曲被当前用户播放量/用 ...

  2. 【推荐系统(二)】协同过滤之隐语义模型(LFM)

    文章目录 一.引例 二.LFM 主要思想 训练样本构造 损失函数定义 参数学习 调参相关 三.小结 优点 缺点 基于用户行为分析的推荐算法一般称为协同过滤算法.所谓协同过滤,就是指众多的用户可以齐心协 ...

  3. 推荐系统协同过滤算法——矩阵分解模型

    文章目录 一.简介 1.推荐系统的输入 1)显式反馈 2)隐式反馈 2.重点内容 3.关联用户与物品的两种CF技术 1)基于邻域的方法 2)隐语义模型 隐语义空间: 4.内容总结 二.预备知识 符号 ...

  4. 推荐系统算法—隐语义模型(LFM)详解

    文章目录 基本思想 数学原理 协同过滤算法主要包括基于用户的协同过滤(User-Based CF).基于物品的协同过滤(Item-Based CF).隐语义模型(Latent Factor Model ...

  5. 推荐系统-经典协同过滤算法【基于记忆的协同过滤算法、基于模型的协同过滤算法】

    推荐系统-经典协同过滤理论基础实践 1.协同过滤推荐方法CF简介 协同过滤CF 基于记忆的协同过滤 ---- 用户和物品的相似度矩阵 用户相似度的推荐 物品相似度推荐 UserCF用户协同过滤算法 I ...

  6. EM算法之推荐系统(二)隐语义模型

    一.隐语义模型 1.1 隐语义模型概述 将用户和物品都转化为隐语义,将这两个通过隐语义进行组合,我们需要做的是通过数据出发,进行个性化的推荐:物品和用户之间可能存在着隐含的联系,因此我们需要建立隐含的 ...

  7. springboot采用协同过滤算法的视频推荐系统的设计与实现毕业设计源码261620

    摘  要 现阶段,社会的发展和科技的进步,以及大数据时代下纷繁数据信息的融合,使得人们在生产及生活过程中,都将会接收到各种类型的数据信息,而通过计算机技术与网络技术,则能够将众多人们所不了解或不常用的 ...

  8. Springboot+采用协同过滤算法的视频推荐系统的设计与实现 毕业设计-附源码261620

    摘  要 现阶段,社会的发展和科技的进步,以及大数据时代下纷繁数据信息的融合,使得人们在生产及生活过程中,都将会接收到各种类型的数据信息,而通过计算机技术与网络技术,则能够将众多人们所不了解或不常用的 ...

  9. (附源码)springboot+mysql+采用协同过滤算法的视频推荐系统的设计与实现 毕业设计261620

    摘 要 现阶段,社会的发展和科技的进步,以及大数据时代下纷繁数据信息的融合,使得人们在生产及生活过程中,都将会接收到各种类型的数据信息,而通过计算机技术与网络技术,则能够将众多人们所不了解或不常用的信 ...

最新文章

  1. 2021年吴文俊人工智能科学技术奖获奖名单公示!潘云鹤院士获最高成就奖
  2. Leetcode 150. 逆波兰表达式求值 解题思路及C++实现
  3. Rpm包的安装与yum的配置
  4. AI理论知识基础(20)-线性变换(2),转换矩阵,相似矩阵,坐标向量
  5. spark-jobserver介绍: 提供了一个 RESTful 接口来提交和管理 spark 的 jobs、jars 和 job contexts
  6. java kafka 消费_java编程之Kafka_消费者API详解
  7. Ruby Shanghai 2014年终聚会总结
  8. killall 后面信号_Linux 下使用 killall 命令终止进程的 8 大用法
  9. 《MySQL——增删改查以及常用语法》
  10. 如果人生只剩最后一天,你想在这天干什么?
  11. Emacs中打造强大的Python IDE
  12. Matlab除法结果取整
  13. 图像辨识系统神经网络图,图像识别技术神经网络
  14. java二分法流程图,程序框图的法(二分法).ppt
  15. CCNA上机实验_19-PPP
  16. [51nod1457]小K vs. 竹子
  17. 【用户研究】【实战】——“得到”APP 可用性测试
  18. 上帝叫我牵一只蜗牛去散步
  19. Vue 实现翻页器 下一页 处理显示多页面要下一页非表格
  20. 井冈山大学专属中秋月饼

热门文章

  1. git解决冲突的方法
  2. linux远程登陆服务器——一键式操作
  3. SSM+MYSQL 中药方剂管理与查询小程序源码71796
  4. 安卓app网页支付唤不起支付宝_小米手表官宣:能安装微信、支付宝等APP
  5. unity音频 Android,unity发布到Android的音频解决方案
  6. 7 个超实用的 MySQL 语句写法,加薪指日可待!
  7. ESP-01SWIFI模块上手使用
  8. Spark2自定义Driver和Executor端口范围
  9. 计算机网络基本知识(五):ISO/OSI网络体系结构简介
  10. 三位数码管实验报告-数字系统实验