近两年一直在接触推荐系统相关的工作,从最早自己去尝试协同过滤,到后面开始承接更多的推荐服务的需求,开始对推荐的项目和算法有了更多的理解和认识。神经网络模型在近些年的推荐领域发展异常的迅速,但在实际的应用场景中,考虑到模型的可解释性和推理效果的权衡,传统的模型有更强的可解释性。在推荐系统发展的历程中,以神经网络为分界点可以分为传统推荐模型和深度学习模型,之前在学习的过程中整理了传统推荐模型的脑图,希望能够对在学习路上的小伙伴起到一定的帮助,今后还会不定期的分享一些项目中总结出来的推荐系统的相关经验。
脑图和提纲的部分内容来源于王喆老师的《深度学习推荐系统》,建议有兴趣的小伙伴阅读。
协同过滤
基本原理
根据用户的行为历史生成用户-物品共现矩阵,利用相似性进行推荐
- 相似度计算
• 余弦相似度
• 两个向量的夹角,夹角越小越相似
• 皮尔逊相关系数(用户平均分)
• 通过用户平均分对各个独立评分进行修正,减小用户评分的偏置
• 皮尔逊相关系数(物品平均分)
• 通过物品平均分,减少物品评分的偏置
- 排序
• userCF
• 用户相似度和相似用户的评分加权平均
• w为用户u和s的相似度,R是用户s对物品p的评分
• itemCF
• 多个用户的正反馈物品相似度进行累加•
• H为目标用户的正反馈物品集合,w为物品p与物品h的相似度,R为用户u对h的已有评分
- userCF与itemCF的应用场景
• userCF有更强的社交特性,可发掘相似用户的最近的兴趣,适合新闻推荐,适用于发现热点及跟踪热点趋势
• itemCF适用兴趣变化稳定的场景,如电影推荐、电商推荐
特点
简单,直接,应用广泛
局限性
泛化能力差,处理稀疏矩阵能力差,头部效应明显
- user>>item,当user体量增大时,相似度矩阵存储开销增大
- 历史行为向量稀疏,对于低频用户,相似用户的准确率低,正反馈较难获取的场景不适用,如低频交易(酒店预订、大件商品购买)
- 头部效应明显
矩阵分解
基本原理
将协同过滤的共现矩阵分解为用户矩阵和物品矩阵,利用用户、物品隐向量的内积进行排序
- 思路
• 将用户和物品组成的协同过滤矩阵分解我用户矩阵和物品矩阵,m*n维的共现矩阵分解为m*k维的用户矩阵和k*n维的物品矩阵。
• k为隐向量的维度,k的大小据定了隐向量的表达能力。
• k越小,表达能力越差,泛化能力越高;k越大,表达能力越强,泛化能力越差。
- 矩阵分解的方法
• 特征值分解
• 只能用于方阵
• 奇异值分解
• 缺陷
• 共现矩阵要求是稠密的,互联网场景多是稀疏矩阵。需填充缺失值。
• 计算复杂度高,互联网场景开销巨大
• 梯度下降
• 确定目标函数
• 求取梯度下降的方向和幅度
• 根据梯度结果反向更新参数
特点
相较于系统过滤泛化能力加强,稀疏矩阵理解了增强
- 原理
• 隐向量的生成是对共现矩阵进行全局的拟合
• 解决了协同过滤中两个用户或物品没有相同的购买记录的情况。
- 优点
• 更容易处理稀疏矩阵
• 空间复杂度降低,只需存储用户和物品的隐向量。空间复杂度n*n变为(n+m)*k
• 更好的扩展和灵活性,隐向量类似于embedding,便于机型特征组合和拼接,可结合深度学习网络
局限性
只能使用历史行为信息,物品及用户的特征及上下文难以利用,历史行为缺乏是无法进行有效推荐。
逻辑回归
基本原理
将推荐问题转换为对CTR预估的二分类问题,将用户、物品、上下文等不同特征转换成特征向量。
- 推荐过程
• 将用户属性、物品属性、上下文信息(时间、地点、机构信息等)转换为特征向量
• 确定优化目标,使用已有的样本数据对逻辑回归模型进行训练,确定内部参数
• 确定出每维特征的权重
• 模型服务阶段,将特征向量输入逻辑回归模型,模型给出正反馈的概率
• 将特征与权重值相乘后输入sigmoid的函数,映射到0-1之间,得到“点击率”
• 将概率进行倒排,得到推荐列表
- 训练方法
• 梯度下降
融合多种类型的特征
- 优势
• 数学含义上的支撑
• CTR与模型的因变量都服从伯努利分布,模型符合点击这一事件的物理意义
• 可解释强
• 模型的数学形式是各种特征的加权和
• 以sigmoid函数使值映射到0-1区间,符合CTR的物理意义
• 可解释性强,便于与运营、产品解释特征对结果的影响,减低沟通成本
• 工程化需要
• 在线推断效率高
• 易于并行化,模型简单,训练开销小
局限性
不具备特征组合能力
- 表达能力不强
- 无法特征交叉,无法特征筛选
FM
基本原理
在逻辑回归的基础上增加了特征交叉,为每一维特征训练得到隐向量,通过隐向量的内积得到交叉特征权重
- 为什么要特征交叉?
• 辛普森悖论:高维特征进行合并损失了大量的有效信息,无法正确刻画数据模式
- 交叉方式
• 对所有特征生成隐向量,特征组合通过隐向量内积进行组合
特点
具备了二阶特征交叉的能力,表达能力增强
- 具备二阶特征组合,表达能力和泛化能力提升
- 线上推断的过程较神经网络简单,容易上线部署
局限性
由于组合爆炸的问题,不易扩展到三阶特征交叉
FFM
基本原理
在FM的基础上增加特征域,使每个特征在与不同域的特征交叉时使用不同的隐向量
- 在FM的基础上,将一个隐向量扩充到一组隐向量
- 特征交叉时,会选取对应特征域的隐向量进行运算
特点
相比FM增加了特征交叉的能力
局限性
模型训练的开销达到了O(n2)的量级,开销大
- 三阶以上的特征交叉因组合爆炸的原因,训练开销较大
GBDT+LR
基本原理
利用GBDT自动做特征组合,将原始特征转换为离散型的特征向量
- 模型结构
• GBDT模型
• 多棵回归树数组成的树林
• 每个树的训练目标为前面树林的结果和真实结果的残差
• 多层节点的结构对特征进行了组合
• 理论上模型效果可无限逼近目标值
特点
具备了高阶特征的组合能力
- GBDT+LR与GBDT
• 无明显的模型优劣势差异,主要依赖场景及数据
• facebook需要做模型线上训练,LR相对GBDT的线上训练代价较小
• online training的劣势
• 运维成本会比较高
• 实时样本拼接的准确性保障困难
• 实时评估的准确性保障困难
• 线上模型出现问题,自动发现自动回滚机制复杂
局限性
无法进行完全并行的训练,训练时间长
- 特征信息丢失
• 特征转换时丢失了部分特征信息
- 过拟合
• 减少每棵树的深度,增加特征正则化,
LS-PLM
基本原理
对样本进行分片,每个分片内部构建逻辑回归模型,并将各个分片的概率和逻辑回归的的份进行加权平均,得到预估值
- 混合逻辑回归(Mixed LR)
• 分而治之
• 先对样本进行分片,通常使用聚类的方式
• 再在样本分片中应用逻辑回归
• m=1时退化为逻辑回归
• 阿里经验值m=12
特点
模型结构类似于三层神经网络,表达能力较强
- 适用场景
• 工业级推荐
• 广告
• 大规模系数数据场景
- 优势
• 具备分片能力
• 减少特征工程工作量
• 一个全局模型对不同应用领域、业务场景进行统一建模
• 模型部署较为轻量,可舍弃权重为0的特征,做特征裁剪
局限性
相比较深度学习模型仍比较简单
- 近年来,深度学习模型的应用逐渐推广