MF(推荐系统的矩阵分解技术)论文笔记

news2024/11/19 13:22:36

论文概述

推荐系统的矩阵分解技术可以为用户提供更为准确的个性化推荐,对比传统的近邻技术,矩阵分解技术可以纳入更多信息,如隐式反馈时间效应置信度

近邻技术:基于用户或物品之间的相似性进行推荐,当用户之间已有评价计算出两个用户爱好类似,就将a用户的其他物品推荐给b

矩阵分解技术:把原来的大矩阵,近似分解成两个小矩阵的乘积,在实际推荐计算时不再使用大矩阵,而是使用分解得到的两个小矩阵。

论文内容

推荐系统策略

1. 为每一个用户或者项目创建一个档案记录特征,通过这些资料,系统可以将用户和匹配的产品联系起来

2. 协同过滤:依赖于用户过去的行为,分析用户之间的关系和产品之间的关系,按照群体行为去推荐,寻找和a相似的用户群体,将这些群体的爱好推荐给a

邻域方法:一个用户评价了产品A是好,那么他很有可能给A的相似产品B也评价好;当两个用户有很相似的爱好,那么他们之间的评分也可以互相补充

潜在因素模型:通过分析大量的用户评分,可以大概知道影响评分的一些潜在因素,比如你给戏剧电影很高评价,那么系统会认为戏剧这个特征就是一个潜在因素,当有新的戏剧出现就会给你推荐,利用一个二维模型简化说明,我们可以预测Gus可能对Dumb and Dumber的评分较高,而对Braveheart评分一般,不喜欢The Color Purple

横坐标表示用户的性别导向,纵坐标表示电影积极或消极,将用户和项目(电影)按照已有评价分析后放入图中,每个项目i对应一个向量qi,每个用户u对应一个pu,两者的点积越大,说明该用户对此项目偏爱程度更高

当一些用户可能并没有对某些电影做出评价,我们也可以通过该方法估算用户u对项目i的评分r

基本矩阵因式分解模型

将上述二维坐标扩展,将用户和项目映射到维数f的联合潜在因子空间,用户和项目的交互可以建模为空间的内积,捕获了用户和项目之间的交互,公式1表示预测的用户和项目之间的交互

该模型的主要挑战就是系统需要找到每个项目和用户映射的向量qi和pu,这个模型和SVD技术密切相关

公式1 

奇异值分解SVD技术:

将一个大矩阵分解为三个部分,第一个部分告诉我们数据的主要方向,第二个部分告诉我们每个方向的重要性有多大,第三个部分则是另一个角度的数据主要方向。,但是当数据稀疏性很高,会导致过拟合状态

损失函数

早期为了解决稀疏性问题采用填补空缺值,但是往往不准确的估计值会扭曲数据,我们只对已有的评分建模,该系统通过拟合先前观察到的评级来学习模型。

公式2 

公式2为SVD的损失函数,系统会最小化已知评分集合上的正则化平方误差,在加号左边是最小化预测评分与实际评分之间的差异,加号右侧是正则化项(也叫惩罚项)用于控制模型的复杂度;可以防止出现过拟合状态

优化算法

最小化该上述方程有两个方法:随机梯度下降法和交替最小二乘法

随机梯度下降法

随机梯度下降(SGD)就像是在一座大山的地图上寻找最低点,但你不能看到整个地形,只能通过不断随机挑选一些地方来感受坡度,然后沿着坡度最大的方向小步向下走,希望最终能找到那个最低点。

随机梯度下降是一种迭代的优化算法,它在每次迭代中只使用一个或一小批训练样本来更新模型参数。这种方法的优点是在大规模数据集上效率较高,因为不需要在每次迭代时处理整个训练集。

公式3

公式3表示给出训练集(u,i),系统会给出预测值qiTpu,然后用真是的计算值r减去预测值,得到误差预测值

接着我们要优化更新参数q和p,见公式4

公式4

