【机器学习300问】55、介绍推荐系统中的矩阵分解算法是什么、有什么用、怎么用?

        本来这篇文章我想先讲矩阵分解算法是什么东西的,但这样会陷入枯燥的定义中去,让原本非常有趣技术在业务场景中直观的使用路径被切断。所以我觉得先通过一个具体的推荐算法的例子,来为大家感性的介绍矩阵分解有什么用会更加合理。

        如果你还不知道什么是推荐系统,不妨先花点时间看看我的另一篇文章:

【机器学习300问】45、什么是推荐系统?icon-default.png?t=N7T8http://t.csdnimg.cn/DzgAx

一、矩阵分解算法有什么用

(1)理论上的作用

        矩阵分解可以将一个高维、稀疏的矩阵转化为两个小的因子矩阵相乘。帮助我们理解矩阵的数据结构,减少数据的维度,同时揭示隐藏在数据中的潜在结构或模式。

(2)为什么要用矩阵分解算法进行推荐呢?

        在推荐系统中,矩阵分解主要用于解决用户-物品交互矩阵的稀疏性问题。原始的用户-物品评分矩阵通常非常稀疏,这是因为大多数用户只对少数物品进行了评分,大部分元素为空。通过矩阵分解,我们可以找到每个用户和每个物品的一组隐含特征向量,这些特征向量捕捉了用户偏好和物品属性的本质特征。通过重构矩阵,算法可以在没有实际评分的情况下预测用户对未尝试物品的可能评分,从而实现个性化推荐。

(3)实际上的作用

        在这里,我们用歌曲推荐系统为例,让我带大家进一步了解矩阵分解在其中发挥的巨大作用。假设有个听歌平台找到了我们,要我们给它开发一个推荐系统,它告诉我们现在平台上有1个亿的用户,100万首歌。

用户-歌曲评分矩阵的部分图

 

        如果用之前基于用户的协同过滤和基于物品的协同过滤,这个矩阵得老大老大了!完全没办法计算!我给出了一个用户-歌曲矩阵的部分图片。可以看出这个矩阵是一个非常稀疏的矩阵,这是因为平台上每个用户可能给一些歌曲评过分,但大多数歌曲没有得到评分,因此这个评分矩阵将非常稀疏。行表示用户,列表示歌曲,每个元素的值代表用户给该歌曲的评分。缺失的值通常用0或一个预先设定的值如平均评分来代替。现在我们的目标就是预测空白值到底是多少?

矩阵分解

        之前不是说用户-物品交互矩阵太大了嘛!那么矩阵分解的思想将大的矩阵,拆解成两个小的矩阵,一个是User矩阵(给他个专业的名字叫用户隐向量矩阵U),一个是Item矩阵(给他个专业的名字物品隐向量矩阵V),那么大矩阵User-Item矩阵(给他个专业的名字叫D)可以用公式来表达成D\approx UV^T。放在我们这个例子中就是下图:

二、矩阵分解算法是什么

(1)定义

        矩阵分解是指将一个大矩阵分解为两个或更多个较小的、具有特殊性质的矩阵的乘积形式。在推荐系统中常用的如奇异值分解(SVD)进行矩阵分解,将用户-物品评分矩阵D近似分解为用户矩阵U和物品矩阵V 的乘积,即D\approx UV^T。其中还有个很关键的参数——隐向量维度k


矩阵符号维度
用户-物品评分矩阵DRm\times n
用户矩阵Um\times k
物品矩阵Vk\times n

        隐向量维度k 的大小确实决定了模型的表达能力和复杂性:

  • k较小时,模型更加简单,易于训练和解释,但可能不足以捕获用户和物品间的复杂关联,导致模型的表达力较弱,可能会影响推荐效果的准确性。
  • k较大时,模型具有更高的表达能力,能够更精细地刻画用户的兴趣和物品的特性,但这同时也意味着模型可能更容易过拟合,且计算资源消耗更大。

        但其实隐向量维度k,只需要计算机能理解就行,我们人类不用管他到底有什么实际含义。

(2)原理

        矩阵分解的基本思想是,尽管原始数据矩阵可能是稀疏且难以直接分析的,但用户和物品之间可能存在某种潜在的低维空间结构。在这个空间中,用户和物品可以根据他们共享的隐含特征进行量化描述。通过优化算法,比如梯度下降法,寻找最优的用户和物品的特征向量集合,使得重构矩阵尽可能接近原始评分矩阵。

U \times V^T \approx R

三、矩阵分解算法怎么用

(1)计算过程

        矩阵分解的计算过程通常包括以下几个步骤:

  • 初始化用户和物品矩阵;
  • 定义损失函数,通常是预测评分与实际评分之间的差距平方和,即均方误差;
  • 应用优化算法如梯度下降,更新用户和物品的隐向量以最小化损失函数;
  • 循环迭代直到达到预设的停止条件,如达到最大迭代次数或损失函数收敛;
  • 利用学习到的隐向量矩阵预测未知的用户-物品评分。

