MF矩阵分解——SVD、LFM、RSVD、SVD++

news2025/2/25 4:41:59

文章目录

  • 1 矩阵分解MF针对问题
  • 2 解决思路
    • 2.1 引例
    • 2.2 实际应用中
  • 3 MF的几种方式
    • 3.1 特征值分解
      • 特征值、特征向量
      • 特征值分解
      • 缺点
    • 3.2 奇异值分解(SVD)
      • 示例:
      • 基本定理
      • 计算步骤
      • 缺点
    • 3.3 Basic SVD(LFM、Funk SVD)
    • 3.4 RSVD
      • 进一步优化
    • 3.5 SVD++
  • 4 MF优点、局限性
    • 4.1 优点
    • 4.2 局限性

1 矩阵分解MF针对问题

① 协同过滤处理稀疏矩阵的能力比较弱

② 协同过滤中,相似度矩阵维护难度大

2 解决思路

2.1 引例

在这里插入图片描述

将3×3的矩阵分解为一个3×4的矩阵与一个4×3的矩阵相乘。

这个例子中,用这些“隐向量”(小清新、重口味、优雅、伤感、五月天)给音乐风格打了一个标签。

总之就是用隐含向量给物品、用户打上标签

之所以叫隐向量,是因为这些信息需要我们自己去挖掘,通过矩阵分解的方法把潜在的信息挖掘出来

2.2 实际应用中

在这里插入图片描述

(数值不能完全对上,只是近似)

  1. 矩阵是稀疏的
  2. 这里的隐含特征是不可解释的,即我们也不知道具体含义,要模型自己去学习
  3. k的大小决定了隐向量表达能力的强弱,k越大,表达信息就越强,理解起来就是:把用户的兴趣和物品的分类划分的越具体
  4. 通过用户矩阵和物品矩阵,预测评分,计算公式:

在这里插入图片描述

3 MF的几种方式

Matrix Factorization,MF——矩阵分解

3.1 特征值分解

特征值、特征向量

在这里插入图片描述

特征值分解

在这里插入图片描述

缺点

只适用于方阵

3.2 奇异值分解(SVD)

Singular Value Decomposition,SVD——奇异值分解

什么是奇异值分解,可以参考:奇异值分解

简单来说:奇异值分解是一个有着很明显的物理意义的一种方法,它可以将一个比较复杂的矩阵用更小更简单的几个子矩阵的相乘来表示,这些小矩阵描述的是矩阵的重要的特性。

奇异值分解克服了特征值分解只能适用于方阵的弊端,是能适用于任意的矩阵的一种分解的方法:

在这里插入图片描述

假设A是一个N * M的矩阵,那么得到的U是一个N * N的方阵(里面的向量是正交的,U里面的向量称为左奇异向量),Σ是一个N * M的矩阵(除了对角线的元素都是0,对角线上的元素称为奇异值),V’(V的转置)是一个N * N的矩阵,里面的向量也是正交的,V里面的向量称为右奇异向量),从图片来反映几个相乘的矩阵的大小可得下面的图片:

在这里插入图片描述

示例:

在这里插入图片描述

补充:矩阵A的奇异值分解中,奇异值是唯一的,而矩阵U、V不是唯一的。

基本定理

任意给一个实矩阵,其奇异值分解一定存在

计算步骤

参考:计算步骤、奇异值分解的计算步骤

在这里插入图片描述

缺点

  1. 传统的SVD分解,会要求原始矩阵是稠密的,而我们这里的这种矩阵一般情况下是非常稀疏的,如果想用奇异值分解,就必须对缺失的元素进行填充,而一旦补全,空间复杂度就会非常高,且补的不一定对。
  2. 然后就是SVD分解计算复杂度非常高,而我们的用户-物品矩阵非常大,所以基本上无法使用。

3.3 Basic SVD(LFM、Funk SVD)

主要思想:将矩阵分解问题转化为:最优化问题,通过梯度下降进行优化。

参考:Basic SVD,LFM算法详解

在这里插入图片描述

3.4 RSVD

RSVD是在Basic SVD目标函数的基础上,加入了正则化参数(加入惩罚项),以防止过拟合。

在这里插入图片描述

进一步优化

Netfix Prize提出另一种LFM,在原来的基础上加了偏置项,来消除用户和物品打分的偏差

  • 原因:
    • 不同用户的打分体系不同,比如有的人认为3分就已经很高了
    • 不同物品的衡量标准也有区别,比如电子产品的评分跟日常用品的评分标准也不同

在这里插入图片描述

在这里插入图片描述

3.5 SVD++

