推荐系统系列——矩阵分解与FM算法

4 篇文章 2 订阅
订阅专栏

目录

矩阵分解算法

隐语义模型

矩阵分解算法原理

矩阵分解算法的求解

矩阵分解算法优缺点

逻辑回归算法优缺点

FM模型算法

FM公式的理解

FM模型的应用

FM算法的优缺点

FFM算法

FFM算法的思想


矩阵分解算法

隐语义模型

核心思想:通过隐含特 征(latent factor)联系用户兴趣和物品(item), 基于用户的行为找出潜在的主题和分类, 然后对item进行自动聚类,划分到不同类别/主题(用户的兴趣)

对比:是把协同过滤算法进行了一种延伸, 把用户的相似性和物品的相似性通过了一个叫做隐向量的方式进行表达

如果我们知道了用户A和用户B两个用户在豆瓣的读书列表, 从他们的阅读列表可以看出,用户A的兴趣涉及侦探小说、科普图书以及一些计算机技术书, 而用户B的兴趣比较集中在数学和机器学习方面。 那么如何给A和B推荐图书呢?
先说说协同过滤算法, 这样好对比不同:
1. 对于UserCF,首先需要找到和他们看了同样书的其他用户(兴趣相似的用户),然后给他们推荐那些用户喜欢的其
他书。
2. 对于ItemCF,需要给他们推荐和他们已经看的书相似的书,比如作者B看了很多关于数据挖掘的书,可以给他推荐机器学习或者模式识别方面的书。
​
而如果是隐语义模型的话, 它会先通过一些角度把用户兴趣和这些书归一下类, 当来了用户之后, 首先得到他的兴趣分类, 然后从这个分类中挑选他可能喜欢的书籍。
​
这里就看到了隐语义模型和协同过滤的不同, 这里说的角度其实就是这个隐含特征, 比如书籍的话它的内容, 作者, 年份,主题等都可以算隐含特征,如果这个例子还不是很清晰的话,那么下面再举个更为具体的例子, 看看是如何通过隐含特征来划分开用户兴趣和物品的。

矩阵分解算法原理

通过分解协同过滤的共现矩阵(评分矩阵)来得到用户和物品的隐向量, 就是上面的用户矩阵Q和物品矩阵P, 这也是“矩阵分解”名字的由来。

那么如果有了用户矩阵和物品矩阵的话, 我们就知道了如果想计算用户u

对物品i的评分, 只需要

 

矩阵分解算法的求解

  • 随机初始化用户矩阵U和物品居中P

  • 构建损失函数

  • 利用梯度下降法求解损失函数的最小值,对应的U和P矩阵即为所要分解的矩阵

矩阵分解算法优缺点

a. 优点:

  • 泛化能力强: 一定程度上解决了稀疏问题

  • 空间复杂度低: 由于用户和物品都用隐向量的形式存放, 少了用户和物品相似度矩阵, 空间复杂度由降到了(n+m)*f

  • 更好的扩展性和灵活性:矩阵分解的最终产物是用户和物品隐向量, 这个深度学习的embedding思想不谋而合, 因此矩阵分解的结果非常便于与其他特征进行组合和拼接, 并可以与深度学习无缝结合。

b.缺点:

但是, 矩阵分解算法依然是只用到了评分矩阵, 没有考虑到用户特征, 物品特征和上下文特征, 这使得矩阵分解丧失了利用很多有效信息的机会, 同时在缺乏用户历史行为的时候, 无法进行有效的推荐。 所以为了解决这个问题,逻辑回归模型及后续的因子分解机模型, 凭借其天然的融合不同特征的能力, 逐渐在推荐系统领域得到了更广泛的应用。

逻辑回归算法优缺点

优点:

  1. LR模型形式简单,可解释性好,从特征的权重可以看到不同的特征对最后结果的影响。

  2. 训练时便于并行化,在预测时只需要对特征进行线性加权,所以性能比较好,往往适合处理海量id类特征,用id类特

征有一个很重要的好处,就是防止信息损失(相对于范化的 CTR 特征),对于头部资源会有更细致的描述

  1. 资源占用小,尤其是内存。在实际的工程应用中只需要存储权重比较大的特征及特征对应的权重。

  2. 方便输出结果调整。逻辑回归可以很方便的得到最后的分类结果,因为输出的是每个样本的概率分数,我们可以很容易的对这些概率分数进行cutoff,也就是划分阈值(大于某个阈值的是一类,小于某个阈值的是一类)

