> For the complete documentation index, see [llms.txt](https://hujian.gitbook.io/deep-learning/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://hujian.gitbook.io/deep-learning/tong-ji-xue-xi/xian-xing-mo-xing/factorization-machine.md).

# Factorization Machine

> [Factorization Machines](https://www.csie.ntu.edu.tw/~b97053/paper/Rendle2010FM.pdf)

本文介绍了因子分解机，这是一种结合支持向量机(SVM)和因子分解模型优点的新模型类。像支持向量机一样，FMs是一种通用的预测器，适用于任何实值特征向量。与SVMs不同，FMs使用因子化参数来模拟变量之间的相互作用。因此，即使在支持向量机失败的稀疏性问题(如推荐系统)中，他们也能够估计交互。结果表明，FMs的模型方程可以在线性时间内计算出来，从而可以直接优化FMs。因此，与非线性支持向量机不同，对偶形式的变换是不必要的，模型参数可以直接估计，而不需要解中的任何支持向量。我们展示了与支持向量机的关系以及FMs在稀疏环境下参数估计的优势。

另一方面，有许多不同的因子分解模型，如矩阵因子分解、并行因子分析或特殊模型，如奇异值分解++、PITF或FPMC。这些模型的缺点是它们不适用于一般的预测任务，而只能用于特殊的输入数据。此外，它们的建模和优化算法是针对每个任务单独导出的。我们表明，FMs可以通过指定输入数据(即特征向量)来模拟这些模型。这使得即使用户没有因子分解模型方面的专家知识，也可以很容易地应用因子分解模型

总的来说，我们提出的FM的优点是：

1. 支持向量机失败时，支持向量机允许在非常稀疏的数据下进行参数估计。
2. 支持向量机具有线性复杂度，可以在原模型中优化，不依赖支持向量机等支持向量。我们表明，FMs可以扩展到像Netflixwith这样的大型数据集，有1亿个训练实例。
3. FMs是一个通用的预测器，可以处理任何实值特征向量。与此相反，其他最先进的因子分解模型只对非常有限的输入数据有效。我们将展示，仅仅通过定义输入数据的特征向量，FMs就可以模仿最先进的模型，如偏置MF、SVD++、PITF或FPMC

## 方法

### Factorization Machine Model

![](https://1351054059-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LajzPJtwBYkeBMhsYQD%2F-LcTJuVfzSr00CHhHaKn%2F-LcTnesP3tyCSeK9r7fk%2Fimage.png?alt=media\&token=afa908bd-c3fb-4551-bdf6-d94a90e52b18)

其中

![](https://1351054059-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LajzPJtwBYkeBMhsYQD%2F-LcTJuVfzSr00CHhHaKn%2F-LcTnhtxYaQF3eM-MhVR%2Fimage.png?alt=media\&token=53271979-709b-48d4-89f0-a4fc02441560)

![](https://1351054059-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LajzPJtwBYkeBMhsYQD%2F-LcTJuVfzSr00CHhHaKn%2F-LcTnjWQNfxOpXW1Tl7-%2Fimage.png?alt=media\&token=f2d443a9-faba-4cb1-8e3f-73fae5cc6c03)

#### 稀疏数据

在稀疏设置中，通常没有足够的数据来直接和独立地估计变量之间的相互作用。 即使在这些设置中，因子分解机器也可以估计交互，因为它们通过分解它们来打破交互参数的独立性。通常，这意味着一次交互的数据也有助于估计相关交互的参数。

#### 计算复杂度

![](https://1351054059-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LajzPJtwBYkeBMhsYQD%2F-LcTJuVfzSr00CHhHaKn%2F-LcTnuR1BMBpdN8ypOGP%2Fimage.png?alt=media\&token=1ea8267f-bc1c-4067-bcfd-e6de83568ad6)

### Factorization Machines as Predictors

![](https://1351054059-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LajzPJtwBYkeBMhsYQD%2F-LcTJuVfzSr00CHhHaKn%2F-LcToPq0lMExzndFX-F2%2Fimage.png?alt=media\&token=f7cd5264-0b5a-424e-a6f8-e9cc4b98547f)

### Learning Factorization Machines

![](https://1351054059-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LajzPJtwBYkeBMhsYQD%2F-LcTJuVfzSr00CHhHaKn%2F-LcToTfYkgRA4PmQGg6D%2Fimage.png?alt=media\&token=c636e939-19c7-4e04-82f2-7011ccf0ae9e)

### SVMs fail for very sparse problems

![](https://1351054059-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LajzPJtwBYkeBMhsYQD%2F-LcTJuVfzSr00CHhHaKn%2F-LcTpDLO7-6Vvv0BTt2j%2Fimage.png?alt=media\&token=e69290d7-130d-4b6d-a81b-7018eee71aae)

考虑使用高阶核的SVM

![](https://1351054059-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LajzPJtwBYkeBMhsYQD%2F-LcTJuVfzSr00CHhHaKn%2F-LcTqVFpDQxMzoy0bWV6%2Fimage.png?alt=media\&token=a2a93c99-77e4-4e1a-9441-ea9f3cf357e9)

由于训练数据的稀疏性，很多高阶的权重得不到有效训练，所以对于稀疏数据效果一般。而FM使用因子分解的形式，有效避免了参数得不到训练的情况.