首先,我们有一个误差项 e​,它表示模型对第 𝑖i 个样本的预测和实际值之间的差距。然后,我们有一个学习率 γ,它决定了我们根据这个误差调整模型参数的幅度,就像你决定每次走多远一样。接下来,我们用这个误差和学习率来更新参数qi​ 和 pu​。更新的过程就是让参数朝着减少误差的方向迈出一步,这一步的大小由学习率 γ 和误差 e​ 共同决定。

但是对于数据少或者需要更精确的状态还有一种方法:交替最小二乘法

交替最小二乘法ALS

每次固定一个因子向量(比如qi),改变另一个因子向量(pi),如此反复交替直到收敛,利用ALS系统可以并行化,即可以同时计算多个因子向量,当面对隐式项目集的时候,训练集很难采用梯度下降,此时就可以利用ALS技术来优化算法

增加偏差

有时候有些用户会偏向于打低分,有些用户即使物品不喜欢也偏向于高分,有时候某些项目可能推出优惠劵等于是有高分,也并不代表用户就喜欢,也有可能某个平台就是限制评分等操作,所以我们往往要考虑这些偏差

公式5

总体平均评分用µ表示;参数bu和bi分别表示用户u和第i项与平均值的观测偏差,公式5表示用户和项目的交互偏差(用户对项目的偏好估计可能会产生的误差)

现在,假设µ对所有电影的平均评分是3.7星。此外,《泰坦尼克号》比一部普通电影要好,所以它的评分往往比平均电影高出0.5颗星。另一方面,乔是一个关键的用户,他的评分往往比平均水平低0.3颗星。因此,乔对《泰坦尼克号》的评级估计为3.9颗星(3.7 + 0.5 - 0.3)。

公式6

公式6在原有的用户和项目的交互算法上加入了偏差,现在右边四个值分别表示全局平均值、项目偏差、用户偏差和用户项目交互,从而使得结果更准确

公式7

 公式7在原来的损失函数上做了一些改变,添加了偏差项,对其建模非常重要

其他输入源

通常,一个系统必须处理冷启动问题,其中许多用户提供很少的评级,使它很难对他们的品味得出一般性的结论。缓解这个问题的一种方法是合并关于用户的其他信息来源。推荐系统可以使用隐式反馈来深入了解用户的偏好。

公式8
  • N(u)表示用户u的隐式偏好项目集
  • A(u)表示用户u对应的属性集(性别、年龄、家庭等)
  • xi表示用户的隐式爱好集内每个项目的对应向量,这个累加和反映了用户 u 对项目集中所有项目的因素向量的综合偏好

为了使得这个累加和更有意义,通常会进行规范化处理。规范化可以帮助我们调整不同用户之间项目集大小的差异,以及防止偏好向量的长度变得过大,导致模型不稳定。一个常见的规范化方法是减去一个比例因子,例如项目集大小的0.5倍

时间动态

在公式6的基础上,给项目偏差、用户偏差、用户偏好向量都加上了时间的概念,因为物品本身不像人,基本特征是不会变化,可以视为静态

公式9

  • 第一个时间效应解决了这样一个事实,即一件物品的受欢迎程度可能会随着时间的推移而改变。例如,电影可能会被外部事件引发,比如演员在新电影中的出现。因此,这些模型将项目偏差b视为时间的函数。
  • 第二个时间效应允许用户随着时间的推移而改变他们的基线评级。例如,一个倾向于给平均电影“4星”的用户现在可能会给这样的电影评级“3星”。这可能反映了几个因素,包括用户评分量表的自然漂移,用户相对于其他最近的评分,以及家庭成员的身份会随着时间的推移而改变。因此,在这些模型中,参数bu是一个时间的函数。
  • 第三个时间效应使得用户会随着时间的推移而改变他们的偏好。例如,一个心理惊悚片类型的粉丝可能会在一年后成为犯罪剧的粉丝。类似地,人类也是在改变了他们对某些演员和导演的看法。该模型通过将用户因素(向量pu)作为时间的函数来解释这种效应。

不同置信度的输入

矩阵分解模型可以很容易地接受不同的置信水平,这让它给不太有意义的观察更少的权重。如果对观察 r 的信心表示为 c ,那么模型将可以增强成本函数

