针对类别变量进行oner-hot编码后的高维稀疏矩阵M,可以表示如下:
可以看出,经过One-Hot编码之后,大部分样本数据特征是比较稀疏的, One-Hot编码的另一个特点就是导致特征空间大。例如,电影品类有550维特征,一个categorical特征转换为550维数值特征,特征空间剧增。
同时通过观察大量的样本数据可以发现,某些特征经过关联之后,与label之间的相关性就会提高。例如,“USA”与“Thanksgiving”、“China”与“Chinese New Year”这样的关联特征,对用户的点击有着正向的影响。换句话说,来自“China”的用户很可能会在“Chinese New Year”有大量的浏览、购买行为,而在“Thanksgiving”却不会有特别的消费行为。这种关联特征与label的正向相关性在实际问题中是普遍存在的,如“化妆品”类商品与“女”性,“球类运动配件”的商品与“男”性,“电影票”的商品与“电影”品类偏好等。因此,引入两个特征的组合是非常有意义的。
多项式模型是包含特征组合的最直观的模型。在多项式模型中,特征 和 的组合采用 表示,即和都非零时,组合特征 才有意义。从对比的角度,讨论二阶多项式模型。模型的表达式如下:
其中, 代表样本的特征数量,是第个特征的值, 是模型参数。从公式可以看出,组合特征的参数一共有 个,任意两个参数都是独立的。然而,在数据稀疏性普遍存在的实际应用场景中,二次项参数的训练是很困难的。其原因是,每个参数 的训练需要大量 和 都非零的样本;由于样本数据本来就比较稀疏,满足“和 都非零”的样本将会非常少。训练样本的不足,很容易导致参数 不准确,最终将严重影响模型的性能。
1. 对于普通的线性模型,引入二次交叉项后:
其中,,,,为隐向量的维度,则两个向量的内积满足:
该模型需要学习的参数包括:
:模型整体的偏置;
:一阶线性权重;
:特征和特征交互权重
针对等式(1)右端最后一项化简得:
所以公式(1)可以化简为:
针对上式,利用SGD训练模型其参数的梯度下降表达式为:
其中,是隐向量 的第 个元素。由于 只与有关,而与 j 无关,在每次迭代过程中,只需计算一次所有 的 ,就能够方便地得到所有 的梯度。显然,计算所有 的 的复杂度是 O(kn);已知时,计算每个参数梯度的复杂度是 O(1);得到梯度后,更新每个参数的复杂度是 O(1);模型参数一共有 nk+n+1 个。因此,FM参数训练的复杂度也是 O(kn)。综上可知,FM可以在线性时间训练和预测,是一种非常高效的模型。
2. FM & SVM讨论
线性核SVM
可以看出等价于时的FM。
多项式核 SVM
非线性映射函数:
SVM的表达式为:
可以看出,SVM的二元特征交叉参数是独立的,而FM的二元特征交叉参数是两个维的向量、,交叉参数就不是独立的,而是相互影响的;
SUMMARY
对于大型稀疏矩阵,SVM无法估计高阶交互特征的参数,因为对于特征对的参数必须有足够的非零样本即只要存在某一个特征则wij参数估计失败,因此在大型稀疏样本情况下,SVM表现很差,而FM对大型稀疏数据非常有用。
FM可以在原始形式下进行优化学习,而基于kernel的非线性SVM通常需要在对偶形式下进行;
FM的模型预测是与训练样本独立,而SVM则与部分训练样本有关,即支持向量;
FM参数初始化
可以看出:常数项和一次项初始化为零,二次项按照均值为0,方差为0.01的正态分布初始化。
FM数据格式
For classification(binary/multiclass), <label> is an integer indicating the class label.
For regression, <label> is the target value which can be any real number.
Labels in the test file are only used to calculate accuracy or errors. If they are unknown, you can just fill the first column with any number.