目录

1、LFM算法原理

2、LFM数学原理

3、应用场景

4、python实现

5、总结

算法原理:LFM(later factor model)是一种基于矩阵分解的召回算法,输入UI点展矩阵,输出是P和Q两个矩阵。

建模公式:

损失函数求解:

梯度下降法求解L2平方损失LFM与Item CF比较:

理论基础:LFM采用平方损失函数进行最小化求解,特征是隐特征,由模型习得;ItemCF基于公式计算,缺少学习过程,因此两者理论基础上前者更充分。

离线空间时间复杂度:ItemCF 空间复杂度是item的平方,LFM空间复杂度是user*F(隐因子数)+item*F。后者空间复杂度更低;时间复杂度处于一个数量级。

在线推荐与推荐解释:LFM根据模型产出的user向量*item向量离线计算出用户喜爱列表,取toplike存入redis,如果item数量多,则计算时间复杂度高;ItemCF离线计算通常只计算某个类别下的item sim列表,然后取topk,离线存储供在线推荐。实时响应方面,用户有新行为时LFM不能对用户实时行为进行模型重新训练和感知,后者重新计算item sim列表时间复杂度更低,响应更灵活。

应用场景:

计算用户的toplike:计算user对item的喜爱度得分取top,完成用户喜爱度列表。

计算物品的topsim:对item矩阵离线计算相似度,完成在线item点击实时推荐。

计算item的topic:使用聚类算法,完成item按簇分类。

总结:LFM是传统机器学习中基于矩阵分解的思想,将UI矩阵分解为User和Item两个矩阵,然后利用余弦相似度等距离公式,计算用户对物品的喜好得分。与ItemCF相比有较强的理论基础,缺点是计算时间复杂度高(梯度下降法求解损失函数)

python实现lfm_推荐系统召回算法之——LFM(矩阵分解)相关推荐

  1. 推荐算法之隐语义模型(LFM)矩阵分解梯度下降算法实现

    推荐算法之隐语义模型(LFM)矩阵分解梯度下降算法实现 基于协同过滤的推荐一般分为基于近邻的推荐和基于模型的推荐,其中,基于近邻是指预测时直接使用用户已有的偏好数据,通过近邻数据来预测新物品的偏好.而 ...

  2. TensorFlow2实现协同过滤算法中的矩阵分解(首家基于TS2版本)

    目标: 用TensorFlow2,实现协同过滤算法中的矩阵分解.网上找的绝大部分是基于一个模板复制出来的,且基于TensorFlow1,因此本人亲自动手,用TensorFlow2实现. 好奇为什么Te ...

  3. python实现lfm_推荐系统-基于矩阵分解的LFM模型

    这里我想给大家介绍另外一种推荐系统,这种算法叫做潜在因子(Latent Factor)算法.这种算法是在NetFlix(没错,就是用大数据捧火<纸牌屋>的那家公司)的推荐算法竞赛中获奖的算 ...

  4. 矩阵奇异值分解特征值分解_推荐系统中的奇异值分解与矩阵分解

    矩阵奇异值分解特征值分解 Recently, after watching the Recommender Systems class of Prof. Andrew Ng's Machine Lea ...

  5. 矩阵sum_推荐系统——从协同过滤到矩阵分解

    本文简单扼要地介绍推荐算法中的两种经典算法:协同过滤和矩阵分解.内容有以下三部分 协同过滤算法 矩阵分解 协同过滤与矩阵分解的关系 早期的推荐系统以业务理解为核心,通过复杂的规则描述来向用户推荐商品, ...

  6. 推荐系统--联邦学习下的矩阵分解(6)

    推荐系统–矩阵分解(1) 推荐系统–矩阵分解(2) 推荐系统–矩阵分解(3) 推荐系统–矩阵分解(4) 推荐系统–矩阵分解(5) 推荐系统–矩阵分解(6) 9 应用于联邦学习的矩阵分解 这个部分主要参 ...

  7. 推荐系统组队学习03、矩阵分解

    矩阵分解 矩阵分解 矩阵分解算法的原理 **矩阵分解算法的求解** Basic SVD 编程实现 补充 协同过滤算法: 特点: 仅利用了用户与物品的交互信息就可以实现推荐,是一个可解释性很强, 非常直 ...

  8. 矩阵分解java_推荐系统基础:使用PyTorch进行矩阵分解进行动漫的推荐

    我们一天会遇到很多次推荐--当我们决定在Netflix/Youtube上看什么,购物网站上的商品推荐,Spotify上的歌曲推荐,Instagram上的朋友推荐,LinkedIn上的工作推荐--列表还 ...

  9. python实现lfm_推荐系统之隐语义模型(LFM)

    一 基本概念 LFM(latent factor model)隐语义模型,这也是在推荐系统中应用相当普遍的一种模型.那这种模型跟ItemCF或UserCF有什么不同呢?这里可以做一个对比: 对于Use ...

最新文章

  1. 250g硬盘linux分区,linux分区格式化命令使用方法
  2. 技术什么时候才叫牛?搞技术什么时候是个头?
  3. html中open打开新网页,JavaScript-打开新窗口(window.open)
  4. js滚动条下拉一定值_JS逆向 | *APD模拟登录(AES)
  5. [No000018]都在背单词,为啥学霸那么厉害-如何在一天内记200个单词?
  6. SAP BW增量队列深入研究
  7. android模拟器后台截屏,【Android】Android模拟器下截屏及格式转换
  8. Partial Sums ZOJ - 1569
  9. 从当前元素继续寻找_169. 多数元素
  10. iis+php解析漏洞修复,服务器解析漏洞分析和漏洞修复方法
  11. innerHTMLinnerHTML与innerText的区别outerHTMLinnerHTML与html的区别
  12. [C++ primer]优化内存分配
  13. 机器学习常见算法分类汇总
  14. java dwg转pdf_CAD处理控件Aspose.CAD转换功能演示:使用Java将DWG和DXF文件转换为PDF...
  15. 闵帆老师论文写作课程心得体会-怎么写好一篇论文
  16. 如何查看自己电脑的本地IP地址
  17. 【转载】参数返回值及NRV优化
  18. torch.nn.Conv2d() 用法讲解
  19. 我的计算机生涯--开始
  20. 苹果发布新款iPad Pro!就换了个「芯」,转换器骚操作笑翻网友

热门文章

  1. Fortify-Insecure Randomness
  2. 苹果cms最新漏洞总是被挂马跳转劫持 如何解决
  3. 年轻白领生活正被“公司化”(转载)
  4. 【路由交换01】什么是路由交换?
  5. Linux下补丁包(.patch文件)制作及使用[u-boot示例]
  6. 数字孪生高铁如何制作?VR古建筑供应商强荐广州华锐互动
  7. 懒汉克辽尼和铜城的故事
  8. PV操作实现进程同步问题
  9. SQL server 创建触发器详解
  10. python100例026