缺点:

1.无法自动做特征交叉,需要人工手动参与,并且比较依赖人工的工程经验,也可能造成信息的损失。

2.不能处理非线性数据,产生更具深层意义的高维特征,所以其产生的推荐结果是直白的,暴力的。

FM模型算法

针对逻辑回归的第一个缺点,即无法做特征交叉,FM模型对逻辑回归模型增加了一个二阶交叉项并对其做出了修改,能够自动对每个特征做特征交叉。下面是基于逻辑回归模型提出的PLOY2模型

 

但这个式子有一个问题,只有当 xi与 xj均不为0时这个二阶交叉项才会生效,后面这个特征交叉项本质是和多项式核SVM等价的,为了解决这个问题,我们的FM登场了!

FM模型使用了如下的优化函数:

 

事实上做的唯一改动就是把wij 替换成了<vi,vj> ,大家应该就看出来了,这实际上就有深度学习的意味在里面了,实质上就是给每个xi计算一个embedding,然后将两个向量之间的embedding做内积得到之前所谓的 好处就是这个模型泛化能力强 ,即使两个特征之前从未在训练集中同时出现,我们也不至于像之前一样训练不出wij,事实上只需要xi和其他的 xk同时出现过就可以计算出的embedding!

FM公式的理解

  • 首先,单从模型表达能力上来看,FM是要强于LR的,至少它不会比LR弱,当交叉项参数 全为0的时候,整个模型就退化为普通的LR模型。对于有n个特征的模型,特征组合的参数数量共有个,并且任意两个参数之间是独立的。

    而FM模型中二次项的参数数量减少为kn 个,远少于多项式模型的参数数量。另外,参数因子化使得xhxi的参数和xixj的参数不再是相互独立的,因此我们可以在样本稀疏的情况下相对合理地估计FM的二次项参数。具体来说,xhxi和xixj的系数分别为<vh,vi>和<vi,vj>,它们之间有共同项 vi。也就是说,所有包含“ xi的非零组合特征”(存在某个 ,使得 ​)的样本都可以用来学习隐向量,这很大程度上避免了数据稀疏性造成的影响。具体的例子如下,主要是FM之中的隐向量之间具有相关性,隐向量可以从其他的隐向量对中学习而得。而POLY2只能由数据给定。所以当数据比较稀疏是,PLOY2中的交叉项非常稀疏,容易退化成LR。而FM则可以通过其他非0组合特征中学习到隐向量。具体例子如下:

  • FM的公式是一个通用的拟合方程,可以采用不同的损失函数用于解决regression、classification等问题,比如可以采用MSE(Mean Square Error)loss function来求解回归问题,也可以采Hinge/Cross-Entropy loss来求解分类问题。当然,在进行二元分类时,FM的输出需要使用sigmoid函数进行变换,该原理与LR是一样的。直观上看,FM的复杂度是。但是FM的二次项可以化简,其复杂度可以优化到 。由此可见,FM可以在线性时间对新样本作出预测。

FM模型的应用

最直接的想法就是直接把FM得到的结果放进sigmoid中输出一个概率值,由此做CTR预估,事实上我们也可以做召回。

由于FM模型是利用两个特征的Embedding做内积得到二阶特征交叉的权重,那么我们可以将训练好的FM特征取出离线存好,之后用来做KNN向量检索。

工业应用的具体操作步骤:

  1. 离线训练好FM模型(学习目标可以是CTR)

  2. 将训练好的FM模型Embedding取出

  3. 将每个uid对应的Embedding做avg pooling(平均)形成该用户最终的Embedding,item也做同样的操作

  4. 将所有的Embedding向量放入Faiss等

  5. 线上uid发出请求,取出对应的user embedding,进行检索召回

FM算法的优缺点

优点:

  • 引入了二阶项,能够自动进行特征组合

  • 二阶项的参数为两个特征之间的隐向量(由矩阵分解算法我们可以知道,隐向量具备了特征之间更深层的信息,从而能为我们挖掘出从没出现过的特征组合)

  • 隐向量之间具有相关性,能够解决样本稀疏时的参数轨迹问题。

缺点:

  • 当<vh,vi>和<vi,vj>,它们之间有共同项 vi时,vi是综合了vh和vj等多个和vi有交互的特征学习到的。虽然具有普遍意义,但是当vh和vj的差别很大时,使用同样的vi是不太合理的。因此我们引入了FFM。

