推荐系统 - FMs

Factorization Machines

  1. 论文提出了 Factorization Machine (因子分解机模型)来解决稀疏数据问题。并与支持向量机和矩阵分解算法(如SVD++)进行对比。

    FM模型在稀疏数据下可以同时训练一次项参数和二次项参数。设输入向量 \(\mathbf{x} = (x_0, x_1, ..., x_n)\),则

    \[\widehat{y}(\mathbf{x}) := \omega_0 + \sum_{i=1}^{n} \omega_i x_i + \sum_{i=1}^{n} \sum_{j=i+1}^{n} \left \langle\mathbf{v_i}, \mathbf{v_j} \right \rangle x_i x_j\]

    其中,\(\omega_0\) 是偏置,\(\omega_i\) 是特征的一次项参数,共有 \(n\) 个。\(\mathbf{v_i}\) 是长度为 \(k\) (超参数)的向量。二次项参数 \(\widehat{\omega}_{i,j}\) 是 \(\mathbf{v_i}\) 和 \(\mathbf{v_j}\) 的内积,因此二次项参数共有 \(k \cdot n\) 个。总的参数为 \(1 + n + k \cdot n\)

    此外,\(\sum_{i=1}^{n} \sum_{j=i+1}^{n} \left \langle\mathbf{v_i}, \mathbf{v_j} \right \rangle x_i x_j\) 的计算可以推导为

    \[\frac{1}{2} \sum_{f=1}^{k}((\sum_{i=1}^{n} v_{i,f} x_i)^2 - \sum_{i=1}^{n} v_{i,f}^2 x_i^2)\]

    因此,对一个样本进行一次预测的时间复杂度为 \(O(nk)\)。

    • FM模型可以加入正则项,如L2正则;也可以扩展为 d-way FM。每增加一维的交叉特征,就会增加 \(k_d \cdot n\) 个参数,计算的时间复杂度也会乘以 \(O(n)\)。
    • FM模型可以应用在一系列的预测问题中,比如回归问题,二分类问题和排序问题。二分类问题中可以选择 Hinge Loss 或者 Log Loss 作为损失函数。
  2. 关于超参数k

    超参数 k 越大,模型的假设空间越大,表达能力越强;超参数 k 越小,模型的泛化效果越强。

    可以把所有的二次项系数 \(\widehat{\omega}_{i,j}\) 看做是一个 N x N 的实对称矩阵 W(对角线元素可以看做是 \(\mathbf{v_i}\) 的 L2 范数,则均为非负数)。那么,当 k 足够大时,$ W = V^T \cdot V$。但是,在稀疏问题下,由于没有足够的样本来估计复杂的交叉特征矩阵 W,因此 k 取较小值,提高模型的泛化能力。

  3. 对于稀疏问题,Logistic Regression 学习每一个特征对于问题影响程度的“权重”,在推断时仅考虑数值不为0的特征,计算效率高,但无法学习到交叉特征(interactions between two features)对问题的影响。运用核技巧的对偶形式的 SVM 可以将交叉特征的影响引入到模型中。此时,支持向量定义SVM模型,确定了支持向量后,可以忽略其他数据以及所有支持向量中没有出现过的特征,同时适合处理稀疏问题。

    但 SVM 有几个缺点。

    1. 模型中需要存储支持向量,尽管支持向量仅在所有数据集中占有一小部分。
    2. SVM 学习稀疏特征的超平面参数(即引入非线性核函数)的能力不强。如果在训练集中某两个特征从来同时同时出现过,则SVM无法很好地估计其参数。
    3. 对偶形式的 SVM 的参数与训练数据的数量有关,而推荐系统中的数据量很大。

    Matrix Factorization 即矩阵分解方法(如SVD++)也有几个缺点。

    1. 只适合稀疏的类别特征矩阵,不适合处理标准的数值特征。
    2. 对于每一个特定的任务都需要单独地推导实现(derived individually for a specific task)

    FM的训练和预测的时间复杂度是线性的,可以在非常稀疏的数据集下实现参数的估计。对模型的存储过程中,只需要存储参数,不需要像 SVM 一样存储训练数据。同时,其输入即可以是类别特征,也可以是数值特征。在稀疏特征中,即使存在某个交叉特征在训练集中从来没有出现,但仍然可以通过对应的两个特征的 latent variables 的内积来估计其参数。

