AI上推荐 之 FM和FFM
1. 前言
随着信息技术和互联网的发展, 我们已经步入了一个信息过载的时代,这个时代,无论是信息消费者还是信息生产者都遇到了很大的挑战:
- 信息消费者:如何从大量的信息中找到自己感兴趣的信息?
- 信息生产者:如何让自己生产的信息脱颖而出, 受到广大用户的关注?
为了解决这个矛盾, 推荐系统应时而生, 并飞速前进,在用户和信息之间架起了一道桥梁,一方面帮助用户发现对自己有价值的信息, 一方面让信息能够展现在对它感兴趣的用户前面。 推荐系统近几年有了深度学习的助推发展之势迅猛, 从前深度学习的传统推荐模型(协同过滤,矩阵分解,LR, FM, FFM, GBDT)到深度学习的浪潮之巅(DNN, Deep Crossing, DIN, DIEN, Wide&Deep, Deep&Cross, DeepFM, AFM, NFM, PNN, FNN, DRN), 现在正无时无刻不影响着大众的生活。
推荐系统通过分析用户的历史行为给用户的兴趣建模, 从而主动给用户推荐给能够满足他们兴趣和需求的信息, 能够真正的“懂你”。 想上网购物的时候, 推荐系统在帮我们挑选商品, 想看资讯的时候, 推荐系统为我们准备了感兴趣的新闻, 想学习充电的时候, 推荐系统为我们提供最合适的课程, 想消遣放松的时候, 推荐系统为我们奉上欲罢不能的短视频…, 所以当我们淹没在信息的海洋时, 推荐系统正在拨开一层层波浪, 为我们追寻多姿多彩的生活!
这段时间刚好开始学习推荐系统, 通过王喆老师的《深度学习推荐系统》已经梳理好了知识体系, 了解了当前推荐系统领域各种主流的模型架构和技术。 所以接下来的时间就开始对这棵大树开枝散叶,对每一块知识点进行学习总结。 所以接下来一块目睹推荐系统的风采吧!
这次整理重点放在推荐系统的模型方面, 先从传统推荐模型开始, 然后到深度学习模型。 传统模型的演化关系拿书上的一张图片, 便于梳理传统推荐模型的进化关系脉络, 对知识有个宏观的把握:
今天是推荐系统传统模型的第四篇,也是传统推荐模型的最后一篇, 迎来的是因子分解机(Factorization Machine, FM)和域感知因子分解机(Field-aware Factorization Machine, FFM), 这两个属于因子分解机模型族, 在传统逻辑回归的基础上, 加入了二阶部分, 使得模型具备了特征组合的能力, 在上一篇文章里面谈到了逻辑回归, 这是一个简单、直观、应用的模型, 但是局限性就是表达能力不强, 无法进行特征交叉和特征筛选等, 因此为了解决这个问题, 推荐模型朝着复杂化发展, GBDT+LR的组合模型就是复杂化之一, 通过GBDT的自动筛选特征加上LR天然的处理稀疏特征的能力, 两者一结合初步实现了推荐系统特征工程化的开端。 其实, 对于改造逻辑回归模型, 使其具备交叉能力的探索还有一条线路, 就是今天这篇文章要介绍的POLY2->FM->FFM, 这条线路在探索特征之间的两两交叉, 从开始的二阶多项式, 到FM, 再到FFM, 不断演化和提升。
所以今天这篇文章的脉络会很清晰, 首先会先从POLY2开始,简单介绍一下POLY2模型的原理以及存在的不足, 从而引出后面的FM模型, 这个模型是2010年提出来的, 在POLY2的基础上把二阶交叉特征前面的权重换成了各自特征隐向量的内积形式, 这个模型还是比较重要的, 虽然现在不怎么用了, 但是他里面的隐向量思想的身影在深度学习的embedding里面得到了继承和发展, 所以接下来就会介绍FM模型的原理和一些公式的推导, 这个模型依然有点不足, 所以最后会介绍FFM模型的原理, 这个模型基于FM模型对权重又进行了改进, 引入了域的概念, 使得交叉特征的信息表达更近一步, 对了, 这个模型是2016年提出来的, 比GBDT+LR模型还晚了一些。这个模型感觉思路也是非常的有意思, 所以也是挺重要的, 为了更好的理解FM和FFM, 每一块的后面也会加上代码实践部分, 亲自玩一下这些模型 ????
大纲如下:
- FM? 我们先从POLY2开始
- FM模型的原理及代码实践
- FFM模型的原理及代码实践
Ok, let’s go!
2. FM? 我们先从POLY2开始
3. FM模型的原理及代码实践
4. FFM模型的原理及代码实践
5. 总结
参考:
- 王喆 - 《深度学习推荐系统》
- 推荐系统遇上深度学习(一)–FM模型理论和实践
- 推荐系统遇上深度学习(二)–FFM模型理论和实践
- FM算法解析
- FM算法原理分析与实践
- 深入理解FFM原理与实践
- FFM原理及公式推导
- FM在特征组合中的应用
- FFM算法解析及Python实现
论文:
- FM论文原文
- FFM论文原文