FFM算法

FFM算法的思想

  • 在学习隐向量前,先把特征进行分类

  • 对于每个特征,按照不同的分类域学习不同的隐向量,也就是一个特征对应着多个隐向量。(也就是一个特征对应多个隐向量。 这样在与不同域(类)里面特征交叉的时候, 用相应的隐向量去交叉计算权重, emmm, 这倒是一种思路, 并且这样做的好处是学习隐向量的时候只需要考虑相应的域的数据, 且与不同类的特征进行关联采用不同的隐向量, 这和不同类特征的内在差异也比较相符。 这其实就是FFM在FM的基础上做的改进, 引入了域的概念, 对于每个特征, 针对不同的交叉域要学习不同的隐向量特征。)

  • 域理解起来的话其实就是先对特征根据性质的不同进行了一个分类,不同的分类就是不同的域,域内特征一般都是同一个categorical特征经过One-Hot编码生成的数值特征,比如用户性别, 职业, 日期啊等等。

AI上推荐 之 SDM模型(建模用户长短期兴趣的Match模型)
Miracle8070
04-01 6158
1. 写在前面 今天整理的是SDM模型(Sequential Deep Matching Model),依然是阿里团队在2019年CIKM上的一篇paper。和MIND模型一样,是一种序列召回模型,研究的依然是如何通过用户的历史行为序列去学习到用户的丰富兴趣。 对于MIND,我们已经知道是基于胶囊网络的动态路由机制,设计了一个动态兴趣提取层,把用户的行为序列通过路由机制聚类,然后映射成了多个兴趣胶囊,以此来获取到用户的广泛兴趣。而SDM模型,是先把用户的历史序列根据交互的时间分成了短期和长期两类,然后从短期
Python实现FM算法解析
09-19
主要介绍了Python实现FM算法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
【机器学习技术系列FM系列算法详解(FM、FFM、DeepFM)
小田的专栏
04-23 1097
可解释性强。形式简单,训练速度快。表达能力有限只在处理二分类问题上优势明显。
深入理解矩阵分解:Collaborative Filtering的力量
禅与计算机程序设计艺术
01-07 313
1.背景介绍 在本文中,我们将深入探讨矩阵分解(Matrix Factorization)技术及其在推荐系统中的应用,特别是基于协同过滤(Collaborative Filtering)的方法。协同过滤是一种基于用户行为的推荐系统方法,它通过分析用户之间的相似性来推断他们可能共同喜欢的项目。矩阵分解是协同过滤中的一种重要技术,它通过将原始数据矩阵分解为两个低秩矩阵来捕捉隐藏的因素,从而提高推荐系...
机器学习之矩阵分解和梯度下降
weixin_54937212的博客
01-14 1234
一、矩阵分解 1.概述 矩阵分解确实可以解决一些近邻模型无法解决的问题,近邻模型存在的问题:1、物品之间存在相关性,信息量并不是随着向量维度增加而线性增加 2、矩阵元素稀疏,计算结果不稳定,增减一个向量维度,导致紧邻结果差异很大的情况出现。 矩阵分解就是把原来的大矩阵,近似的分解成小矩阵的乘积,在实际推荐计算时不再使用大矩阵,而是使用分解得到的两个小矩阵。 2.核心原理 公式:R(n,m)≈ P(n,K)*Q(K,m) (R...
DataWhale推荐系统Task3-矩阵分解FM
JeffDing
10-24 842
第一部分:矩阵分解 1. 隐语义模型与矩阵分解 协同过滤算法的特点就是完全没有利用到物品本身或者是用户自身的属性, 仅仅利用了用户与物品的交互信息就可以实现推荐,是一个可解释性很强, 非常直观的模型, 但是也存在一些问题, 第一个就是处理稀疏矩阵的能力比较弱, 所以为了使得协同过滤更好处理稀疏矩阵问题, 增强泛化能力, 从协同过滤中衍生出矩阵分解模型(Matrix Factorization,MF)或者叫隐语义模型, 两者差不多说的一个意思, 就是在协同过滤共现矩阵的基础上, 使用更稠密的隐向量表示用户
Task3 矩阵分解
qq_43442822的博客
10-24 235
1. 隐语义模型与矩阵分解 协同过滤算法的特点就是完全没有利用到物品本身或者是用户自身的属性, 仅仅利用了用户与物品的交互信息就可以实现推荐,是一个可解释性很强, 非常直观的模型, 但是也存在一些问题, 第一个就是处理稀疏矩阵的能力比较弱, 所以为了使得协同过滤更好处理稀疏矩阵问题, 增强泛化能力, 从协同过滤中衍生出矩阵分解模型(Matrix Factorization,MF)或者叫隐语义模型, 两者差不多说的一个意思, 就是在协同过滤共现矩阵的基础上, 使用更稠密的隐向量表示用户和物品, 挖掘用户和物
fm算法详解_什么是FM算法
weixin_39676242的博客
01-17 926
FM(Factor Machine, 因子分解机)算法是一种基于矩阵分解的机器学习算法,是为了解决大规模稀疏数据中的特征组合问题。不同于传统的线性模型LR(Logistic Regression),其认为每个特征都是独立的。在FM中,考虑到特征之间的的交互作用,并对特征进行交叉组合。FM的二阶多项式回归模型如下:右式中的前两项就是简单的线性回归;第三项是交叉项,即特征两两组合,那么一共有n(n-1...
推荐系统组队学习——矩阵分解FM
weixin_45325331的博客
10-24 481
文章目录一、矩阵分解1.隐语义模型与矩阵分解2.矩阵分解算法原理3.Basic SVD4.编程实现5.优缺点分析二、FM 一、矩阵分解 1.隐语义模型与矩阵分解 矩阵分解模型是在协同过滤共现矩阵的基础上, 使用更稠密的隐向量表示用户和物品,挖掘用户和物品的隐含兴趣和隐含特征, 在一定程度上弥补协同过滤模型处理稀疏矩阵能力不足的问题。 它的核心思想是通过隐含特征(latent factor)联系用户兴趣和物品(item), 基于用户的行为找出潜在的主题和分类, 然后对item进行自动聚类,划分到不同类别/主
《现代推荐算法矩阵分解系列简介
01-06
文章来源《现代推荐算法矩阵分解系列简介 . 该章主要介绍矩阵分解系列算法,该系列算法推荐系统中最重要的算法之一,矩阵分解原理清晰,且复杂度不那么高。 对于矩阵分解系列算法在推荐算法中而言,其容易编程...
矩阵分解的推荐算法 matlab实现
11-30
矩阵分解的推荐算法 matlab实现,直接运行main.m
pmf_矩阵分解_PMF算法_推荐算法_
10-01
多种经典矩阵分解算法包,含但不局限于PMF,biasSVD
科普篇 | 推荐系统矩阵分解模型
01-06
下文是第一篇——《科普篇 | 推荐系统矩阵分解模型》,第二篇和第三篇将于后续发布,敬请期待。 矩阵分解(Matrix Factorization, MF)是推荐系统领域里的一种经典且应用广泛的算法。在基于用户行为的推荐算法
基于矩阵分解的个性化推荐系统——论文
05-15
基于矩阵分解的个性化推荐系统——论文,比较不错的论文
矩阵分解算法实现:C++的Armadillo库与Eigen库
禅与计算机程序设计艺术
12-29 1010
1.背景介绍 矩阵分解是一种常见的矩阵分析方法,主要用于处理高维数据的降维和特征提取。在现代数据挖掘和机器学习领域,矩阵分解技术被广泛应用于推荐系统、图像处理、文本摘要等方面。本文将介绍如何使用C++的Armadillo库和Eigen库实现矩阵分解算法,并详细解释其核心原理、数学模型以及具体操作步骤。 1.1 矩阵分解的基本概念 矩阵分解是指将一个矩阵分解为多个较小的矩阵的过程。这些较小的矩...
推荐系统矩阵分解深度学习方法
禅与计算机程序设计艺术
02-21 29
1.背景介绍 在我们的日常生活中,推荐系统无处不在。无论是电商平台的商品推荐,还是音乐、电影平台的内容推荐,甚至是社交媒体的信息推荐,都离不开推荐系统的身影。推荐系统的目标是通过分析用户的行为和偏好,为用户提供他们可能感兴趣的信息或产品,从而提高用户体验和商业价值。 推荐系统的核心问题是预测用户对未知项目的评分或偏好。为了解决这个问题,研
强化学习——学习笔记3
qq_52302919的博客
05-29 1492
先上图:在上述流程图中所说的Q表即为下表:假设我们在玩一个小游戏,该游戏有上下左右不同的动作,同时也会有不同的状态,比如游戏结束等。Q表也可以称为状态-价值函数QsaQ(s,a)Qsa:这个表格的每一行代表每个 state上述例子中的游戏结束等,每一列代表每个 action上述例子中的上下左右,表格的数值就是在各个 state 下采取各个 action 时能够获得的最大的未来期望奖励。
pytorch学习笔记5
最新发布
drarad的博客
06-02 1056
前向钩子(forward hook)在模块的前向传播开始时触发,前向后钩子(forward pre-hook)在前向传播之前触发,反向钩子(backward hook)在反向传播过程中触发。总结来说,钩子提供了一种在 PyTorch 模型的执行过程中插入自定义代码的方法,使得用户可以灵活地调试、监控和扩展模型的功能。作用: 这是一个内部的 C 语言指针,指向张量在底层库(通常是 C++ 实现的 PyTorch 核心)中的具体数据结构。这些钩子可以在张量的梯度计算之前或之后执行自定义的操作。
AI Agent:人类工作范式的颠覆者还是人机协作新范式?
Baihai_IDP的博客
05-29 734
生成式 AI 只是人工智能发展的开端,未来可能会出现更先进的 AI 智能体系统(AI Agent),我们应当重视 Andrew Ng(译者注:Andrew Ng 是斯坦福大学计算机科学系和电气工程系的客座教授,曾任斯坦福人工智能实验室主任。作者相信人工智能的未来必将呈现出更智能、更自主的 AI Agent 形态。但是 AI Agent 强调的是综合智能,包括但不限于决策制定、环境交互和跨领域的知识应用,这样的智能系统能够适应更复杂的任务需求,并在与人的交流合作中展现出更强的灵活性和实用性。
基于矩阵分解的推荐算法
05-11
基于矩阵分解的推荐算法是一种常见的协同过滤推荐算法。该算法通过将用户-物品评分矩阵分解成用户因子矩阵和物品因子矩阵,来预测用户对未评分物品的评分。 具体来说,该算法的步骤如下: 1. 构建用户-物品评分...

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • 推荐系统系列——推荐系统简介 8166
  • 数据库技术之mysql50题 2900
  • JavaWeb技术之JSP 2813
  • JavaWeb技术之MVC框架 2793
  • 推荐系统系列—协同过滤算法 1940

分类专栏

  • mongodb 1篇
  • JavaEE之SSM 7篇
  • 异常处理
  • 项目 2篇
  • JavaEE之微服务与分布式 3篇
  • JavaEE之Nosql 2篇
  • JavaEE之linux
  • JavaEE之maven 1篇
  • JavaEE之前端技术 10篇
  • 推荐系统实战 5篇
  • JavaEE笔记 16篇
  • JavaWeb 9篇
  • JAVAEE之mysql 5篇
  • 推荐系统 4篇
  • 周测 3篇

最新评论

  • 推荐系统实战——新闻推荐数据分析

    一个学数学的程序媛: 可以求一份数据集吗

  • JavaWeb技术之多表操作

    痛!太痛了!!!耶稣尔德,你为何!?: 我懂啦

  • 数据库技术之mysql50题

    超级小垃圾: 第13题,我差点就呕了~不要看这篇了

  • 数据库技术之mysql50题

    超级小垃圾: 第五题,group by 后面sc.sid,sname,写sc.sid就可以了吧?

  • 快递项目——手写MVC实现快递后台和平台

    water___Wang: 学到了,加油~

最新文章

  • Mongo基础笔记
  • lambda表达式
  • 业务代码编写规范
2022年2篇
2021年17篇
2020年64篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

深圳SEO优化公司海西SEO按效果付费多少钱湘潭网站设计哪家好吉祥百度网站优化公司淮南企业网站制作公司榆林百度seo多少钱桐城百姓网标王价格三亚网站seo优化南通网络营销报价济源网站改版价格大理百度关键词包年推广推荐池州至尊标王公司南山关键词按天计费报价西乡SEO按天收费推荐济宁企业网站设计推荐宜昌外贸网站制作价格永湖关键词按天收费公司惠州英文网站建设推荐宝鸡网站优化按天收费哪家好鸡西百姓网标王推广报价西安关键词排名多少钱松岗关键词按天收费哪家好南平网站搭建推荐扬州百度网站优化排名报价马鞍山设计公司网站公司西宁建网站报价宿州网站关键词优化多少钱爱联百度标王楚雄网站排名优化公司坪地营销型网站建设推荐榆林网站定制公司歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化