推荐系统的发展:协同过滤(Collaboration Filtering, CF)、逻辑回归(LR)、因子分解机(Factorization Machine)、梯度提升树(GBDT)。
协同过滤
协同大家的反馈、评价和意见一起对海量的信息进行过滤,从中筛选出目标用户可能感兴趣的信息的推荐过程。
用户相似度计算:这是算法中的关键一步。可以使用(1)余弦相似度(2)皮尔逊相关系数等来计算两个向量之间的相似度。
ItemCF:基于物品相似度进行推荐的协同过滤算法。具体步骤:(1)基于历史数据,构建以用户为行坐标、物品位列坐标的共现矩阵。(2)计算共现矩阵的相似性。(3)获得用户历史行为数据中心正反馈物品列表。(4)找出top k个物品,组成集合。(5)生成最终的推荐系统。
协同过滤的泛化性能不强。推荐系统的头部效应明显,处理稀疏向量的能力差。矩阵分解技术被提出。
矩阵分解算法——协同过滤的进化
用户和物品隐向量是通过分解协同过滤生成的共现矩阵得到的。将维的矩阵分解为 和 维的矩阵,分别表示用户和商品。方法有:特征值分解、奇异值分解(SVD)、梯度下降。
矩阵分解的优点:(1)泛化能力强。解决数据稀疏问题。(2)空间复杂度降低。(3)更好的扩展性和灵活性。
逻辑回归——融合多种特征的推荐模型
逻辑回归模型将推荐问题转换成了一个点击率(CTR)问题。
过程:
- 用户属性和物品属性等特征转换成数值型特征向量。
- 确定逻辑回归模型的优化目标(点击率),利用已有样本对逻辑回归模型进行训练,确定内部参数。
- 利用模型得到用户点击概率。
- 利用点击率对物品进行排序,得到推荐列表。
数学形式:
输入。对每一个特征向量赋予权重,将各个特征进行加权求和。
sigmoid函数形式:
sigmoid
函数值在0-1
之间。
逻辑回归的优势:数学概念的支撑、可解释强、工程化需求。
逻辑回归的局限性:表达能力不强,无法进行特征交叉,特征筛选等一系列高级的操作。
POLY2模型——特征交叉的开始
数学形式:
对所有特征进行两两交叉,对所有特征组合赋予权重。本质上是特征的暴力组合,在一定程度上解决了特征组合的问题。
缺陷:(1)采用one-hot
编码的方法处理类别型数据,使得特征向量极度稀疏,无法收敛。
(2)增加训练复杂度。
one-hot
编码试将类别特征转换成向量的一种编码方式。
例如:
[Weekday=Tuesday, Gender=Male, City=London]
转化为:[0,1,0,0,0,0,0],[0,1],[0,0,1,0,...,0,0]
one-hot
编码会造成大量的特征向量的稀疏,一亿维特征向量只有一个非0
,所以会导致模型特征向量的稀疏。
FM模型——隐向量特征交叉
上式使用两个向量的内积取代单一权重系数。FM
为每个特征向量学习了一个隐权重向量。在特征交叉,使用两个特征隐向量的内积作为交叉特性的权重。降低时间复杂度,能很好的解决数据稀疏性的问题,泛化能力提高。
FFM——引入特征域的概念
引入了特征域的概念,使得模型的表达能力更强。每个特征对应的不是唯一一个隐向量,而是一组隐向量。
GBDT+LR——特征工程模块化的开端
先使用GBDT构建特征工程,自动进行特征筛选和组合,进而生成新的离散特征向量。再把这些特征向量当做是LR模型的输入。这两步是独立训练的。
GBDT模型
GBDT
基本结构是决策树组成的树林,学习方式是梯度提升,是集成模型,预测方式是把所有子树的结果加起来。
GBDT
通过逐一生成决策子树的方式生成整个森林,生成新子树的过程是利用样本标签$$值与当前树林预测值之间的残差,构建洗的子树。
假设构建第4个子树时:
为目标的:
GBDT进行特征转换的过程
一个训练样本在输入GBDT
的某一个子树后,会根据每个结点的规则最终落到某一个叶子结点。把该叶子结点置1
,其余置0
。所有的叶子结点组成的向量即为该棵树的特征向量,把GBDT
的所有子树的特征向量连接起来,就形成了后序LR
模型输入的离散型特征向量。
决策树的深度决定了特征交叉的阶数。但GBDT
容易产生过拟合。GBDT
的特征转换实际上丢失了大量特征的数值信息。
总结
协同过滤
根据用户行为历史生成用户-物品共现矩阵,利用用户相似性和物品相似性进行推荐。
特点:泛化性能差,处理系数矩阵能力差,推荐结果的头部效应明显。
矩阵分解
将协同过滤算法中的共现矩阵分解为用户矩阵和物品矩阵,利用用户隐向量和物品隐向量的内积进行排序推荐。
特点:泛化性能稍有增强,对稀疏矩阵的处理能力稍有增强。只能利用用户的历史数据,难以利用其他特征。
逻辑回归
将推荐问题转化为CTR(用户点击率)预估计的二分类问题,将用户、物品
上下文等不同的特征转化为特征向量,输入到逻辑归回模型后得到CTR,最后按照CTR对商品进行排序。
特点:模型不具备特征交叉能力,表达能力较差。
FM(因子分解机)
在模型中加入二阶特征交叉部分,为每一维特征训练得到相应特征隐向量,通过隐向量之间的内积运算得到交叉特征权重。
特点:具备二阶特征交叉能力,模型的表达能力增强。训练开销较大。
GBDT+LR
利用GBDT进行自动特征组合。将原始特征向量转化成离散特征向量,输入到逻辑回归模型,进行最终的CTR估计。
特点:模型具备了更高阶特征组合的能力。无法进行并行训练,更新所需时间较长。