公式10

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

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

相关文章

【java数据结构之八大排序(上)-直接插入排序,希尔排序,选择排序,堆排序,向下调整(大根堆,小根堆)等知识详解】

🌈个人主页:努力学编程’ ⛅个人推荐:基于java提供的ArrayList实现的扑克牌游戏 |C贪吃蛇详解 ⚡学好数据结构,刷题刻不容缓:点击一起刷题 🌙心灵鸡汤:总有人要赢,为什么不能是我呢 …

RabbitMQ知识点总结(一)

为什么要使用RabbitMQ? 异步,解耦,削峰。 异步 提高效率;一个挂了,另外的服务不受影响。 解耦 增加或减少服务比较方便。 削峰 每天0点到16点,A系统风平浪静,每秒并发数量就100个。结果每次到了16点到…

[笔试强训]day3

1.简写单词 题目链接&#xff1a;简写单词_牛客题霸_牛客网 思路&#xff1a;利用scanf读取特性&#xff0c;因为scanf是以空格&#xff0c;换行或者文件末尾为结束标志。 代码&#xff1a; #include <iostream> using namespace std;int main() {char str[100] {0}…

使用Python进行自动化部署

&#x1f47d;发现宝藏 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 使用Python进行自动化部署 在软件开发和运维领域&#xff0c;自动化部署是一个至关重要的环…

创建electron,解决包清理的问题,解决镜像源卡住下载时间长

我的电脑用户名是Anyphasy,我的node.js安装在D:\developp\nodejss18.18.0 使用npm config get prefix查看node.js安装路径 npm config get prefix 创建electron 创建package.json文件,它里面记载了你的electron版本,项目描述,以及启动命令等信息 npm init -y 先查看你自己的…

OpenHarmony语言基础类库【@ohos.util.List (线性容器List)】

List底层通过单向链表实现&#xff0c;每个节点有一个指向后一个元素的引用。当需要查询元素时&#xff0c;必须从头遍历&#xff0c;插入、删除效率高&#xff0c;查询效率低。List允许元素为null。 List和[LinkedList]相比&#xff0c;LinkedList是双向链表&#xff0c;可以…

【3GPP IAB】 3GPP支持IAB架构概述

1 概述 IAB用于回传链路的无线传输&#xff0c;对于NR高频尤其重要&#xff0c;3GPP协议讨论了IAB的可能架构和部署方式&#xff0c;一起来看看吧。 2 IAB 功能和接口 IAB尽量重用为接入定义的现有功能和接口。特别是&#xff0c;移动终端(MT)、gNB- DU、gNB- CU、UPF、AMF和S…

docker容器技术篇:集群管理实战mesos+zookeeper+marathon(二)

docker集群管理实战mesoszookeepermarathon&#xff08;二&#xff09; 一 实验环境 操作系统&#xff1a;centos7.9 二 基础环境配置以及安装mesos 安装过程请点击下面的链接查看&#xff1a; 容器集群管理实战mesoszookeepermarathon&#xff08;一&#xff09; 三 安装…

图像处理ASIC设计方法 笔记18 轮廓跟踪算法的硬件加速方案

目录 1排除伪孤立点&#xff08;断裂链表&#xff09;方法1 限制链表的长度方法2 增加判断条件排除断裂链表方法3 排除不必要跟踪的轮廓&#xff08;推荐用这个方法&#xff09; P129 轮廓跟踪算法的硬件加速方案 1排除伪孤立点&#xff08;断裂链表&#xff09; 如果图像中某…

适用于Windows和Mac的十大误删除数据恢复软件

数据恢复是从辅助存储或可移动文件中找回丢失、删除或损坏的数据的过程。数据丢失的原因有很多。因此&#xff0c;有必要恢复已删除的数据。有各种可用的软件工具&#xff0c;使用户能够恢复任何类型的已删除数据。但是&#xff0c;任何数据恢复都有四个主要阶段。他们正在修复…

人工智慧时代的引擎:揭开机器人核心零部件的奥秘

