· 流程解析
关于DeepFM理论的说明,很多博客或论文已有说明,这里就不再赘述。下面主要是说一下模型如何使用以及在整个过程中,算法对数据做了些什么事。
首先还是这张图:

一眼看过去,超级复杂是不是?确实,但是别慌,我们一小块一小块地看。
1、Sparse Feature框框
Sparse Feature是指离散型变量。比如现在我有数据:xx公司每个员工的姓名、年龄、岗位、收入的表格,那么年龄和岗位就属于离散型变量,而收入则称为连续型变量。这从字面意思也能够理解。
好,现在Sparse Feature框里表示的是将每个特征经过one-hot编码后拼接在一起的稀疏长向量,黄色的点表示某对象在该特征的取值中属于该位置的值。
2、Dense Embedding框框
把这些离散型变量经过热编码后又想干嘛?这个长长的向量只有0,1两种取值,并且非常稀疏,如果直接采用权重去加和,将会丢失很多权重,这样会造成最终结果不准确。所以,得想个办法把这个稀疏向量变得稠密一些。在机器学习中关于对离散值的数据预处理有很多种方式,常见的有数据分箱、嵌入向量等,这个Dense Embedding就是指的将离散型变量嵌入为连续型变量。什么意思呢?
还是上面说的那个表格,比如年龄共有50个去重数值,岗位有100个去重数值,现在是两个特征。那么经过Embedding之后,年龄就变为了50 x m的矩阵,岗位就变成了100 x m的矩阵,这个m是指嵌入向量的维数,一般取4、8、16。下面的图示可能会比较直观一些:

最终表格就变成了这样:

也就是说,最终入模的数据表长这样:

比如“漩涡鸣人”的特征向量可能就是这样的:
(x1,x2,...,xm,x1,x2,...,xm,...,···,x1,x2,...,xn)
x1,x2,...,xm 表示他的年龄的Embedding向量,x1,x2,...,xm 表示他的岗位的Embedding向量,... 表示他的其他属性的Embedding向量,x1,x2,...,xn 表示他的收入等其他连续型特征的归一化或标准化后的值。
一句话,就是拼接起来。
实际上,在DeepFM中,对分析对象也作了Embedding的,这里为了讲明Embedding的原因和原理,故此展示。
3、FM Layer框框
先给出FM的公式:

看黑色线(Normal Connection)连接的两端,一边是Sparse Fea


1964

被折叠的 条评论
为什么被折叠?



