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的样本非常少,训练样本不足,很容易导致参数不准。
有没有什么办法可以减少参数?再来观察二次项系数矩阵,它是对称的方阵,这里是因为与 ,这两