Field-aware Factorization Machines for CTR Prediction

  1. 在 FM 模型中,引入了 Field 的概念。即 FFM 把相同性质的特征归类为同一个 Field。比如,对于一个类别特征,经过独热编码后变为 m 维特征,其中只有一维值为1,剩下 m-1 维的值为0。这 m 维特征属于同一个 Field。对于一个数值特征,可以归一化后不做处理,也可以现将连续的数值离散化后再做独热处理。处理过后的特征(要么使用前者得到1维特征,要么使用后者得到m维特征)属于同一个 Field。

    假设模型一定有 n 维特征,f 个 Field,latent variables 的长度为 k (超参数),那么其二次项参数共有 $ n \cdot f \cdot k$ 个,计算的时间复杂度为 $O(n^2 k) $。由于一个特征对应的 latent variable 只需要学习某个 Field 的特征对该特征的影响,因此 \(k_{FFM} << k_{FM}\)。如果数据中只有 1 个 Field,那么 FFM 模型退化为 FM。

    \[\widehat{y}(\mathbf{x}) := \omega_0 + \sum_{i=1}^{n} \omega_i x_i + \sum_{i=1}^{n} \sum_{j=i+1}^{n} \left \langle\mathbf{\omega}_{i, f_j}, \mathbf{\omega}_{j, f_i} \right \rangle x_i x_j\]

  2. FFM的实现

    \[\min_{\mathbf{\omega}} \frac{\lambda}{2}||\omega||_2^2 + \sum_{i=1}^{m} log(1+exp(-y_i \phi_{FFM}(\mathbf{\omega}, \mathbf{x_i})))\]

    默认使用 AdaGrad 方法进行训练优化。

    根据经验,对于每一个实例,对其标准化可以使得预测精度轻微地提升,对参数的敏感性降低。

DeepFM: A Factorization-Machine based Neural Network for CTR Prediction

原文地址:https://www.cnblogs.com/viredery/p/fm_and_variants.html

时间: 2024-11-25 12:33:34

推荐系统 - FMs的相关文章

基于Spark MLlib平台的协同过滤算法---电影推荐系统

基于Spark MLlib平台的协同过滤算法---电影推荐系统 又好一阵子没有写文章了,阿弥陀佛...最近项目中要做理财推荐,所以,回过头来回顾一下协同过滤算法在推荐系统中的应用. 说到推荐系统,大家可能立马会想到协同过滤算法.本文基于Spark MLlib平台实现一个向用户推荐电影的简单应用.其中,主要包括三部分内容: 协同过滤算法概述 基于模型的协同过滤应用---电影推荐 实时推荐架构分析     一.协同过滤算法概述 本人对算法的研究,目前还不是很深入,这里简单的介绍下其工作原理. 通常,

机器人--推荐系统(1)

