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

论文概述

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

近邻技术:基于用户或物品之间的相似性进行推荐,当用户之间已有评价计算出两个用户爱好类似,就将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.hqwc.cn/news/652227.html

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

相关文章

SpringBoot---------整合Redis

目录 第一步:引入依赖 第二步:配置Redis信息 第三步:选择Spring Data Redis进行操作Redis数据库 ①操作String类型数据(用的少) ②操作Object类型数据(重要!!!&#x…

CLIP论文笔记:Learning Transferable Visual Models From Natural Language Supervision

导语 会议:ICML 2021链接:https://proceedings.mlr.press/v139/radford21a/radford21a.pdf 当前的计算机视觉系统通常只能识别预先设定的对象类别,这限制了它们的广泛应用。为了突破这一局限,本文探索了一种新的学习方法&#x…

论文解读:(CAVPT)Dual Modality Prompt Tuning for Vision-Language Pre-Trained Model

v1文章名字:Dual Modality Prompt Tuning for Vision-Language Pre-Trained Model v2文章名字:Class-Aware Visual Prompt Tuning for Vision-Language Pre-Trained Model 文章汇总 对该文的改进:论文解读:(VPT)Visual Prompt …

【03-掌握Scikit-learn:深入机器学习的实用技术】

文章目录 前言数据预处理缺失值处理数据缩放 特征选择模型训练参数调整模型评估总结 前言 经过了对Python和Scikit-learn的基础安装及简单应用,我们现在将更深入地探究Scikit-learn的实用技术,以进一步提升我们的数据科学技能。在本文中,我们…

The Log-Structured Merge-Tree (LSM-Tree) 论文阅读笔记

原论文:The Log-Structured Merge-Tree (LSM-Tree) LSM-Tree的简介和关键技术要点 LSM-Tree(Log-Structured Merge-Tree)是一种为高吞吐量读写操作优化的数据结构,特别适用于写入密集型的应用场景。它由Patrick O’Neil等人开发…

Linux快速部署大语言模型LLaMa3,Web可视化j交互(Ollama+Open Web UI)

本文在个人博客同步发布,前往阅读 1 介绍 本文将介绍使用开源工具Ollama(60.6k⭐)部署LLaMa大模型,以及使用Open WebUI搭建前端Web交互界面的方法。 我们先来过一遍几个相关的概念,对这块比较熟悉的朋友可跳过。 1.1 大规模语言模型 大规…

YOLOv8 的安装、使用与训练

YOLOV8 YOLOv8简介 YOLOv8是YOLO系列的最新版本,它融合了先进的深度学习技术和目标检测领域的最新研究成果 与其前身相比,YOLOv8在速度和精度方面都有了显著的提升,使其成为一个理想的实时目标检测解决方案。该模型结合了卷积神经网络&…

身份证二要素核验介绍及使用方法

一、身份证二要素核验简介及重要性 身份证二要素核验是一种重要的身份验证技术,它在现代社会中发挥着至关重要的作用,特别是在涉及个人信息安全和隐私保护的领域。通过身份证二要素核验,我们可以有效地确认个人身份的真实性,从而…

基于spring boot的实习管理系统

基于spring boot的实习管理系统设计与实现 开发语言:Java 框架:springboot JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7(一定要5.7版本) 数据库工具:Navicat11 开发软件&…

SpringBoot学习之Kafka下载安装和启动【Windows版本】(三十四)

一、配置Java环境变量 打开CMD输入java -version检查java环境变量是否配置正确,如果配置正确在CMD窗口输入java -version应该输出如下: ​ 怎么配置Java环境变量这里我就不赘叙了,网上教程很多,请读者自行搜索操作。 二、下载Kafka 1、Kafka官网地址:Apache Kafka,…

5、Flink事件时间之Watermark详解

1)生成 Watermark 1.Watermark 策略简介 为了使用事件时间语义,Flink 应用程序需要知道事件时间戳对应的字段,即数据流中的每个元素都需要拥有可分配的事件时间戳。 通过使用 TimestampAssigner API 从元素中的某个字段去访问/提取时间戳。…

设计模式学习笔记 - 开源实战五(下):总结Mybatis中用到的10种设计模式

概述 本章再对 Mybatis 用到的设计模式做一个总结。它用到的设计模式也不少。有些前面章节已经经过了,有些则比较简单。 SqlSessionFactoryBuilder:为什么要用建造者模式来创建 SqlSessionFactory? 在《Mybatis如何权衡易用性、性能和灵活性…