机器人核心零部件技术现状及趋势 工业机器人是我国制造业的“顶冠明珠”&#xff0c;在机器人核心零部件的研发制造上&#xff0c;我国在很多方面已经接近国际顶尖水平&#xff0c;但一些核心技术仍无法满足复杂高端领域应用需求&#xff0c;如精密减速器的传动精度与寿命间竞争…

VScode调用devcpp编译

打开环境变量&#xff0c;用户和系统都可以&#xff0c;只是给的权限不一样而已&#xff0c;个人pc一般不会设置多个用户 找到path双击 新建一个&#xff0c;把你的dev的MinGW64\bin路径粘贴过去 然后重启电脑&#xff0c;VScode要重启电脑才能加载新的环境变量 打开VScode&a…

添加github SSH Key

添加github SSH Key 使用 SSH 协议&#xff0c;您可以连接远程服务器和服务并对其进行身份验证。使用 SSH 密钥&#xff0c;您可以连接到 GitHub&#xff0c;而无需在每次访问时提供您的用户名和个人访问令牌。您还可以使用 SSH 密钥来签署提交。 #3224333333qq.com替换为你自己…

数字旅游打造个性化旅行体验,科技让旅行更精彩:借助数字技术,旅行者可以定制专属旅行计划,享受个性化的旅行体验

目录 一、引言 二、数字旅游的兴起与发展 三、数字技术助力个性化旅行体验 1、智能推荐系统&#xff1a;精准匹配旅行者需求 2、定制化旅行计划&#xff1a;满足个性化需求 3、实时互动与分享&#xff1a;增强旅行体验 四、科技提升旅行便捷性与安全性 1、移动支付与电…

查看笔记本电池容量/健康状态

1. 打开命令行提示符 快捷键“win R”后输入“cmd” 2. 在命令提示符中输入命令 “powercfg /batteryreport" 并回车 3. 查看文件 最后就可以看到笔记本的电池使用报告了

Stable Diffusion使用ControlNet:IP-Adapter实现图片风格迁移

IP-Adapter 全称是 Text Compatible Image Prompt Adapter for Text-to-Image Diffusion Models&#xff08;文本到图像扩散模型的文本兼容图像提示适配器&#xff09;&#xff0c;是腾讯研究院出品的一个新的ControlNet模型&#xff0c;旨在使预训练的文本到图像扩散模型能够生…

java创建多线程之利用Callable,FutureTask类来实现

为什么要用这个&#xff0c;因为一般情况下我们调用的线程没有返回值&#xff0c;利用Callable我们可以传一个返回值 查看Callable接口代码 public interface Callable<V> {/*** Computes a result, or throws an exception if unable to do so.** return computed res…

20- ESP32-S3 SPI 外设,主设备编程方法

ESP32-S3 SPI 外设&#xff0c;主设备编程方法 SPI简介 SPI&#xff0c;全称为Serial Peripheral Interface&#xff0c;是一种常见的串行通信协议&#xff0c;用于微控制器和其外设之间的通信。SPI接口通常包括四条线&#xff1a;MOSI&#xff08;主设备输出&#xff0c;从设…

xhadmin多应用SaaS框架之智慧驾校H5+小程序v1.1.5正式发布!

xhadmin、免费、开源、可商用 以前考驾照的时候&#xff0c;驾校的教练总是给我推荐其他APP&#xff0c;我就很好奇&#xff0c;驾校为什么不能有自己的小程序&#xff1f; 学员报名、练车、刷题都可以在线完成。 智慧驾校专业版v1.1.5更新内容 新增题库管理新增图标管理新增…

短视频生成背景文字工具(前端工具)

过年这两天有些无聊就刷刷抖音&#xff0c;刷着刷着自己也蠢蠢欲动&#xff0c;想发上几个&#xff0c;可是却找不到合适自己的模板。由于个人喜欢一些古诗文之类的&#xff0c;所以自己简单的编写了一个小工具&#xff0c;如下图&#xff1a; 当设置好了之后&#xff0c;将浏…