第6节:FM与DeepFM算法

什么是CTR

Click-Through-Rate(点击通过率)用户点击某个广告的概。我是渣渣辉。。。
说人话就是:预测一个广告会不会被点击,可以当做一个二分类问题
好做吗?不太容易,主要是特征层面的问题
什么算法合适呢?咱们主要唠FM系列
最早用线性模型来做,看起来十分简单,却不太好用!
线性模型单独考虑特征和权重之前的关系,没有组合信息
(例如哈尔滨烤冷面,俩特征分别是:哈尔滨,烤冷面,组合起来才是那个味)
特征工程:不就是搞特征嘛,我就使劲想哪些能组合,整合上去
一般数据挖掘问题也确实都是偏人工的,但是推荐系统中,特征指标太多了,
人工做特征工程这个事也太麻烦了,而且人是善变的!
利用树模型来做,树模型本身就有特征选择的功能,再结合集成算法
二项式特征我全要,穷举所有可能组合都往上整
(行是行,但是数据层面会遇到一些问题,一会举例)
FM算法(Factorization Machine),解决了特征层面的问题
可以先来想一想,推荐系统中涉及的数据会有什么样的特点呢?

特征带来的问题

用户的特征,商品的特征,行为的特征,能有的信息实在太多了
不仅特征维度高,主要还涉及很多离散型特征,通常都用one-hot来处理
编码后的结果:
你以为这就完了?咱们刚才不是说要考虑特征之间的组合嘛。。。
(如果仅考虑二阶情况,这特征量都有点吓人了)

如何解决高维且非常稀疏的特征?

还记得特征组合的意义吧:(宅男,游戏)(中年人,保健品)
二阶多项式:
前面还是普通的线性模型,只不过多了二阶的部分
目的肯定是要求解权重参数,你也肯定知道要用梯度下降,有没有啥问题?
参数量有多少呢?线性的还好,但是二阶的出现了平方项
二阶多项式:
一般难道的特征本来都很稀疏了,二阶得啥样?那不更稀疏了嘛!
要训练权重参数,二阶的地方必须要两个特征都非零才可以!

先来看个定理

N阶实对阵矩阵可以分解为: (PCA课里曾说过的对角化)
想一想咱们的二阶权重参数矩阵: (同样是对称阵,公式为一半)
如果对W进行分解: (其中的向量V到底表示什么呢?)先来看个定理

Xi与Xj的二项系数其实就它俩各自的隐向量的内积,即:
隐向量表示什么呢?向量的维度如何定义呢?
可以把隐向量当做是潜意识特征,比如宅男打游戏的向量表示,维度通常较低

求解过程

重点还是在二阶:
借鉴:
从而:
其实也就是对称阵W的上半部分 求解过程
原式:
内积展开: k表示隐向量的维度
合并同类项:
合并成平方项:

总结一下

原公式二阶项复杂度o(n^2),现在只需要kn(n个隐向量,维度为k)
V如何表示出来的呢?好像还得预训练,挺麻烦个事,一会咱们直接DeepFM
特征组合较多的时候,自然会想到一个好兄弟:神经网络!
接下来咱们瞅瞅DeepFM是干啥的

FM融合到神经网络中

迪哥真理:不管啥算法,但凡用深度学习做,都更简单了
整体架构:FM+DNN
embedding是FM重点
还是要进行特征组合

输入层

输入的数据长什么样:
Field表示一个特征,因为one-hot把特征展开了,所以一个filed有多个值
因为一会要做embedding,传入的并不是实际数据,而是索引
例如(男生/女生;哈尔滨/沈阳/长春;打篮球/不打篮球)
(男生,哈尔滨,打篮球:特征索引为 0,2,5;特征值为1,表示取当前特征)

Embedding层

其实是设计多组权重
其中包括了一阶和二阶
权重参数就是embedding
源码见!

DNN层

就是传统神经网络
全连接就搞定了
最终输入sigmoid结果
输出:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值