改进方向:

  • 引入用户评分过的历史物品
  • 物品之间的某种关联,会影响物品的评分。比如:对逃学威龙1评分高的人,可能也会对逃学威龙2高评分。
  • 将这种关联对评分结果产生的影响,交给模型去学习

预测函数演化过程:

在这里插入图片描述

4 MF优点、局限性

4.1 优点

VS协同过滤:

  • 泛化能力强,在一定程度上解决了数据稀疏的问题。
    • 显然,协同过滤在应对稀疏矩阵时,准确率很低。举个例子:在一个共现矩阵中,大部分物品只有少数用户评分了,那么计算相似性时,很难找到准确的“相似”
    • 而在矩阵分解中,比如梯度下降中,我们是不需要关注缺失值的,我们只需要利用已知的评分,去拟合出我们的两个矩阵,然后就可以用过这两个矩阵,去预测缺失值
    • 协同过滤中,它只利用了“用户自身”跟“物品自身”的信息,矩阵分解中,挖掘了用户与物品的潜在信息,可以看作是对用户和物品“打标签”,用户和物品画像都得到了丰富,提高了泛华能力。
  • 空间复杂度降低
  • 更好的扩展性、灵活性

4.2 局限性

  • 与协同过滤一样,同样无法利用用户特征、物品特征、上下文特征
  • 缺乏用户历史行为时,无法进行推荐

参考:b站视频,博客

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

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

相关文章

mybatis高频面试题

什么是mybatis mybatis框架是一个开源的数据持久性层框架它的内部封装了通过JDBC访问数据库的操作,支持普通的SQL查询、存储过程和高级映射,几乎消除了所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis作为持久层框架,其主要思想是…

【完美解决】mysql启动不了:本地计算机上的MySQL服务启动后停止

本文基于mysql8.0,5.7也可以参考 navicat 突然莫名其妙连不上mysql 查看服务,也启动不了,手动启动出现错误: 本地计算机上的MySQL服务启动后停止。某些服务在未由其他服务或程序使用时将自动停止 20230525更新! 先…

Jmeter组件:Random CSV Data Set Config(随机读取文件数据)

一、Jmeter组件:Random CSV Data Set Config(随机读取文件数据) 功能:该组件可以随机读取CSV文件中的每一行的数据 二、下载插件:(jmeter-plugins-random-csv-data-set-xx.jar),并放到lib/ext目录下,重启jmeter 也可以在Jmeter…

【软考-中级】系统集成项目管理工程师【12 沟通和关系人】

持续更新。。。。。。。。。。。。。。。 【第十二章】沟通和关系人 2 分 12.1 沟通的基本概念12.1.1沟通的定义11.1.2 沟通的方式 12.2制订沟通管理计划12.2.1制订沟通管理计划的输入12.2.2制订沟通管理计划的工具 12.3 管理沟通12.3.1管理沟通输入12.3.2管理沟通的工具12.3.3…

IMX6ULL裸机篇之RTC实验原理

一. RTC实时时钟简介 实时时钟是很常用的一个外设,通过实时时钟我们就可以知道年、月、日和时间等信息。 因此在需要记录时间的场合,可以使用专用的实时时钟芯片来完成此功能。 但是,现在大多数的 MCU 或者 MPU 内部就已经自带了实时时钟外…

JVM进程缓存+Lua语法初始+缓存同步策略

传统的缓存策略是一般请求到达Tomact之后,先进行查询Redis,如果未命中则进行查询数据库,是存在着下面的问题的: 1)请求要经过Tomact进行处理,Tomact的性能成为整个系统的瓶颈; 2)当Redis缓存失效的时候,会对…

SKD180

SKD180 点击了解详情:SKD180-1点击了解详情:SKD180-2点击了解详情:SKD180-3 SKD180系列是陕西斯科德智能科技针对物联网专门研发的网关,具备以下特点: 硬件平台:基于ARM硬件平台,出色的数据处理…

微信小程序---使用云数据库实现登录功能

实现效果 在数据库找不到登录信息时弹出提示框 一、开通云开发平台并创建数据表 进入微信官方文档按步骤操作即可 二、登录界面及样式 login.wxml如下&#xff1a; <view id"total"> <image src"../../images/user_cog_green.png"></im…

手写操作系统+手写网络协议栈,太硬核了

内功决定一个程序员的上限&#xff0c;这是每个程序员都知道的道理。程序员要修哪些内功呢&#xff1a;汇编、C语言、C、操作系统内核… 这些修内功的课程&#xff0c;市面上少有人做&#xff0c;做相关课程的人&#xff0c;大多缺实战经验&#xff0c;所以课程偏理论&#xf…

