一、FM算法背景
在计算广告和推荐系统中,CTR预估是非常重要的一个环节,判断一个商品的是否进行推荐需要根据CTR预估的点击率来进行。
在进行CTR预估时,除了单特征外,往往要对特征进行组合,对于特征组合来说,业界现在通用的做法主要有两大类:FM系列与Tree系列。实际工程中通常是高维稀疏矩,直接特征交叉会导致计算量过大,特征权值更新缓慢。
而FM的优势就是对这两方面问题的处理:首先是特征组合,通过对两两特征组合,引入交叉项特征,提高模型特征能力;其次是维度灾难,通过引入对参数矩阵进行矩阵分解,对参数的计算节省资源。
FM是在逻辑回归上面衍生出来的,如果对逻辑回归最朴素的特征组合就是二阶笛卡尔乘积,这样暴力组合的问题:
- 两两组合导致特征维度灾难;
- 组合后的特征不见得都有效,事实上大部分可能无效;
- 组合后的特征样本非常稀疏,即组合容易,但是并不能在样本中找到对应的组合出现,也就没办法在训练时更更新参数。
二、FM算法原理
包含了特征两两组合的逻辑回归线性部分就是: ω 0 + ∑ i = 1 n ω i x i + ∑ i = 1 n ∑ j = i + 1 n w i j x i x j \omega_0+\sum_{i=1}^n\omega_ix_i+\sum_{i=1}^{n}\sum_{j=i+1}^{n}w_{ij}x_ix_j ω0+∑i=1nωixi+∑i=1n∑j=i+1nwijxixj。
与线性模型相比,FM的模型就多了后面特征组合的部分。和原始的逻辑回归相比,就多出来了特征两两组合部分,也需要去学习对应的参数权重。
因为逻辑回归在做特征组合时样本稀疏,从而无法学到很多特征组合的权重,所以FM的思想就是对特征两两组合的逻辑回归线性部分公式中的 w i j w_{ij} wij做解耦,让每一个特征学习一个隐因子向量出来。如果学习 w i