Lightfm学习记录

推荐参考资料

  • 官方文档
  • 仓库地址
  • 论文地址
  • LightFM推荐系统框架学习笔记
  • LightFM推荐模型库
  • (利于入门)how-i-would-explain-building-lightfm-hybrid-recommenders-to-a-5-year-old
  • (用处不大)协同推荐 + lightfm + 根据用户已读诗词推荐
  • (可能有用)Recommendation System in Python: LightFM
  • (进阶调参有用)针对推荐系统隐式和显式反馈的混合模型——lightFM(下:python场景实例)

上面的引用资料都很有用!

矩阵分解

日常业务中可以得到用户的行为数据(交互),如点赞/评分等,如三元组{userID,itemID,rate},但是复杂业务中矩阵会很大,且矩阵十分稀疏(可能1w个物品,用户A只点赞了5个,我们在lightfm中使用的就是scipycoo_matrixcsr_matrix)。我们的推荐,实际上就是预测这些空白项的值。因此我们引入矩阵分解,将这个大矩阵分解为两个较小的矩阵以实现降维,如M x N分解为M x kk x N,即把他们投射到k维(这个k无法解释,此时就成为隐向量了)。此时两个小矩阵重新一乘,原来有的项会近似相等,原来的空白项此时也有值,那么这些值就是预测值了。
而对于这个分解过程,就有一些算法和目标函数了,我暂时还没搞懂
按照论文的说法,至少比MF模型CB要好

混合模型

由于协同过滤需要历史交互数据,存在冷启动问题;同时由于基于内容的推荐没有使用交互,用户之间是孤立的,所以实际效果不如协同过滤。所以提出了混合模型,结合了基于内容的推荐(CB)和协同过滤的基于模型推荐(CF协同过滤,MF矩阵分解)两种方式,训练者可以传入用户/物品的特征信息(如地理位置/年龄)等,同时也传入交互信息{userID,itemID,rate},那么在数据少时仍可以基于用户物品的特征进行适当的推荐
所以,如果没有传入用户物品的特征信息,那么模型只是一个单纯的MF模型,基于内容是通过embedding实现的
而embedding是通过矩阵分解得到的,事实上M x k的矩阵都是embedding

论文解读(我是科研新人,如有不对欢迎指正)

模型的需求:1. 如果物品A和B经常同时被推荐,那么应该学到A和B非常相似 2. 模型能即时根据新数据进行更新
对于需求一,使用latent representation,根据交互信息确定两个物体的embedding的距离。
对于需求二,将用户和物体表示为内容特征的线性组合

对于predict,就是是对用户/物品的已分解出的特征矩阵进行点积,再加上偏置,得到一个值 r ^ u i \hat r_{ui} r^ui,这个就是MF模型的方法。但是这个 q u q_u qu p i p_i pi还有那两个偏置都是各特征之和(也算线性组合),所以也融入了一点CB的思想。
r ^ u i = f ( q u ⋅ p i + b u + b i ) \hat r_{ui} = f (q_u · p_i + b_u + b_i) r^ui=f(qupi+bu+bi)

目标函数是求最优化的分解出的矩阵,利用了交互信息,即对于交互信息(有正向和负向的交互),每个{user,item}对求出 r ^ u i \hat r_{ui} r^ui然后根据正负属性进行操作,累乘后再两部分相乘。
在这里插入图片描述
论文中提及的模型结构如下
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/693250.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C#开发AGV地图编辑软件

C#自己开发AGV地图编辑软件: 1、自由添加和删除站点、停车位、小车、运行路径。 2、编辑得地图以XML文件保存。 3、导入编辑好地图的XML文件。 4、程序都是源码,可以直接在此基础上进行二次开发。 下载链接:https://download.csdn.net/d…

隐匿的炸弹 — C语言的隐式声明

前言 (1)如果有嵌入式企业需要招聘湖南区域日常实习生,任何区域的暑假Linux驱动实习岗位,可C站直接私聊,或者邮件:zhangyixu02gmail.com,此消息至2025年1月1日前均有效 (2&#xff0…

【Python】OpenCV-图像轮廓检测初学

图像轮廓检测初学 在图像处理领域中,轮廓检测是一项重要的任务,用于寻找并标定图像中的物体边缘。本文将介绍如何使用OpenCV库进行图像轮廓检测,并展示一个简单的示例代码。代码中的注释将详细解释每一步的操作。 1. 引言 图像轮廓检测是图…

基于PSO优化的CNN多输入时序回归预测(Matlab)粒子群算法优化卷积神经网络时序回归预测

目录 一、程序及算法内容介绍: 基本内容: 亮点与优势: 二、实际运行效果: 三、部分代码: 四、完整程序下载: 一、程序及算法内容介绍: 基本内容: 本代码基于Matlab平台编译&…

PHP分析二维数据表(长度|数字字段|空值|纯姓名|英文用户名|科学计数|是否等长|是否唯一)

先看图&#xff0c;后有完整代码 <?php $t "Excel数据转Sql查询系统字段半智能分析"; $s "Excel复制过来的二维结构表内容,分析查询条件&#xff01;"; $x "字段|最大长度|长度有|数字字段|空值存在|纯姓名|英文用户名|科学计数|是否等长|是否…

无痛法门,助力学习

**注&#xff1a;**本文摘自一位网友“我就是贺生啊”&#xff0c;博主觉得很有道理&#xff0c;便想记录下来分享给大家。仅个人想法&#xff0c;谨慎参考&#xff0c;也欢迎大家说出自己的想法。 引言 在我们学习新知识的时候&#xff0c;会觉得很痛苦&#xff0c;制定学习…

【git】提交信息写错了,使用 amend 或者 reset 修改最近一次的提交信息 ,修改上上次/以前的提交信息

如果你的提交信息写错了&#xff0c;比如下面&#xff0c;你想修改【初始化项目】这5个字 修改最近一次的提交新的两个办法 &#xff08;1&#xff09;使用 reset 把这个提交重置&#xff0c;然后重新提交&#xff0c;reset 的使用方法请参考这篇文章。但是 reset 这种方法只能…

Django学习笔记-HTML实现MySQL的图片上传

1.django项目编写index.html代码 创建form表单,路由指向upload,请求方式post,enctype设置"multipart/form-data", post请求添加{% csrf_token %},编写两个input,上传和提交 2.添加upload路由 3.views中创建upload 1).获取上传的文件,没有上传则返回"没有指定…

