精华内容
下载资源
问答
  • 因子分解机

    2020-07-02 14:54:42
    因子分解机 Factorization Machines 因子分解机(FM)[Rendle,2010]由Steffen Rendle于2010年提出,是一种可用于分类、回归和排序任务的监督算法。它很快就引起了人们的注意,并成为一种流行而有影响力的预测和推荐...

    因子分解机

    Factorization Machines

    因子分解机(FM)[Rendle,2010]由Steffen Rendle于2010年提出,是一种可用于分类、回归和排序任务的监督算法。它很快就引起了人们的注意,并成为一种流行而有影响力的预测和推荐方法。特别地,它是线性回归模型和矩阵分解模型的推广。此外,它让人想起具有多项式核的支持向量机。与线性回归和矩阵分解相比,因式分解机的优势在于:(1)它可以建模X-变量交互作用,其中X是多项式阶数,通常设为2。(2) 与因子分解机相结合的快速优化算法可以将多项式的计算时间减少到线性复杂度,特别是对于高维稀疏输入,它是非常有效的。基于这些原因,因子分解机被广泛应用于现代广告和产品推荐中。技术细节和实现如下所述。

    1. 2-Way Factorization Machines
      在这里插入图片描述
      一些特性交互很容易理解,因此可以由专家设计。然而,大多数其他特性交互都隐藏在数据中,难以识别。因此,特征交互的自动建模可以大大减少特征工程的工作量。很明显,前两项对应于线性回归模型,最后一项是矩阵分解模型的扩展。如果功能i表示项和功能,j表示一个用户,第三项正好是用户和项嵌入之间的点积。值得注意的是,FM也可以推广到更高阶(度>2)。然而,数值稳定性可能会削弱推广。

    2. An Efficient Optimization Criterion

    用直接的方法优化因子分解机会导致O(kd2),因为所有成对的相互作用都需要计算。为了解决这一效率低下的问题,我们可以对FM的第三项进行重组,这样可以大大降低计算成本,从而导致线性时间复杂度(O(kd)O(kd))。两两相互作用项的重新表述如下:
    在这里插入图片描述
    通过这种重构,大大降低了模型的复杂度。此外,对于稀疏特征,只需要计算非零元素,这样整体复杂度就与非零特征的数量成线性关系。

    为了学习FM模型,我们可以将MSE损失用于回归任务,交叉熵损失用于分类任务,BPR损失用于排名任务。标准优化器(如SGD和Adam)可用于优化。

    from d2l import mxnet as d2l

    from mxnet import init, gluon, np, npx

    from mxnet.gluon import nn

    import os

    import sys

    npx.set_np()

    1. Model Implementation

    下面的代码实现了因子分解机。很明显,FM由一个线性回归块和一个有效的特征交互块组成。由于我们将CTR预测视为一个分类任务,因此我们对最终得分应用了一个S形函数。

    class FM(nn.Block):

    def __init__(self, field_dims, num_factors):
    
        super(FM, self).__init__()
    
        num_inputs = int(sum(field_dims))
    
        self.embedding = nn.Embedding(num_inputs, num_factors)
    
        self.fc = nn.Embedding(num_inputs, 1)
    
        self.linear_layer = nn.Dense(1, use_bias=True)
    
    def forward(self, x):
    
        square_of_sum = np.sum(self.embedding(x), axis=1) ** 2
    
        sum_of_square = np.sum(self.embedding(x) ** 2, axis=1)
    
        x = self.linear_layer(self.fc(x).sum(1)) \
    
            + 0.5 * (square_of_sum - sum_of_square).sum(1, keepdims=True)
    
        x = npx.sigmoid(x)
    
        return x
    
    1. Load the Advertising Dataset

    我们使用最后一节中的CTR数据包装器来加载在线广告数据集。

    batch_size = 2048

    data_dir = d2l.download_extract(‘ctr’)

    train_data = d2l.CTRDataset(os.path.join(data_dir, ‘train.csv’))

    test_data = d2l.CTRDataset(os.path.join(data_dir, ‘test.csv’),

                           feat_mapper=train_data.feat_mapper,
    
                           defaults=train_data.defaults)
    

    num_workers = 0 if sys.platform.startswith(‘win’) else 4

    train_iter = gluon.data.DataLoader(

    train_data, shuffle=True, last_batch='rollover', batch_size=batch_size,
    
    num_workers=num_workers)
    

    test_iter = gluon.data.DataLoader(

    test_data, shuffle=False, last_batch='rollover', batch_size=batch_size,
    

    num_workers=num_workers)

    1. Train the Model

    然后,我们训练模型。默认情况下,学习率设置为0.01,嵌入大小设置为20。Adam优化器和SigmoidBinaryCrossEntropyLoss loss用于模型训练。

    ctx = d2l.try_all_gpus()

    net = FM(train_data.field_dims, num_factors=20)

    net.initialize(init.Xavier(), ctx=ctx)

    lr, num_epochs, optimizer = 0.02, 30, ‘adam’

    trainer = gluon.Trainer(net.collect_params(), optimizer,

                        {'learning_rate': lr})
    

    loss = gluon.loss.SigmoidBinaryCrossEntropyLoss()

    d2l.train_ch13(net, train_iter, test_iter, loss, trainer, num_epochs, ctx)

    loss 0.505, train acc 0.761, test acc 0.759

    151228.5 examples/sec on [gpu(0), gpu(1)]
    在这里插入图片描述
    6. Summary

    · FM is a general framework that can be applied on a variety of tasks such as regression, classification, and ranking.

    · Feature interaction/crossing is important for prediction tasks and the 2-way interaction can be efficiently modeled with FM.

    展开全文
  • fm因子分解机

    2018-10-24 11:53:09
    fm因子分解机, 挺好的东西。你认为好的话,下载一个,我缺分。
  • 逻辑回归无法学习到特征间的组合关系,因此有了 因子分解机FM 和 场感知因子分解机FFM。 接下来,介绍下场感知因子分解机的主要应用。FFM模型可以自动做特征组合和处理高维稀疏特征,因而它在处理大量离散特征问题...

    逻辑回归无法学习到特征间的组合关系,因此有了 因子分解机FM 和 场感知因子分解机FFM。

    接下来,介绍下场感知因子分解机的主要应用。FFM模型可以自动做特征组合和处理高维稀疏特征,因而它在处理大量离散特征问题上往往有比较好的效果。但要注意对连续特征做归一化或者离散化。

    因子分解机FM

    1.FM背景

    在计算广告中,CTR预估(click-through rate)是非常重要的一个环节,因为DSP后面的出价要依赖于CTR预估的结果。在前面的相关博文中,我们已经提到了CTR中相关特征工程的做法。对于特征组合来说,业界现在通用的做法主要有两大类:FM系列与Tree系列。今天,我们就来讲讲FM算法。

    2.one-hote编码带来的问题

    FM(Factorization Machine)主要是为了解决数据稀疏的情况下,特征怎样组合的问题。已一个广告分类的问题为例,根据用户与广告位的一些特征,来预测用户是否会点击广告。数据如下:(本例来自美团技术团队分享的paper)


    clicked是分类值,表明用户有没有点击该广告。1表示点击,0表示未点击。而country,day,ad_type则是对应的特征。对于这种categorical特征,一般都是进行one-hot编码处理。

    将上面的数据进行one-hot编码以后,就变成了下面这样

    因为是categorical特征,所以经过one-hot编码以后,不可避免的样本的数据就变得很稀疏。举个非常简单的例子,假设淘宝或者京东上的item为100万,如果对item这个维度进行one-hot编码,光这一个维度数据的稀疏度就是百万分之一。由此可见,数据的稀疏性,是我们在实际应用场景中面临的一个非常常见的挑战与问题。

    one-hot编码带来的另一个问题是特征空间变大。同样以上面淘宝上的item为例,将item进行one-hot编码以后,样本空间有一个categorical变为了百万维的数值特征,特征空间一下子暴增一百万。所以大厂动不动上亿维度,就是这么来的。

    3.对特征进行组合

    普通的线性模型,我们都是将各个特征独立考虑的,并没有考虑到特征与特征之间的相互关系。但实际上,大量的特征之间是有关联的。最简单的以电商为例,一般女性用户看化妆品服装之类的广告比较多,而男性更青睐各种球类装备。那很明显,女性这个特征与化妆品类服装类商品有很大的关联性,男性这个特征与球类装备的关联性更为密切。如果我们能将这些有关联的特征找出来,显然是很有意义的。

    一般的线性模型为:

    从上面的式子很容易看出,一般的线性模型压根没有考虑特征间的关联。为了表述特征间的相关性,我们采用多项式模型。在多项式模型中,特征 xi 与 xj 的组合用xixj表示。为了简单起见,我们讨论二阶多项式模型。具体的模型表达式如下:

    上式中,n 表示样本的特征数量,xi表示第 i 个特征。
    与线性模型相比,FM的模型就多了后面特征组合的部分。

    4.FM求解

    场感知因子分解机FFM(Field-aware Factorization Machine)

    1、FFM理论

    在CTR预估中,经常会遇到one-hot类型的变量,one-hot类型变量会导致严重的数据特征稀疏的情况,为了解决这一问题,在上一讲中,我们介绍了FM算法。这一讲我们介绍一种在FM基础上发展出来的算法-FFM(Field-aware Factorization Machine)。

    FFM模型中引入了类别的概念,即field。还是拿上一讲中的数据来讲,先看下图:

    在上面的广告点击案例中,“Day=26/11/15”、“Day=1/7/14”、“Day=19/2/15”这三个特征都是代表日期的,可以放到同一个field中。同理,Country也可以放到一个field中。简单来说,同一个categorical特征经过One-Hot编码生成的数值特征都可以放到同一个field,包括用户国籍,广告类型,日期等等。

    在FFM中,每一维特征 xi,针对其它特征的每一种field fj,都会学习一个隐向量 v_i,fj。因此,隐向量不仅与特征相关,也与field相关。也就是说,“Day=26/11/15”这个特征与“Country”特征和“Ad_type"特征进行关联的时候使用不同的隐向量,这与“Country”和“Ad_type”的内在差异相符,也是FFM中“field-aware”的由来。

    假设样本的 n个特征属于 f个field,那么FFM的二次项有 nf个隐向量。而在FM模型中,每一维特征的隐向量只有一个。FM可以看作FFM的特例,是把所有特征都归属到一个field时的FFM模型。根据FFM的field敏感特性,可以导出其模型方程。

    可以看到,如果隐向量的长度为 k,那么FFM的二次参数有 nfk 个,远多于FM模型的 nk个。此外,由于隐向量与field相关,FFM二次项并不能够化简,其预测复杂度是 O(kn^2)。

    下面以一个例子简单说明FFM的特征组合方式。输入记录如下:

    这条记录可以编码成5个特征,其中“Genre=Comedy”和“Genre=Drama”属于同一个field,“Price”是数值型,不用One-Hot编码转换。为了方便说明FFM的样本格式,我们将所有的特征和对应的field映射成整数编号。

    那么,FFM的组合特征有10项,如下图所示。

    其中,红色是field编号,蓝色是特征编号。

    2、FFM实现细节

    这里讲得只是一种FFM的实现方式,并不是唯一的。

    损失函数
    FFM将问题定义为分类问题,使用的是logistic loss,同时加入了正则项

    什么,这是logisitc loss?第一眼看到我是懵逼的,逻辑回归的损失函数我很熟悉啊,不是长这样的啊?其实是我目光太短浅了。逻辑回归其实是有两种表述方式的损失函数的,取决于你将类别定义为0和1还是1和-1。大家可以参考下下面的文章:https://www.cnblogs.com/ljygoodgoodstudydaydayup/p/6340129.html。当我们将类别设定为1和-1的时候,逻辑回归的损失函数就是上面的样子。

    随机梯度下降

    训练FFM使用的是随机梯度下降方法,即每次只选一条数据进行训练,这里还有必要补一补梯度下降的知识,梯度下降是有三种方式的

     

    展开全文
  • 因子分解机FM

    2020-07-18 11:57:16
    因子分解机FM 阅读完博文https://blog.csdn.net/ddydavie/article/details/82667890 https://www.cnblogs.com/makefile/p/ffm.html之后关于因子分解机的感悟 问题背景:人工方式的特征工程尝尝会面临一个问题就是...

    因子分解机FM

    阅读完博文
    https://tech.meituan.com/2016/03/03/deep-understanding-of-ffm-principles-and-practices.html(美团技术团队)
    https://blog.csdn.net/ddydavie/article/details/82667890之后关于因子分解机的感悟

    问题背景

    人工方式的特征工程尝尝会面临一个问题就是特征组合。面对高维数据,训练模型常遇到的问题包括:特征组合无法识别,特征爆炸。因子分解机是解决特征关联的有效算法,并且还解决了数据稀疏性的问题。

    模型构建

    因子分解用二次项系数wij刻画特征组合(i,j)之间的关联关系。考虑到当且仅当特征值xi和xj在同时非零时,组合特征才有意义,训练集数据才能进一步训练参数。但是onehot编码后的特征向量很稀疏,特征值同时非零的条件比较难满足。所以借鉴矩阵分解的思路,把评分矩阵分解为用户矩阵和项目矩阵,即每个用户或者项目都可以用隐向量表示(这个隐向量的维度k怎么确定呢?)。把由特征组合的系数wij组成的矩阵W也进行分解。

    文献跟踪

    下面这篇论文是因子分解机在解决序回归问题的一个改进,增强了对FM特征对预测结果的可解释性。
    Guo, M., Xu, Z., Zhang, Q., Liao, X., & Liu, J. (2019). Explainable Ordinal Factorization Model: Deciphering the Effects of Attributes by Piece-wise Linear Approximation. arXiv preprint arXiv:1911.05909.
    基于多属性效用理论,该论文将FM模型方程的线性部分用分段线性的效用函数表示,特征组合部分不变。
    remark:在训练参数前,要对训练集{(xi,yi)}进行预处理。

    展开全文
  • FM因子分解机

    2018-10-10 10:32:46
    FM因子分解机

    FM因子分解机

    展开全文
  • 本篇文章我们会讲解一类新的算法:因子分解机(Factorization Machine,简称FM,为了后面书写简单起见,中文简称为分解机),该算法的核心思路来源于矩阵分解算法,矩阵分解算法可以看成是分解机的特例(我们在第三...
  • 因子分解机 FM

    2021-03-29 23:54:04
    目录背景FM因子分解机FM模型的核心作用可以概括为三个与其他模型对比FFM(场感知分解机,Field-aware Factorization Machine)背景DeepFMFM/FFM与其它模型对比 背景 在人工方式的特征工程,通常有两个问题: 1、特征...
  • factorization machine 隐因子分解机
  • FM——因子分解机 一、因子分解机FM的模型 因子分解机(Factorization Machine, FM)是由Steffen Rendle提出的一种基于矩阵分解的机器学习算法。1、因子分解机FM的优势 对于因子分解机FM来说,最大的特点是对于稀疏的...
  • 基于因子分解机的质量感知Web服务推荐方法
  • 因子分解机小结

    2020-09-14 00:08:35
    @[TOC] 因子分解机小结 我认为了解因子分解机的前提要先知道矩阵分解。 矩阵分解就是将一个矩阵拆分成多个矩阵的乘积 矩阵分解的方法:SVD、FunkSVD、BaisSVD、SVD++ SVD就是矩阵的奇异值分解,分解成psq三个矩阵,p...
  • 聚类算法与因子分解机相结合的社交网络好友推荐
  • 因子分解机——代码

    千次阅读 2020-07-03 20:39:07
    利用矩阵,梯度下降算法实现的因子分解机 import numpy as np LEARNING_RATE = 0.95 REGULARIZATION_COEFFICIENT = 0.000001 STEP_THRESHOLD = 300 K = 6 def sigmoid(x): return 1/(1+np.exp(-x)) class ...
  • Factorization Machines简称FM,因子分解机。 FM结合了因子分解的优点和支持向量机SVM的优点。 FM用因子参数构建了所有变量间的交互。这些交互通常是存在很大的稀疏性,FM的优点就是处理这些稀疏性。而且是线性的...
  • 在看推荐领域论文时提到了FM(因子分解机),于是搜集资料梳理了一下,以下知乎文章讲的比较好并且其引文中的讲解质量也很高,贴在下面,如侵权请通知,第一时间删除。 前言 本文要讲解的FM(Factorization Machine)...
  • 文章目录因子分解机(Factorization Machines)一、总述二、二阶多项式核 SVM三、因子分解机(FM)四、优化计算复杂度五、梯度 因子分解机(Factorization Machines) 一、总述 线性回归是基本的回归模型之一,其...
  • 因子分解机 FM和FFM

    万次阅读 2018-09-12 20:32:22
    因子分解机 Factorization Machine 因子分解机主要是考虑了特征之间的关联。 FM主要是为了解决数据稀疏的情况下,(而SVM无法解决稀疏问题),特征怎样组合的问题。 数据稀疏是指数据的维度很大,但是其中为0的...
  • 因子分解机Factorization Machines因子分解机(FM)[Rendle,2010]由Steffen Rendle于2010年提出,是一种可用于分类、回归和排序任务的监督算法。它很快就引起了人们的注意,并成为一种流行而有影响力的预测和推荐...
  • 一、因子分解机FM的模型 因子分解机(Factorization Machine, FM)是由Steffen Rendle提出的一种基于矩阵分解的机器学习算法。1、因子分解机FM的优势 对于因子分解机FM来说,最大的特点是对于稀疏的数据具有很好的...
  • 其中针对矩阵因子分解算法中的偏差问题,提出一种基于高阶偏差的因子分解机算法。该算法首先按照评分偏差的现实特征对用户和项目进行划分,再将偏差类别作为辅助特征集成到因子分解机中,实现了评分预测中不同偏差...
  • FM(因子分解机系列)

    千次阅读 2017-07-12 13:39:31
    因子分解机,FFM,线性回归
  • 特征组合之因子分解机(FM)

    千次阅读 2018-11-20 21:32:12
    特征组合之因子分解机(FM) 1. 为什么需要因子分解机? 在上一篇博客特征组合中提到,暴力交叉会导致特征组合的特征稀疏的问题,所以FM(Factorization Machine)主要目标是:解决数据稀疏的情况下,特征怎样组合的问题...
  • 文章目录简介因子分解机FM模型因子分解机FM的优势模型因子分解机求解CodeReference 简介 因子分解机将支持向量机SVM的优势结合分解模型。如SVM,因子分解机是一个通用的预测器,可以用在任意实数值向量上。但是不同...
  • 因子分解机-FM和FFM

    2020-03-17 23:17:25
    独热编码是将特征离散化的一种方法,在因子分解机FM中非常推荐使用。 对于那些连续化特征,分桶就能实现离散化,但好处不是很明显。 而对于那些本身离散化的特征,即假设0表示北京,1表示南京,2表示上海,那么one-...
  • FM(因子分解机)理解

    2020-04-10 14:23:17
    因子分解机 FM的优势 (1)FM可以在非常稀疏的数据下进行参数评估。 (2)FM的复杂度为线性复杂度,利于优化。 (3)其他的分解模型输入数据是有限制的,但是FM可以可以用在一些real valued特征向量上。 ...
  • 基于注意力的深度因子分解机模型的研究,温瑶瑶,吴为民,
  • 与矩阵因子分解相比,因子分解机本质上是更通用的。我们常见的问题表述本身是非常不同的,它被公式化为线性模型,特征之间的交互作用作为附加参数。此功能交互以其潜在空间标识而不是其纯格式完成。因此,除了像矩阵...

空空如也

空空如也

1 2 3 4 5 ... 19
收藏数 379
精华内容 151
关键字:

因子分解机