430的目标是完成机器人的推荐系统,提高机器人回答问题的准确率,关于过程碰到的问题以及解决方案与大家分享一下,(请轻喷!) 那么这个推荐系统到底应该怎么做呢? 最开始的第一个思路是 根据用户 进入到ERP的模块 推荐该模块下的相关问题.其实就是根据用户的轨迹来推荐问题,这是一个思路但是不太完整.因为很有可能用户就从ERP的桌面就进入了机器人,但他实际要咨询的是销售系统的相关知识,那么此时的推荐就不太满足用户的咨询需求. 因此参考一些业界其他公司的做法,可以基于内容的协同过滤(Collaborat

推荐系统中常用算法 以及优点缺点对比

推荐系统中常用算法 以及优点缺点对比 在 推荐系统简介中,我们给出了推荐系统的一般框架.很明显,推荐方法是整个推荐系统中最核心.最关键的部分,很大程度上决定了推荐系统性能的优劣.目前,主要的推荐方法包括:基于内容推荐.协同过滤推荐.基于关联规则推荐.基于效用推荐.基于知识推荐和组合推荐. 一.基于内容推荐 基于内容的推荐(Content-based Recommendation)是信息过滤技术的延续与发展,它是建立在项目的内容信息上作出推荐的,而不需要依据用户对项目的评价意见,更多地需要用机 器

推荐系统-实战总结

推荐系统实战 这周看了推荐系统实战这本书,其中基本上介绍的比较全面,但是每一部分并没有十分深入,深入的精华全部都在下方的备注当中,备注中有很多的论文,可以进行进一步的学习. 首先回顾一下一些框架信息,在专门思考其中几个重要的部分: 3种联系用户和item的推荐方式: 1 根据用户的历史行为,表达过反馈的item进行item的预测,传统的itemCF 2 根据用户的历史行为,找到相似用户,进行预测, userCF 3 根据用户的喜好和个人信息,提取用户的特征,喜欢的物品的特征,进行预测.基本上就是

推荐系统(1)

推荐系统目的:引导用户浏览更多的内容 一.推荐功能设计(新用户的话可以基于热度,有了用户数据以后可以进行个性化推荐) 1.个性化首页 个性化促销,关注信息推送 2.item页面 关联商品 基于浏览历史的推荐 基于购买历史的推荐 3.User页面 4.购物车页面 5.community页面 二.界面设计 1.如何将推荐结果呈现给用户 2.如何收集用户信息和反馈数据 3.目的: 提高用户满意度,达到推荐目的 更多更好地收集高质量的用户反馈 准确评测推荐算法效果 4.重要性 *呈现方式不同会导致推荐反

推荐系统学习07-Waffles

介绍 Waffles 英文原意是蜂蜜甜饼,在这里却指代一个很强大的机器学习的开源工具包. Waffles里包括的算法特别多.涉及机器学习的方方面面,推荐系统位于当中的Waffles_recommend  tool,大概仅仅占整个Waffles的1/10的内容,其他还有分类.聚类.採样.降维.数据可视化.音频处理等许很多多工具包,预计能与之媲美的也就数Weka了. 你能够在waffles看到关于这个工具的具体内容. 你还能够訪问waffles的github网站. waffles与其它的机器学习工具

随时更新———个人喜欢的关于模式识别、机器学习、推荐系统、图像特征、深度学习、数值计算、目标跟踪等方面个人主页及博客

目标检測.识别.分类.特征点的提取 David Lowe:Sift算法的发明者,天才. Rob Hess:sift的源代码OpenSift的作者,个人主页上有openSift的下载链接.Opencv中sift的实现.也是參考这个. Koen van de Sande:作者给出了sift,densesift,colorsift等等经常使用的特征点程序.输出格式见个人主页说明,当然这个特征点的算法,在Opencv中都有实现. Ivan Laptev:作者给出了物体检測等方面丰富C\C++源代码,及部

推荐系统评测指标—准确率(Precision)、召回率(Recall)、F值(F-Measure)

下面简单列举几种常用的推荐系统评测指标: 1.准确率与召回率(Precision & Recall) 准确率和召回率是广泛用于信息检索和统计学分类领域的两个度量值,用来评价结果的质量.其中精度是检索出相关文档数与检索出的文档总数的比率,衡量的是检索系统的查准率:召回率是指检索出的相关文档数和文档库中所有的相关文档数的比率,衡量的是检索系统的查全率. 一般来说,Precision就是检索出来的条目(比如:文档.网页等)有多少是准确的,Recall就是所有准确的条目有多少被检索出来了. 正确率.召回

推荐系统相关算法

摘要: 热门推荐 协同过滤算法 矩阵分解 基于内容的推荐(文本,标签,特征/profile)   基于图的算法 内容: 热门推荐: 热门推荐本质上是一个排行榜,可能会考虑到时间衰减,商品的销量/流行度,好评,差评等因素,对于新用户引导有一定的作用,但是并不是一个个性化的算法 以下是一些热门排名的公式实现: 1 def hacker_news_rank( ): 2 #参考自http://www.oschina.net/news/43456/how-hacker-news-ranking-algor