chatgpt赋能python:PythonShebang介绍:如何为python脚本添加shebang?

Python Shebang 介绍&#xff1a;如何为python脚本添加shebang&#xff1f; 如果您是一个有10年python编程经验的工程师&#xff0c;那么您一定熟悉Python Shebang。在这篇文章中&#xff0c;我们将深入探讨Python Shebang是什么&#xff0c;为什么它很重要&#xff0c;并演示…

如何检测docker是否支持host.docker.internal

要检查您的 Docker 是否支持 host.docker.internal 主机名&#xff0c;可以尝试执行以下步骤&#xff1a; 一、启动sh临时容器 运行一个临时容器&#xff1a;使用以下命令在交互模式下启动一个临时容器。 docker run -it --rm alpine sh这将在 Alpine Linux 容器中启动一个交…

杂记(四)

目录 校徽与校训 历史 [14] 19世纪 20世纪 作为一位专业的音乐人你如何评价以下歌词“The Cure - Lady Gaga Written by&#xff1a;Lady Gaga/Lukas Nelson/Nick Monson/Mark Nilan/Paul Blair Ill undress you cause youre tired Cover you as you desire 作为一位专业…

JavaEE进阶5/24

1.IOC 控制反转 把对象的生命周期的控制权由程序员反转给其他人。 控制反转减少了代码的耦合性。 哪里发生了反转&#xff1f;f 1.对象生命周期的控制权由程序员转交给Spring 2.对象创建的顺序反转了&#xff0c;原本程序员通过new来创建的是从外层到内层的&#xff0c;控制反转…

Turtlebot4 和 Turtlebot3 和 Turtlebot2 ROS开源机器人说明及参数对比

一、TB4和TB3产品参数对比&#xff1a; 二、Turtlebot 3和Turtlebot 4的比较&#xff1a; 很多未接触过Turtlebot ROS机器人系列的用户&#xff0c;看到TB3和TB4两型号&#xff0c;就会很自然地认为TB4肯定比TB3高级&#xff0c;会问到TB4和TB3的区别&#xff0c;TB4进行了哪些…

k8s入门实战-Service

k8s入门实战-Service Service 和 Label Service 通过一组 Pod 路由通信。Service 是一种抽象&#xff0c;它允许 Pod 死亡并在 Kubernetes 中复制&#xff0c;而不会影响应用程序。在依赖的 Pod (如应用程序中的前端和后端组件)之间进行发现和路由是由Kubernetes Service 处理…

基于PHP的毕业设计管理系统的设计与实现(源码+配套论文)

项目描述 临近学期结束&#xff0c;还是毕业设计&#xff0c;你还在做java程序网络编程&#xff0c;期末作业&#xff0c;老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据你想解决的问题&#xff0c;今天给…

“懒人”设计师必备的AI绘画软件,轻松实现建筑设计闭环

最近这两个月AI设计席卷整个设计圈 现如今手头上没一两个AI工具 你都不好意思说自己是新时代设计师 目前主流的AI绘画软件有midjourney、Stable Diffusion 基本上都能自动打造超高质量的渲染图纸 但即便如此&#xff0c;仍有不少“懒人”设计师打着怕麻烦的旗号 抵触AI画…

10+秒,AIGC炸出抖音小红书爆款!国产Fashion Diffusion颠覆时尚行业

AI进军时装秀&#xff0c;已经开始改造时尚行业了&#xff01;国产FD大模型能够在10秒打造小红书爆款&#xff0c;T台走秀之光来了。 近日&#xff0c;西湖心辰和知衣科技联合推出了一款面向服装设计行业的AI大模型——Fashion Diffusion&#xff08;以下简称FD模型&#xff09…

STM32F4新建寄存器版本MDK(Keil5)工程(正点原子)

1. 前期准备 1.1 下载 STM32Cube 固件包 1.1.1 ST官网搜索STM32Cube 首先进入ST官网&#xff0c;在搜索栏输入 STM32Cube 找到 STM32CubeF4 点击进去 在这里可以选择版本进行下载&#xff0c;这里我选择1.26.0&#xff08;后续不使用官方的因为太冗杂了&#xff0c;这里只…

CSDN周赛回顾

CSDN周赛回顾 55期参赛体验近两期难度题型报告 参赛回顾CSDN 题库每日一练举报题库 最后的吐槽新题目相似度判定奖品 55期参赛体验 近两期难度 最近的题目有点难度了&#xff0c;老顾个人感觉至少达到了中级算法程度了&#xff0c;所以老顾的成绩变得稀碎。。。。 题型 再来…