(2)目标函数

        在推荐系统中,矩阵分解的目标函数常常是基于预测评分与实际评分之间的差异来构建的。例如,对于预测评分和实际评分,目标函数可以表示为:

L = \sum_{(u,i) \in \kappa} (r_{ui} - u_{u} \cdot v_{i})^2 + \lambda (\|u_{u}\|^2 + \|v_{i}\|^2)

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

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

相关文章

Xcode删除原本的Git,再添加新的git

本文参考:Xcode怎么删除原本git,在重新设置新的git地址_ios xcode 删除原本git-CSDN博客 开发中会有一个问题。Xcode项目A 提交到Git服务器server1,此时项目A内部已经存在一个Git文件,与server1相关联。 此时你想将项目A提交到 另一个Git…

快速上手Spring Cloud 七:事件驱动架构与Spring Cloud

快速上手Spring Cloud 一:Spring Cloud 简介 快速上手Spring Cloud 二:核心组件解析 快速上手Spring Cloud 三:API网关深入探索与实战应用 快速上手Spring Cloud 四:微服务治理与安全 快速上手Spring Cloud 五:Spring …

智能设备配网保姆级教程

设备配网 简单来说,配网就是将物联网(IoT)设备连接并注册到云端,使其拥有与云端远程通信的能力。配网后,智能设备才能被手机应用或者项目管理后台控制,依托于智能场景创造价值。本文介绍了配网的相关知识&…

C++优先队列——priority_queue,函数对象,labmda表达式,pair等

头文件&#xff1a;#include<queue> 内部使用堆来实现&#xff0c;在需要或得最大的几个值或最小的几个值而不关心整个数组的顺序时非常好用。 用法&#xff1a; priority_queue<int, vector<int>, greater<int>>q; 第一个参数为堆中存储的元素。 …

UE RPC 外网联机(2)

外网联机配置测试 一、网络配置 开放外网端口开放端口是为了可以进行外网访问;端口包含一个预案管理服务器端口和多个预案服务器端口;(预案管理服务器类似于大厅,预案服务器类似于房间,大厅管理多个房间;) (1)预案管理服务器端口;(如:23001) (2)预案服务器端口…

GenICam-GenApi简介

EMVA 1288标准之GemICam-GenApi学习与解读 背景介绍 当前相机不仅用于传输图像&#xff0c;还打包了越来越多的功能。这就导致相机的编程接口越来越复杂。 GenICam的目标是为所有类型的相机提供一个通用的编程接口&#xff0c;无论相机使用何种接口技术&#xff0c;或者实现…

【计算机网络】第 9 问:四种信道划分介质访问控制?

目录 正文什么是信道划分介质访问控制&#xff1f;什么是多路复用技术&#xff1f;四种信道划分介质访问控制1. 频分多路复用 FDM2. 时分多路复用 TDM3. 波分多路复用 WDM4. 码分多路复用 CDM 正文 什么是信道划分介质访问控制&#xff1f; 信道划分介质访问控制&#xff08;…

admin端

一、创建项目 1.1 技术栈 1.2 vite 项目初始化 npm init vitelatest vue3-element-admin --template vue-ts 1.3 src 路径别名配置 Vite 配置 配置 vite.config.ts // https://vitejs.dev/config/import { UserConfig, ConfigEnv, loadEnv, defineConfig } from vite im…

OceanBase OBCA 数据库认证专员考证视频

培训概述 OceanBase 认证是 OceanBase 官方推出的唯一人才能力认证体系&#xff0c;代表了阿里巴巴及蚂蚁集团官方对考生关于 OceanBase 技术能力的认可&#xff0c;旨在帮助考生更好地学习 OceanBase 数据库产品&#xff0c;早日融入 OceanBase 技术生态体系&#xff0c;通过由…

IP种子是什么?理解和应用

在网络世界中&#xff0c;IP种子是一个广泛应用于文件共享和网络下载领域的概念。它是一种特殊的标识符&#xff0c;用于识别和连接到基于对等网络&#xff08;P2P&#xff09;协议的文件共享网络中的用户或节点。本文将深入探讨IP种子的含义、作用以及其在网络中的应用。 IP地…

创建一个vue3 + ts + vite 项目

vite 官网&#xff1a; https://cn.vitejs.dev/guide/ 兼容性注意 Vite 需要 Node.js 版本 18&#xff0c;20。然而&#xff0c;有些模板需要依赖更高的 Node 版本才能正常运行&#xff0c;当你的包管理器发出警告时&#xff0c;请注意升级你的 Node 版本。 安装项目 1. 使用n…

【计算机网络篇】数据链路层(4.1)可靠传输的相关概念

文章目录 &#x1f354;可靠传输的相关概念⭐分组丢失⭐分组失序⭐分组重复 &#x1f95a;注意 &#x1f354;可靠传输的相关概念 使用差错检测技术&#xff08;例如循环冗余校验CRC&#xff09;&#xff0c;接收方的数据链路层就可以检测出帧在传输过程中是否产生了误码&…