FM 模型

FM 模型

在点击率预估任务中,原始数据集 大概是这种情况

点击 性别 地区 频道
1 天津 相声
0 甘肃 体育
1 云南 电视剧

将字符串输入到模型中肯定是不现实的,因此对类别型属性做 one-hot 处理

点击 性别=男 性别=女 地区=天津 地区=甘肃 地区=云南 频道=相声 频道=体育 频道=电视剧
1 1 0 1 0 0 1 0 0
1 0 1 0 1 0 0 1 0
1 0 1 0 0 1 1 0 1

这将会把数据集变得异常稀疏且庞大,
在某次任务中,在前一万条数据中,300维的原始数据就被扩充到将近10万维,
整理完300万条数据会发现扩充到了近120万维

线性回归/逻辑回归

线性回归
在这里插入图片描述
逻辑回归
在这里插入图片描述

这种传统而简单粗暴的方式简单实用,并且在很多生产环境中,确实就是这么做的,
但是这种模型只考虑了但一向特征自身对结果的影响性(权重*特征值求和),而 忽略了特征组合 对结果的影响

比如 < 地区=天津,频道=相声 > 或者 < 性别=女,频道=电视剧 > 等组合

二阶多项式核 SVM

既然 LR 们对特征的态度都是单打独斗性质的,那让特征两两组合手牵手不就考虑了特征组合因素了吗
在这里插入图片描述
在大部分数据中,两个特征值的乘积往往是0(两个特征都是1才会被学习到),
这就导致 Wij 这个权重项在大多数训练中都是无效的,没有被学习到,
因此这个模型 泛化能力差 (在生产环境下遇到xi * xj = 1 时就懵了)

因子分解机模型

弃用 SVM 的原因就是因为无法有效学习特征组合的权重,因为这个权重在训练的时候被太多的双0样本屏蔽掉了,因此就要选择方法去攻克这一问题
(下面公式推导在附录1)
在这里插入图片描述
根据数学性质运算将二次项再次化简
FM 模型_第1张图片
也就是说,现在我们只要训练向量 v 即可完成学习,并且只要 xi 不为0就可以有效学习(之前可是xi,xj都为1才是有效训练)

DeepFM,与深度学习的结合

神将网络模型可以你和任意曲线,随着训练平台的普及以及算力的不断增强,将神经网络模型与FM模型结合效率将会大大提升
FM 模型_第2张图片
在这里我们引入Field 这个概念

所谓 Field 即特征大类,比如:用户开的车型用户性别用户喜欢的明星用户性别

用户性别=男 作为 one hot 之后的 feature,即特征

要知道,Field之间做降维是无意义的,再或者说v应该只与本 Field 内的特征相关,v也叫做Field 的 embedding向量

在 embedding 之后 无论Field 被 onehot 到多少维,最终都会以一个 k维的向量进行表示
FM 模型_第3张图片
embedding 本质上是个全连接的网络

如网络模型图所示,在得到向量v 之后,就可以进行 FM 模型的学习,是 0次项,1次项,2次项的求和,是一个数值

embedding之后还会传入 隐藏层,进行神经网络(DNN)的训练,最终输出的神经元只有一个,即也是分数值

最后将 FM 模型结果,与DNN的数值求和,通过sigmoid函数激活,得到最后预测值

附录1

从公式
在这里插入图片描述
到公式
在这里插入图片描述
FM 模型_第4张图片

https://www.jianshu.com/p/e7b2d53ec42b
https://www.codercto.com/a/69752.html

你可能感兴趣的:(问题)