@
目录一、算法概念
因子分解机(Factorization Machines, FM)是一种基于矩阵分解的机器学习算法,主要解决高维稀疏数据下的特征交互和参数估计问题。FM 通过引入特征组合和隐向量的矩阵分解来提升模型表现,特别适合处理推荐系统等场景中的数据稀疏性和特征交互复杂性。
FM 可以用于分类和回归任务,是线性模型的扩展,能够高效地捕捉特征之间的交互作用。FM 的核心是通过低维向量的内积表示特征交互,使得其参数数量随维度线性增长,从而降低计算复杂度。
FM 的主要特点:
$\bullet$有监督学习模型,适用于回归和分类任务。
$\bullet$通过低维向量的内积表示特征交互,模型结构保持线性。
$\bullet$常用训练方法:随机梯度下降(SGD)、交替最小二乘法(ALS)和马尔可夫链蒙特卡洛(MCMC)。
FM 模型通过矩阵分解对特征交互建模,并且在处理稀疏数据时有显著优势,常用于推荐系统。
二、算法原理
(一) FM表达式
为了使系统能够进行预测,它依赖于由用户事件记录生成的可用数据。这些数据是表示兴趣和意图的交易记录,例如:下载、购买、评分。
对于一个电影评论系统来说,交易数据记录了用户 $u \in U$ 在某一时间 $t \in R$ 对电影(物品) $i \in I$ 给出的评分 $r \in{1, 2, 3, 4, 5 }$ ,由此产生的数据集可以表示如下:
用于预测的数据表示为一个矩阵 $X \in\mathbb{R}^{m \times n}$ ,其中包含总共 $m$ 个观测值,每个观测值由一个实值特征向量 $x \in\mathbb{R}^{n}$ 组成。来自上述数据集的特征向量可以表示为:
其中, $n=| U |+| I |+| T |$ ,即 $x \in\mathbb{R}^{n}$ 也可以表示为 $x \in\mathbb{R}^{| U |+| I |+| T |}$ ,其中训练数据集的表达式为 $D={( x^{( 1 )}, y^{( 1 )} ), ( x^{( 2 )}, y^{( 2 )} ), \ldots, ( x^{( m )}, y^{( m )} ) }$ 。训练目标是估计一个函数 $\hat{y} ( x ) : \mathbb{R}^{n} \to\mathbb{R}$ ,当提供第 $i$ 行 $x_{i} \in\mathbb{R}^{n}$ 作为输入时,能够正确预测对应的目标值 $y_{i} \in\mathbb{R}$ 。
FM模型的计算表达式如下所示:
$< {\mathbf{v}}{i}, {\mathbf{v}} >$ 是交叉特征的参数,可以由一组参数定义:
$$
< {\mathbf{v}}{i}, {\mathbf{v}} >=\hat{w}{i, j}=\sum^{k} v_{i, f} \times v_{j, f}
$$
当 $k$ 足够大时,对于任意对称正定的实矩阵 $\widehat{W} \in\mathbb{R}^{n \times n}$ ,均存在实矩阵 $V , \in, \mathbb{R}^{n \times k}$ ,使得$\widehat{W}=V V^{\top}$成立:
$$\hat{\mathbf{W}} =
\begin{bmatrix}
\hat{w}{1,1} & \hat{w} & \cdots & \hat{w}{1,n} \
\hat{w} & \hat{w}{2,2} & \cdots & \hat{w} \
\vdots & \vdots & \ddots & \vdots \
\hat{w}{n,1} & \hat{w} & \cdots & \hat{w}_{n,n}
\end{bmatrix}
= \mathbf{V}^{T} \mathbf{V} =
\begin{bmatrix}
{\mathbf{v}}_1^{T} \
{\mathbf{v}}2^{T} \
\vdots \
{\mathbf{v}}n^{T}
\end{bmatrix}
\begin{bmatrix}
{\mathbf{v}}1 &{\mathbf{v}}2 & \cdots & {\mathbf{v}}n
\end{bmatrix}$$
其中,模型待求解的参数为:
$$
w \in\mathbb{R}, \quad\mathbf{w} \in\mathbb{R}^{n}, \quad\mathbf{V} \in\mathbb{R}^{n \times k}
$$
其中:
$\bullet$ $w$ 表示全局偏差。
$\bullet$ $w$ 用于捕捉第 $i$ 个特征和目标之间的关系。
$\bullet$ $\hat{w}$ 用于捕捉 $( i, j )$ 二路交叉特征和目标之间的关系。
$\bullet$ ${\mathbf{v}}$ 代表特征 $i$ 的表示向量,它是 $\mathbf{V}$ 的第 $i$ 列。
(二)时间复杂度
根据FM模型计算表达式,可以得到模型的计算复杂度如下:
$$
{n+( n-1 ) }+\left{\frac{n ( n-1 )} {2} [ k+( k-1 )+2 ]+\frac{n ( n-1 )} {2}-1 \right}+2={ O} ( k n^{2} ),
$$
通过对交叉项的分解和计算,可以降低时间复杂度为${ O} ( k n )$,计算过程如下所示:
对于交叉特征,它们的交叉矩阵是一个对称矩阵,这里通过对一个 3x3 对称矩阵的详细分析,展示如何通过减少自交互项和利用对称性来优化计算。最终的结果是简化方程,并且将计算复杂度从二次方降低为线性级别,使模型能够更加高效地处理稀疏数据场景。
首先,使用一个 3x3 的对称矩阵,图中表达式为计算目标:
对目标表达式进行展开,展开后对内积进行计算,左式表示 3x3 对称矩阵的一半(对称矩阵的上三角部分)
右式表示需要从左式中减去的部分,右式为对称矩阵中自交互的部分,即对角线部分的计算。
最终推导,得到:
$$\hat{y} ( {\bf x} )=w_{0}+\sum_{i=1}^{n} w_{i} \times x_{i}+\frac{1} {2} \sum_{f=1}^{k} \left( \left( \sum_{i=1}^{n} v_{i, f} \times x_{i} \right){2}-\sum_{i=1} v_{i, f}^{2} \times x_{i}^{2} \right) $$
其计算复杂度为${ O} ( k n )$:$$k {[ n+( n-1 )+1 ]+[ 3 n+( n-1 ) ]+1 }+( k-1 )+1={\cal O} ( k n )$$
(三)回归和分类
FM 模型可以用于求解分类问题,也可以用于求解回归问题。在回归任务中,FM 的输出$\hat{y} ( {\bf x} )$可以直接作为连续型预测变量。目标是优化回归损失函数,
最小二乘误差(MSE):最小化预测值与实际值之间的均方误差。损失函数表达式如下所示:
$$
l(\hat{y}(x), y) = (\hat{y}(x) - y)^2
$$
对于二分类问题,使用的是Logit或Hinge损失函数:
$$l(\hat{y}(x), y) = -\ln \sigma(\hat{y}(x) y)$$
其中,σ 是Sigmoid(逻辑函数),