FM在特征组合中的应用
年龄(x1) | 城市(x2) | 性别(x3) | |
用户1 | 23 | 北京 | 男 |
用户2 | 31 | 上海 | 女 |
如上述特征X有三个维度,年龄是数值型特征,城市和性别是类别型特征,在进行特征组合的使用类别型特征要onehot处理 。
x1年龄 | x2北京 | x3上海 | x4深圳 | x5男 | x6女 | |
用户1 | 23 | 1 | 0 | 0 | 1 | 0 |
用户2 | 31 | 0 | 1 | 0 | 0 | 1 |
实际上"北京的男性用户","上海的女性用户 "这种组合特征可能是有用的,即,
,(
,,
都是one_hot特征)同时为1可能是一个很有用的特征,这种组合特征是
,和
的线性组合无法表示的 ,这样一来
就成了一个新特征,为了不错过任何一种可能有用的组合特征,我们穷尽所有的i,j的组合,把
,都加到特征里面去,即使其中某些
不是one-hot特征或者某些
不是有用的特征,都没关系,经过大量样本的训练,模型会把那些无用的特征的系数训练为0。
这样就有人提出了FM模型:
这个公式中,
,
,
都是一个数既不是向量也不是矩阵,它是在计算一个样本的预测输出,
表示某个样本在第i个特征处的值,由于二次项系数
,我们额外引入
/2个参数需要训练。任意两个参数都是独立的,即
与
时毫无关联的。然而在稀疏的场景下,二次项参数的训练是很困难的,其原因:每个参数
的训练需要大量
和
都为非零的样本(因为只有一条样本中
或者
等于0,那么对应的
,那么该二次项就不存在了,永远无法训练该参数),由于样本数据本来就稀疏,满足
不为了0的样本非常少,训练样本不足,很容易导致参数
不准。
有没有什么办法可以减少参数?再来观察二次项系数矩阵,它是对称的方阵
,这里是因为
与
,这两