推荐系统系列之隐语义模型
一、隐语义模型的基本思想
隐语义模型是近年来推荐系统领域较为热门的话题,它主要是根据隐含特征将用户与物品联系起来。
现从简单例子出发介绍隐语义模型的基本思想。假设用户A喜欢《数据挖掘导论》,用户B喜欢《三个火枪手》,现在小编要对用户A和用户B推荐其他书籍。基于 UserCF(基于用户的协同过滤),找到与他们偏好相似的用户,将相似用户偏好的书籍推荐给他们;基于ItemCF(基于物品的协同过滤),找到与他们 当前偏好书籍相似的其他书籍,推荐给他们。其实还有一种思路,就是根据用户的当前偏好信息,得到用户的兴趣偏好,将该类兴趣对应的物品推荐给当前用户。比 如,用户A喜欢的《数据挖掘导论》属于计算机类的书籍,那我们可以将其他的计算机类书籍推荐给用户A;用户B喜欢的是文学类数据,可将《巴黎圣母院》等这 类文字作品推荐给用户B。这就是隐语义模型,依据“兴趣”这一隐含特征将用户与物品进行连接,需要说明的是此处的“兴趣”其实是对物品类型的一个分类而 已。
二、隐语义模型的数学理解
我们从数学角度来理解隐语义模型。如下图所示,R矩阵是用户对物品的偏好信息(Rij表示的是user i对item j的兴趣度),P矩阵是用户对各物品类别的一个偏好信息(Pij表示的是user i对class j的兴趣度),Q矩阵是各物品所归属的的物品类别的信息(Qij表示的是item j在class i中的权重)。隐语义模型就是要将矩阵R分解为矩阵P和矩阵Q的乘积,即通过矩阵中的物品类别(class)将用户user和物品item联系起来。实际 上我们需要根据用户当前的物品偏好信息R进行计算,从而得到对应的矩阵P和矩阵Q。
三、隐语义模型所解决的问题
从上面的陈述我们可以知道,要想实现隐语义模型,我们需解决以下问题:
如何对物品进行分类,分成几类?
如何确定用户对哪些物品类别有兴趣,兴趣程度如何?
对于一个给定的类,选择这个类中的哪些物品进行推荐,如何确定物品在某个类别中的权重?
对于第一个问题,就是找对应的编辑人进行人工分类,但是人工分类会存在以下问题:
当前的人工分类不能代表用户的意见:比如一本《数据挖掘导论》,从编辑人员的角度看会属于计算机类,但从用户来看,可能会归到数学类;
难以把握分类的粒度:仍以《数据挖掘导论》为例,可分类得粗一点,属于计算机类,也可分得再细一点,属于计算机类别中的数据挖掘类;
难以给一个物品多个类别:一本小说可归为文学类,或言情类等;
难以给出多维度的分类:对物品的分类可从多个角度进行,比如一本书可从内容进行分类,也可从作者角度进行分类;
难以确定一个物品在某一分类中的权重:一个物品可能属于多个类别,但是权重不同;
基于以上局限性,显然我们不能靠由个人的主观想法建立起来的分类标准对整个平台用户喜好进行标准化。隐语义模型是从用户的偏好数据出发进行个性推荐的,即基于用户的行为统计进行自动聚类,所以能解决以上提到的5个问题:
隐语义模型是基于用户的行为数据进行自动聚类的,能反应用户对物品的分类意见;
我们可以指定将物品聚类的类别数k,k越大,则粒度越细;
隐语义模型能计算出物品在各个类别中的权重,这是根据用户的行为数据统计的,不会只将其归到一类中;
隐语义模型得到的物品类别不是基于同一个维度的,维度是由用户的共同兴趣决定的;
四、隐语义模型的样本问题
隐语义模型在显性反馈数据(也就是评分数据)上能解决评分预测问题并达到了很好的精度。不过推荐系统主要讨论的是隐性反馈数据集,这种数据集的特点 是只有正样本(用户喜欢什么物品),而没有负样本(用户对什么物品不感兴趣)。那么,在隐性反馈数据集上应用隐语义模型解决推荐的第一个关键问题就是如何 给每个用户生成负样本。我们发现对负样本采样时应该 遵循以下原则:
对每个用户,要保证正负样本的平衡(数目相似);
每个用户采样负样本时,要选取那些很热门,而用户却没有行为的物品:一般认为,很热门而用户却没有行为更加代表用户对这个物品不感兴趣。因为对于冷门的物 品,用户可能是压根没在网站中发现这个物品,所以谈不上是否感兴趣;
五、隐语义模型的推导思路
隐语义模型是根据如下公式来计算用户U对物品I的兴趣度。
其中,隐语义模型会把物品分成K个类型,这个是我们根据经验和业务知识进行反复尝试决定的,p(u,k)表示用户u对于第k个分类的喜爱程度(1 < k <= K),q(k, i)表示物品i属于第k个分类的权重(1 < k <= K)。
现在我们讨论下如何计算矩阵P和矩阵Q中的参数值。一般做法就是最优化损失函数来求参数。
损失函数如下所示:
上式中的
是用来防止过拟合的正则化项,λ需要根据具体应用场景反复实验得到。损失函数的意义是用户u对物品i的真实喜爱程度与推算出来的喜爱程度的均方根误差,通俗 来说就是真实的喜爱程度与推算的喜爱程度的误差,要使模型最合理当然就是使这个误差达到最小值。公式中最后两项是惩罚因子,用来防止分类数取得过大而使误 差减少的不合理做法的发生,λ参数是一个常数,需要根据经验和业务知识进行反复尝试决定的。
损失函数的优化使用随机梯度下降算法:
1)对两组未知数求偏导数
2)根据随机梯度下降法得到递推公式
其中α是在梯度下降的过程中的步长(也可以称作学习速率),这个值不宜过大也不宜过小,过大会产生震荡而导致很难求得最小值,过小会造成计算速度下降,需 要经过试验得到最合适的值。最终会求得每个用户对于每个隐分类的喜爱程度矩阵P和每个物品与每个隐分类的匹配程度矩阵Q。在用户对物品的偏好信息矩阵R 中,通过迭代可以求得每个用户对每个物品的喜爱程度,选取喜爱程度最高而且用户没有反馈过的物品进行推荐。
在隐语义模型中,重要的参数有以下4个:
1)隐分类的个数F;
2)梯度下降过程中的步长(学习速率)α;
3)损失函数中的惩罚因子λ;
4)正反馈样本数和负反馈样本数的比例ratio;
这四项参数需要在试验过程中获得最合适的值.1)3)4)这三项需要根据推荐系统的准确率、召回率、覆盖率及流行度作为参考, 而2)步长α要参考模型的训练效率。
六、优缺点分析
隐语义模型在实际使用中有一个困难,那就是它很难实现实时推荐。经典的隐语义模型每次训练时都需要扫描所有的用户行为记录,这样才能计算出用户对于 每个隐分类的喜爱程度矩阵P和每个物品与每个隐分类的匹配程度矩阵Q。而且隐语义模型的训练需要在用户行为记录上反复迭代才能获得比较好的性能,因此 LFM的每次训练都很耗时,一般在实际应用中只能每天训练一次,并且计算出所有用户的推荐结果。从而隐语义模型不能因为用户行为的变化实时地调整推荐结果 来满足用户最近的行为。
作者:萌新之机器学习
链接:https://www.jianshu.com/p/7b6bb28c1753
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
推荐阅读:
1,【深度学习】⑤--自然语言处理的相关应用
2,深度解析京东个性化推荐系统演进史
3,基于Spark Mllib的文本分类
4,案例:Spark基于用户的协同过滤算法
推荐系统系列之隐语义模型相关推荐
- 推荐系统中的隐语义模型
使用LFM(Latent factor model)隐语义模型进行Top-N推荐 最近在拜读项亮博士的<推荐系统实践>,系统的学习一下推荐系统的相关知识.今天学习了其中的隐语义模型在Top ...
- 推荐系统(5)—隐语义模型(LFM)
https://www.toutiao.com/a6663676280782717454/ 2019-03-02 14:27:17 基本概念 LFM(latent factor model)隐语义模型 ...
- 【推荐系统(二)】协同过滤之隐语义模型(LFM)
文章目录 一.引例 二.LFM 主要思想 训练样本构造 损失函数定义 参数学习 调参相关 三.小结 优点 缺点 基于用户行为分析的推荐算法一般称为协同过滤算法.所谓协同过滤,就是指众多的用户可以齐心协 ...
- 大数据之推荐系统梗概---以ALS隐语义模型为例
看过视频网站的小伙伴们有好奇过每次打开app出现的内容究竟是怎么来的呢,为啥自己的和别人的会不一样呢,接下来就开始我们的解密之旅. 当我们注册一个网站会员的时候多半会让我们挑选自己感兴趣的频道,这样系 ...
- 协同过滤与隐语义模型推荐系统实例3: 基于矩阵分解(SVD)的推荐
[ 协同过滤与隐语义模型推荐系统实例1: 数据处理 ] [ 协同过滤与隐语义模型推荐系统实例2: 基于相似度的推荐 ] 隐语义模型推荐 基于矩阵分解(SVD)的推荐 # 先计算歌曲被当前用户播放量/用 ...
- 电商推荐系统(上):推荐系统架构、数据模型、离线统计与机器学习推荐、历史热门商品、最近热门商品、商品平均得分统计推荐、基于隐语义模型的协同过滤推荐、用户商品推荐列表、商品相似度矩阵、模型评估和参数选取
文章目录 第1章 项目体系架构设计 1.1 项目系统架构 1.2 项目数据流程 1.3 数据模型 第2章 工具环境搭建 2.1 MongoDB(单节点)环境配置 2.2 Redis(单节点)环境配置 ...
- Python推荐系统学习笔记(1)基于协同过滤的个性化推荐算法实战---隐语义模型
一.相关概念: 1.隐语义模型(LFM) 通过矩阵分解建立用户和隐类之间的关系,物品和隐类之间的关系,最终得到用户对物品的偏好关系. 假设我们想要发现 F 个隐类, 我们的任务就是找到两个矩阵 U 和 ...
- python实现lfm_推荐系统之隐语义模型(LFM)
一 基本概念 LFM(latent factor model)隐语义模型,这也是在推荐系统中应用相当普遍的一种模型.那这种模型跟ItemCF或UserCF有什么不同呢?这里可以做一个对比: 对于Use ...
- 【推荐系统】隐语义模型(LFD)与矩阵分解(Matrix Factorization)
如果需要完整代码可以关注下方公众号,后台回复"代码"即可获取,阿光期待着您的光临~ 文章目录 1.隐语义模型与矩阵分解 2.隐语义模型(Latent Factor Model) 3 ...
- 电商推荐系统四: 基于隐语义模型的协同过滤推荐
四.离线推荐服务建设(基于隐语义模型的协同过滤推荐) 目录 四.离线推荐服务建设(基于隐语义模型的协同过滤推荐) 4.1 离线推荐服务 4.2 离线统计服务 4.3 基于隐语义模型的协同过滤推荐 4. ...
最新文章
- 在三层交换机上配置DHCP
- MySQL 5.6 手册 第三章 目录
- iOS基本UI控件总结
- 美团面试一道场景设计题
- Feature event receviers
- unity怎么在文本中修改字体_[专栏作家]UGUI中CustomFont字体使用与制作
- 重拾Java Network Programming(一)IO流
- Android源码查看下载
- 软件测试入门知识了解
- js undefined和null区别
- 【高级篇 / SDWAN】(7.0) ❀ 03. SD-WAN 链路负载均衡的模式 ❀ FortiGate 防火墙
- 十六进制RGB颜色名称对照表
- DICOM的理解与学习2
- 计算机毕设(附源码)JAVA-SSM基于Internet快递柜管理系统
- 运营老司机分享:APP运营推广那些事
- explicit,violate,volatile,mutable
- CSDN超简单的上传gif动图方法
- PAT 乙级 1058 选择题 python
- 计算机如何访问苹果6s的相册,苹果手机怎么连接到电脑传照片 两种方法帮你实现!...
- html css before,详解 CSS 属性 - :before :after
热门文章
- vnc远程软件,盘点六款你值得拥有的vnc远程软件
- 手机vnc远程控制软件,2步完成手机vnc远程控制软件的安装和使用
- cocos creator性能优化合集
- 【正点原子STM32连载】第五十二章 FPU测试(Julia分形)实验摘自【正点原子】MiniPro STM32H750 开发指南_V1.1
- Thread 类创建线程的五种基本写法
- java操作mysql视图_MySQL使用视图
- 【数据分析与科学计算可视化】numpy 和 matplotlib库总结
- 找同学 字典 11.12
- 2018-DeepLabV3+论文解读
- Boost电路实战详解!(高效率同步整流,PID闭环追踪)