1 传统的推荐系统模型
传统模型演化关系
2 前言
在上一篇文章里面谈到了逻辑回归, 这是一个简单、直观、应用的模型, 但是局限性就是表达能力不强, 无法进行特征交叉和特征筛选等,
因此为了解决这个问题, 推荐模型朝着复杂化发展, GBDT+LR的组合模型就是复杂化之一, 通过GBDT的自动筛选特征加上LR天然的处理稀疏特征的能力, 两者一结合初步实现了推荐系统特征工程化的开端。
其实, 对于改造逻辑回归模型, 使其具备交叉能力的探索还有一条线路,
就是今天这篇文章要介绍的POLY2->FM->FFM, 这条线路在探索特征之间的两两交叉, 从开始的二阶多项式, 到FM, 再到FFM, 不断演化和提升。
3 FM和FFM(九九归一)
3.1 FM? 我们先从POLY2开始
原理
- 实际上就是对所有的单特征,两两相乘(暴力组合)
存在的缺点
- (1) 推荐系统中的数据往往是非常稀疏的(类别型数据经过独热), 这样会导致特征向量非常的稀疏, 这时候如果再交叉的时候, 往往 x i y j x_iy_j xiyj同时不为0的情况很少, 这会导致交叉特征的权重缺乏有效的数据进行训练而无法收敛。
- (2) 任意两个参数相互独立, 这时候如果数据非常稀疏, 再要训练这么多参数, 无疑是非常困难的, 最终模型也不会很好。
3.2 FM模型的原理
原理:
首先POLY2模型在特征交叉的时候采用的单独的权重, 这使得在稀疏的场景下无法适用, 那么这种问题应该怎么解决呢?
矩阵分解(类似于传统模型2的矩阵分解模型)
然后FM的核心,就是将交叉特征前面的权值矩阵,利用矩阵分解的形式进行分解(两个矩阵相乘)。
k(k<<n)为隐向量的长度,包含 k个描述特征的因子。
最后利用梯度下降求解参数就好了啊!
(原先的每一个权重都是独立的,引入矩阵分解后,相当除本身外,还考虑了其它特征)
应用:
- 1 直接预估
最直接的想法就是直接把FM得到的结果放进sigmoid中输出一个概率值,由此做CTR预估 - 2 做召回
1)离线训练好FM模型(学习目标可以是CTR)
2)将训练好的FM模型Embedding取出
3)将每个uid对应的Embedding做avg pooling(平均)形成该用户最终的Embedding,item也做同样的操作
4)将所有的Embedding向量放入Faiss等
5)线上uid发出请求,取出对应的user embedding,进行检索召回
3 FFM模型的原理
原理:
相比于FM模型, FFM模型引入了特征域感知(filed-aware) 这个概念, 使得模型的表达能力更强(也就是对每个域/类别下的特征,学习对应的交叉特征)
应用:
-
工业上, 一般FFM确实很少用,召回和排序部分都不是首选FFM模型, 但是FM模型还是非常重要的, 基本上业界首选。下面简单总结下:
-
做召回的话一般先考虑策略,tag,热度的召回,然后再是模型,召回模型常用的双塔,FM, 协同(MF) 这个还是很有用的。
-
做文章推荐的时候, 排序模型首选LR, 然后FM, DeepFM,然后多目标。一般GBDT+LR也不是太考虑,因为它的效果和FM类似,不如直接FM省事, 前者更新起来太复杂。 如果是电商广告推荐, 最后还
4 总结
参考:https://blog.csdn.net/wuzhongqiang/article/details/108719417