保持函数依赖的模式分解可以减轻或解决什么_推荐系统玩家 之 因子分解机FM(Factorization Machines)...
前言
因子分解机 (Factorization Machines) 是CTR预估的重要模型之一。自2010年被提出后,得到了大规模的应该,也是美团和头条做推荐和CTR预估的方法之一。要讲述因子分解机FM,就避不开逻辑回归LR(logistic Rgeression)和矩阵分解MF(Matrix Factorization)。那么本篇文章将会涉及到因子分解机的演变过程,公式推导以及求解因子分解机。
逻辑回归和矩阵分解的原理和推导我们在之前的文章中介绍过,有需要的朋友关注我的专栏:
推荐系统初级玩家zhuanlan.zhihu.com
![](/assets/blank.gif)
1.因子分解机的演变
![](/assets/blank.gif)
上图是传统的推荐系统模型的分类,逻辑回归LR模型在传统的推荐模型中占据着非常重要的位置。而因子分解机的出现,也来源于逻辑回归和矩阵分解的演化。
首先我们知道,逻辑回归的是对所有特征的一个线性加权组合, 然后再加入Sigmoid逻辑函数:
对比与矩阵分解,虽然逻辑回归模型已经不单单考虑了用户的行为特征,也可以加入年龄,性别,物品的属性,时间,地点等等特征。但是逻辑回归表达能力仍然差的原因是仅仅用了每个单一的特征,而没有考虑到特征之间的关系。
那有没有模型可以加入特征之间的联系呢?
POLY2模型(Degree-2 Polynomial Margin)则在LR的基础上采用了一种暴力的特征组合模式,即将所有特征两两相交,因此原来的LR模型就变成了:
其中
也就是说,POLY2模型将所有的特征两两相交,暴力的组合了特征。这样以来,就增加了特征的维度,考虑到了特征之间的关系。但是同时,暴力的组合带来的是维度的增加。在机器学习中,我们普遍使用One-hot编码,这样的暴力组合,就使得复杂度从
那么有没有方法可以处理稀疏数据,同时保持特征之间的联系呢?
2.因子分解机
![](/assets/blank.gif)
上图是电影背景下,用户对电影打分的onehot编码形式。每行代表一个样本,每列都代表一个特征。同时特征可以分为五个部分:用户ID,电影ID,用户对其他电影的打分(归一化),时间信息,以及对上一次电影的打分。
首先我们直观的看下,为什么POLY2模型在很多情况下是不适用的。
POLY2模型的表达式如上,
举个例子来说,如上图中,我们要估计用户A对电影ST星际迷航(Star Trek)的相互作用,来预测A都ST的打分。显然,上图中A列乘以ST列是等于0的。也就是说,交叉项
因此,因子分解机的应运而生。
因子分解机的优势是为每个特征学习了一个隐权重向量(latent vector),在特征交叉的时候,用这两个特征隐向量内积作为交叉特征的权重。如何理解这个含义呢?
在这里我们就要提一嘴矩阵分解。矩阵分解其实是将一个稀疏矩阵R分解为两个矩阵内积的形式,通过内积回乘,就能够得到一个满秩的矩阵。如果是电影的评分矩阵,也就是可以对未知的电影评分进行预测。具体可以看这篇文章:
推荐系统玩家:推荐系统玩家 之 矩阵分解(Matrix Factorization)的基本方法 及其 优缺点zhuanlan.zhihu.com
而因子分解机FM就是在POLY2模型的基础上,融合了矩阵分解的思想。即,对二阶交叉特征的系数以矩阵分解的方式调整,让系数不再是独立无关的,同时解决数据稀疏导致的无法训练参数的问题:
其中,
由矩阵分解可知,对任意一个正定矩阵
其次,在拆解为
我们举个例子来理解下上面的定义:
在商品推荐的场景下,样本有两个特征,分别是类品和品牌。某个训练样本的特征组合是(足球,阿迪达斯)。在POLY2模型中,只有当“足球”和“阿迪达斯”同时出现在一个训练样本中时,模型才能够学到这个组合特征对应的权重。而在因子分解机FM中,“足球”的的隐向量也可以根据(足球,耐克)进行更新。“阿迪达斯”的隐向量也可以根据(篮球,阿迪达斯)更新,由此一来,就大幅度的降低了模型对稀疏性的要求。
更极端的情况,对于一个从未出现的组合(篮球,耐克),因为模型已经学习了“篮球”和“耐克”的隐向量,因此就具备了更新权重
3.降低时间复杂度
公式(3)的时间复杂度为
![](/assets/blank.gif)
首先矩阵A中的上三角,红色方框部分代表公式(6),也就是因子分解机中二阶交叉项部分。由图可以看出,他是矩阵的全部元素减去对角线元素之和得到的, 即:
![](/assets/blank.gif)
其中,
因为 :
因此继续化简:
那么,因子分解机的二阶表达式就为:
其复杂度为
4.因子分解机FM求解
我们对公式(8)求偏导,可以计算因子分解模型对参数的梯度:
- 当参数为
时:
- 当参数为
时,只跟它相关的
有关:
当参数为
因此,因子分解机FM模型对参数的梯度为:
5.损失函数选取及算法流程
至此,我们就推导出了因子分解机的表达式以及参数的梯度。那么,损失函数在这里我们以以下两个为例, 并用梯度下降法求解:
回归问题:平方差损失函数
求偏导得:
平方损失函数的梯度为:
分类问题:对数损失函数
其中:
算法流程(以对数损失函数为例)
- 初始化权重
和矩阵
- 对每一个样本:
对特征
对
3. 重复步骤2,直到满足终止条件。
至此,因子分解机FM的原理就梳理完了。如果想了解梯度下降的朋友可以继续看这篇:
推荐系统玩家:推荐系统玩家 之 随机梯度下降(Stochastic gradient descent)求解矩阵分解zhuanlan.zhihu.com
保持函数依赖的模式分解可以减轻或解决什么_推荐系统玩家 之 因子分解机FM(Factorization Machines)...相关推荐
- 保持函数依赖的模式分解可以减轻或解决什么_为什么我更喜欢函数式编程?
作者 | Mario Morgenthum 译者 | 平川 编辑 | 陈思 AI 前线导读:在学习 Haskell 之前,作者一直使用主流语言,如 Java.C 和 C++--现在他仍然喜欢它们.那么 ...
- 推荐系统入门(三):矩阵分解MF因子分解机FM(附代码)
推荐系统入门(三):矩阵分解MF&因子分解机FM(附代码) 目录 推荐系统入门(三):矩阵分解MF&因子分解机FM(附代码) 一. 矩阵分解MF 1. 隐含语义分析技术 1.1 隐语义 ...
- 推荐系统学习笔记之四 Factorization Machines 因子分解机 + Field-aware Factorization Machine(FFM) 场感知分解机
前言 Factorization Machines(FM) 因子分解机是Steffen Rendle于2010年提出,而Field-aware Factorization Machine (FFM) ...
- 【数据库系统设计】关系数据理论(函数依赖、码、范式、模式分解)
关系数据理论 6.1 为什么要学习关系数据理论 什么是好的数据库逻辑设计 什么是数据依赖 关系模式的简化表示 6.2 规范化 - 关系的规范化理论 6.2.1 函数依赖 1.函数依赖 2.平凡函数依赖 ...
- 推荐系统中的矩阵分解| 奇异值分解及改进、因子分解机
网络中的信息量呈现指数式增长,随之带来了信息过载问题.推荐系统是大数据时代下应运而生的产物,目前已广泛应用于电商.社交.短视频等领域.本文将针对推荐系统中基于隐语义模型的矩阵分解技术来进行讨论. 目录 ...
- 函数依赖和关系模式分解
文章目录 一,第一范式 二,关系数据库设计中易犯的错误 2.1 数据冗余 2.2 插入.删除.修改异常 三,模式分解(I) 四,函数依赖(FD) 4.1 什么是函数依赖 4.2 函数依赖的使用 4.3 ...
- 数据库中的模式分解与无损连接性
无损连接分解的普通判别方法--表格法 设关系模式R=A1,-,An,R上成立的FD集F,R的一个分解p={R1,-,Rk}.无损连接分解的判断步骤如下: (1)构造一张k行n列的表格,每列对应一个属性 ...
- 判断模式分解是否为无损连接的方法
判断模式分解是否为无损连接的方法 [方法步骤] ρ = { R1<U1 , F1> , R2<U2 , F2> , - , Rk<Uk , Fk> } 是关系模式 ...
- 模式分解的无损连接性之深入剖析
1.无损连接分解的形式定义 无损连接分解的形式定义如下:设R是一个关系模式,F是R上的一个函数依赖(FD)集.R分解成数据库模式δ={R1,--,Rk}.如果对R中每一个满足F的关系r都有下式成立: ...
最新文章
- 使用alterMIME实现添加message footer功能
- linux nagios 检查udp端口,nagios插件之监控udp端口状态
- MySQL数据库同步小工具(Java实现)
- 还有多少时间可以用来读书
- 脑部手术成功,只是万里长征走完了第一步
- linux mysql make_二、linux-mysql -cmake方式安装mysql 5.5
- 利用Python来玩扫雷,极致的思维体验
- I00006 打印等腰三角形字符图案(底边在下)
- 【转】HTTP请求中的form data和request payload的区别
- “一夜成名”需要多久?他花了20年!
- c语言通讯录整体设计论文,通讯录管理系统的设计与实现
- laypage分页java例子_总结laypage.js分页插件用法
- 计算机控制系统中的Z变换
- 电子元器件商城与数据手册下载网站汇总
- 我的第一本书《FFmpeg音视频开发基础与实战》已正式出版
- JavaScript中canvas绘制太极图案
- java植物大战僵尸_JAVA课程设计——植物大战僵尸(团队)
- revit里的BIM模型转fbx真的可以带纹理材质吗?
- 十行代码写个摸鱼神器,帮你自动化操作Excel
- 联想服务器安装系统蓝屏怎么办,联想电脑装系统出现蓝屏怎么办