[RS] 传统推荐模型: 协同过滤CF&MF 内容过滤LR&FM&FFM

目录

0.序言

1.协同过滤(隐式特征) 

1.1 邻域 Neighborhood_CF(usercf, itemcf)

usercf

​itemcf 

相似度计算方法

1.2 矩阵分解 MF 

🍋  1.21  Motivation for MF 

🍋 1.22  矩阵分解的方法

🍋 1.23  概率矩阵分解 

 🍋 1.24 消除用户和物品打分的偏差

2.内容过滤 (显式特征)

2.1  逻辑回归LR

2.2 因子分解机FM

2.3 特征域因子分解机FFM

2.4 组合模型

GBDT+LR (Facebook)

LS-PLM (阿里)


0.序言

传统推荐模型可以根据 数据源的不同,分为基于内容的推荐,和基于协同过滤的推荐。

🍇 协同过滤

忽略对item的建模,只考虑用户与物品的交互信息,即 共现矩阵 进行建模。协同过滤根据用户相似度、物品相似度可以划分为 usercf 和 itemcf,分别是行列向量计算相似度。

原理是利用用户访问行为的相似性 或 物品相似性,来互相推荐用户可能感兴趣的物品。

🍇 内容过滤

内容过滤:基本思想是给用户推荐和他们之前喜欢的物品在 内容上 相似的其他物品。核心任务就是 计算物品的内容相似度。

只考虑了item的本身性质,将对象按标签形成集合,如果你消费集合中的一个则向你推荐集合中的其他对象。

侧重于对user 或者 item的 属性信息 建模,比如用户的性别、年龄,商品的颜色、大小等属性。对于同一用户而言,需要利用用户的性别、年龄、爱好等组成特征向量来表示;

1.协同过滤(隐式特征) 

1.1 邻域 Neighborhood_CF(usercf, itemcf)

usercf

itemcf 

相似度计算方法

1.2 矩阵分解 MF 

🍋  1.21  Motivation for MF 

流行度会导致长尾分布,产生头部效应

也就是热门商品容易和大量商品产生相似性,而尾部商品往往特征向量稀疏,不容易被推荐。

为了缓解流行度产生的头部效应,更好的处理稀疏矩阵,提出了矩阵分解算法。

矩阵分解是在协同过滤算法的共现矩阵的基础上,加入了隐向量的概念,加强了模型处理稀疏矩阵的能力 [2006年]。

矩阵分解将共现矩阵R分解为用户向量U和物品向量V。分解形式为R=U^T✖️V。其中R是N*M维度的,U的维度是D*N的,V的维度是D*M的。

🍋 1.22  矩阵分解的方法

🍓 特征值分解 ED(Eigen Decomposition)

其中,特征值分解,只能作用于方阵。不适用于共现矩阵。

🍓 奇异值分解 SVD(Singular Value Decomposition)

🍓 梯度下降 (Gradient Descent)

🍋 1.23  概率矩阵分解 (引入参数先验,求解MF)

为了解决矩阵分解由于噪声存在,有时不存在完美的低秩分解,提出了概率矩阵分解PMF。 

先验假设:对噪声||R-R^||、用户矩阵U、物品矩阵V,进行 高斯先验假设/Laplace先验假设。 

目标函数:max   P(U、V|R) ∝ P(R|U、V)*P(U)*P(V)          

                  等价于共现矩阵R条件下U、V的概率,等价于 U、V条件下R的概率 * P(U) * P(V) 

优化:对R进行max_min归一化,对U^T*V进行 sigmoid激活,把两者都投射到(0,1)区间。这样就解决了评分区间有限的问题。

求解:用梯度下降求数值解。把矩阵每一个值都当成参数,用梯度下降的方法去求解。

 🍋 1.24 受限概率矩阵分解 Constrained_PMF (加法分解)

为了解决共现矩阵R特征维度不均衡,导致预测失败。提出了Constrained_PMF。

对用户矩阵U做了加法分解

每个用户Ui分解为 用户i的评分加权均值(sum(IW)/sum(I)) + 用户i的先验偏置(Yi)。

❤️优点:

每个用户Ui,由打分均值+偏置所构成,不易出现特征向量稀疏

每个用户Ui的先验偏置Yi不同,所以是 混合高斯先验,更易产生逼近真实值的结果。

注意:目标函数中的 I_ij, 是指有Rij 有无打分,也就是有无训练数据。只对训练集合进行损失计算。 

 🍋 1.25 消除用户和物品打分的偏差 (消除偏置的角度,优化MF)

消除行偏置bu(用户user)、列偏置bi(物品item)、均值偏置\mu

2.内容过滤 (显式特征)

2.1  逻辑回归LR

相比协同过滤模型,仅利用 用户与物品的行为信息 进行推荐,LR能综合利用 用户、物品、上下文等多种不同特征(用户/物品本身的属性),生成较为全面的推荐结果。

2.2 因子分解机FM

LR  不具备特征交叉、生成组合特征的能力 ,表达能力很弱,容易产生 辛普森悖论 那样错误的结论。(在每个分组中占优势的一方,在总评反而是失势的一方)。

POLY2——特征交叉的开始

o(n^2) 二阶特征交叉

FM

o(n*k) 二阶特征交叉

2.3 特征域因子分解机FFM

FFM通过引入特征域的方式,提高特征交叉能力。但只能做二阶特征交叉,如果维度达到3阶以上,会出现组合爆炸(计算量过高)。

o(n*k*f) ≈ o(n^2*k)

n:n个特征 k:隐向量维度 f:特征域o(n)

2.4 组合模型

GBDT+LR (与GBDT 做分类不同)

FFM引入特征域提高了特征交叉的能力,但受组合爆炸限制只能做二阶。

2014年Facebook提出基于GBDT+LR组合模型的解决方案。能进行高维特征组合与筛选。

(Facebook: GBDT自动进行特征筛选和组合,生成新的离散特征向量,再把特征向量当作LR模型的输入的预估ctr的模型)

GBDT+LR 分为两部分(独立训练),先是将训练样本经过GBDT(经过GBDT每一颗树时,样本所落在的叶结点的值设为1,其他叶结点设为0,这样得到该树的一个特征向量,所有树的特征向量拼接到一起),生成新的离散特征向量。

再是将新特征向量输入给LR(线性2分类器)得到分类结果label。

🍋 GBDT分类 & GBDT回归 

易混淆,与GBDT+LR不同,GBDT自身也可以做分类。 

🍓GBDT分类

分裂规则(损失增益函数): 熵之半/基尼指数/分类误差率

整体的损失函数: 指数损失 / 负对数似然函数损失。

a) 如果是指数损失函数,则损失函数表达式为 L(y,f(x))=exp(−yf(x))

b) 如果是负对数似然函数损失,分为二元分类和多元分类两种,也就是2/多元交叉熵损失函数

GBDT多分类:每次迭代训练K个树(k分类)  +  softmax层得到分类结果。

GBDT二分类:每次迭代训练1个树(2分类)  +  sigmoid层得到分类结果。

后剪枝时,比如代价复杂度剪枝(CCP),对于我们选择的损失函数R,计算每个结点的 误差增加率 α= R(t)-R(Tt) /|Lt|-1。α小的结点剪枝。其中R(t)是 , R(Tt)是 , Lt是剪枝结点的叶子结点的个数。

🍓GBDT回归

分裂规则(损失增益函数):MSE

整体的损失函数:MSE

GBDT回归:   每次迭代训练一棵树,用负梯度(2阶时:-G/H=-G/1)模拟残差,以残差为拟合目标生成决策树。

后剪枝时,比如代价复杂度剪枝(CCP),对于我们选择的损失函数R,计算每个结点的 误差增加率 α= R(t)-R(Tt) /|Lt|-1。α小的结点剪枝。其中R(t)是 , R(Tt)是 , Lt是剪枝结点的叶子结点的个数。

🍓XGBoost分类
损失增益函数为Gain, 选择最优的划分/终止划分。在这里插入图片描述整棵树的损失函数为
在这里插入图片描述

LS-PLM (阿里)

MLR:对全量样本进行聚类,对每个类做LR。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

心心喵

喵喵(*^▽^*)

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值