2024年度最高人气的编程语言

本期共享的是 —— 年度地球人气最高的编程语言。 根据我们对人力资源专家和开发者的年度调查&#xff0c;目前市场需求量最大的 10 种编程技术是&#xff1a; Python&#xff08;42.1% 的受访者对具备该技能的候选人有大量需求&#xff09;JS&#xff08;41.6%&#xff09;Ja…

IMX6ULL裸机之UART串口通信(中断)

由于正点原子的UART串口通信裸机例程&#xff0c;采用的是查询方式来进行串口通信&#xff0c;并未使用中断&#xff0c;导致CPU利用率较低&#xff0c;于是产生做本实验的动力。 查阅资料 通过《IMX6ULL参考手册》&#xff0c;得知其串口中断有 从55.4.5 Receiver中可以看出…

解决pycharm中PIL安装失败

问题&#xff1a;在调用pil时显示pil标红 我在设置中下载每次失败&#xff0c;显示 ERROR: Could not find a version that satisfies the requirement PIL (from versions: none) ERROR: No matching distribution found for PIL我尝试了很久&#xff0c;查看了一些博客 &a…

【笔记】【开发方案】APN 配置参数 bitmask 数据转换(Android KaiOS)

一、参数说明 &#xff08;一&#xff09;APN配置结构对比 平台AndroidKaiOS文件类型xmljson结构每个<apn>标签是一条APN&#xff0c;包含完成的信息层级数组结构&#xff0c;使用JSON格式的数据。最外层是mcc&#xff0c;其次mnc&#xff0c;最后APN用数组形式配置&am…

Java使用企业邮箱发送预警邮件

前言&#xff1a;最近接到一个需求&#xff0c;需要根据所监控设备的信息&#xff0c;在出现问题时发送企业微信进行预警。 POM依赖 <!-- 邮件 --> <dependency><groupId>com.sun.mail</groupId><artifactId>jakarta.mail</artifactId>…

【C++】C++11下线程库

C11下线程库 1. thread类的简单介绍2.线程函数参数3.原子性操作库(atomic)4.mutex的种类5. RAII风格加锁解锁5.1Lock_guard5.2unique_lock 6.condition_variable 1. thread类的简单介绍 在C11之前&#xff0c;涉及到多线程问题&#xff0c;都是和平台相关的&#xff0c;比如wi…

Android | ArcGIS入门

一、概述 ArcGIS是由Esri开发的地理信息系统&#xff08;GIS&#xff09;软件。它用于制图、空间分析和数据可视化。ArcGIS允许用户以各种格式创建、管理、分析和共享地理信息。它通常用于城市规划、环境管理和应急响应等领域。该软件包括一系列工具&#xff0c;用于创建地图、…

新年新方案,制造业数字化经营管理平台方案全新升级

伴随着工业4.0和中国智造2025成为制造业领域的两大重要趋势&#xff0c;“推动制造业智能化改造数字化转型”已经到了“不得不”的阶段。 数字化转型能够为制造企业带来降本增效、扩能提质、优化流程、提升竞争力等优势&#xff0c;是建设现代化产业体系的必经之路。 然而&…

CVE-2016-3088(ActiveMQ任意文件写入漏洞)

漏洞描述 1、漏洞编号&#xff1a;CVE-2016-3088 2、影响版本&#xff1a;Apache ActiveMQ 5.x~5.13.0 在 Apache ActiveMQ 5.12.x~5.13.x 版本中&#xff0c;默认关闭了 fileserver 这个应用&#xff08;不过&#xff0c;可以在conf/jetty.xml 中开启&#xff09;&#xff1b;…

【python】linux系统python报错“ssl module in Python is not available”

一、问题现象 1.1 执行pip命令报错 pip安装时遇到openssl问题&#xff0c;没办法安装第三方库 “WARNING: pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available. ” 1.2 导入import ssl 报错 直接执行python&…

C/C++ BM14 链表的奇偶重排

文章目录 前言题目解决方案一1.1 思路阐述1.2 源码 解决方案二2.1 思路阐述2.2 源码 总结 前言 这道题算是链表思路的一种常规题&#xff0c;看透题目本质做起来还是不难。 题目 描述 给定一个单链表&#xff0c;请设定一个函数&#xff0c;将链表的奇数位节点和偶数位节点分…

电脑开机蓝屏错误代码c000021a怎么办 电脑蓝屏报错c000021a的解决办法

很多小伙伴在电脑开机的时候出现蓝屏代码c000021a都不知道该怎么去解决&#xff0c;所以今天就给你们带来了c000021a蓝屏解救方法&#xff0c;如果你还没解决的话就快来看看吧。 解决办法&#xff1a; 原因&#xff1a; c000021a蓝屏的原因有很多&#xff0c;主要有以下几种…