CF、MF、FM、FFM浅析

一,CF(协同过滤)

协调过滤的目的都是预测用户是否喜欢某个物品

1.1,userCF(基于用户的协同过滤)

‘人以群分’。步骤:
a,通过用户-物品行为历史信息,构建共现矩阵。
行坐标为用户,纵坐标为物品;
b,找到与用户x兴趣最相似的top n用户。
通过用户购买物品的行为转变成用户向量,然后通过cosine距离或者是皮尔逊相关系数得到top n。
c,然后根据相似用户对物品p的喜爱程度来决定是否将物品推荐给用户x。
公式如下,物品p推荐给用户u的概率:
R u , p = ∑ s ϵ S ( w u , s ∗ R s , p ) ∑ s ϵ S w u , s R_{u,p}=\frac{\sum_{s\epsilon{S}}(w_{u,s}*R_{s,p})}{\sum_{s\epsilon{S}}w_{u,s}} Ru,p=Swu,sS(wu,sRs,p)
其中S为与u相似的top n用户的集合。 w u , s w_{u,s} wu,s表示用户u与用户s的相似度, R s , p R_{s,p} Rs,p表示用户s对物品p的喜爱程度。分母就是把与用户u相似的n个用户的相似度加起来,分子是把这n个用户各自对物品i的态度按照相似度加权求和。
获得用户u对不同物品的评价预测之后,最终的推荐列表根据预测得分排序即可。
即找到与你相似的用户把他们喜欢的物品推荐给你.

1.2,itemCF(基于物品的协同过滤)

‘物以类聚’。步骤:
a,基于用户历史数据,构建以用户为行坐标,物品为列坐标m*n的共现矩阵;
b,计算共现矩阵两两列向量间的相似性,构建n*n的物品相似度矩阵;
c,获得用户历史行为数据中的正反馈物品列表;
d,利用物品相似度矩阵,针对目标用户历史行为中的正反馈物品,找出相似的Top k个物品,组成相似物品集合;
e,对相似物品集合中的物品,按照相似度分值排序,生成最终的推荐列表。若有的物品与多个正反馈物品相似,那么其分数是加权累加的:
R u , p = ∑ h ϵ H ( w p , h ∗ R u , h ) R_{u,p}=\sum_{h\epsilon{H}}(w_{p,h}*R_{u,h}) Ru,p=hϵH(wp,hRu,h)
其中H是目标用户的正反馈物品集合, w p , h w_{p,h} wp,h表示物品p与物品h的相似度, R u , h R_{u,h} Ru,h表示用户u对物品h的正反馈程度(比如评分、购买次数)。
即根据你喜欢的物品找到与之相似的物品推荐给你。

userCF具有较强的社交特性,能快速感知与自己相似的人喜欢什么,非常适合新闻推荐场景。userCF正适用于发现热点、以及跟踪热点的趋势。不足:互联网中用户数往往大于商品数;其需要维护用户相似度矩阵以便快速找出top n的相似用户,随着用户增长开销非常大。用户的历史数据向量往往非常稀疏,对于正反馈获取困难,如酒店预订、大件商品购买就不适合。
ItemCF更适合于兴趣变化较稳定的应用,如电商、视频推荐。
CF的缺点:泛化能力差,推荐结果的头部效应较明显,处理稀疏向量的能力弱。

二,MF(矩阵分解)

在CF共现矩阵的基础上,使用更稠密的隐向量表示用户和物品,挖掘用户和物品的隐含兴趣和隐特征来弥补CF处理稀疏矩阵能力不足的问题。
用户和物品的隐向量是通过分解协调过滤生成的共现矩阵得到的。
矩阵分解将m*n的共现矩阵R分解成m*k维的用户矩阵U和k*n维的物品矩阵V的相乘形式。m是用户数,n是物品数,k是隐向量维度。k越大表达能力越大,模型的泛化能力越差。
基于用户矩阵U和物品矩阵V,用户u对物品i的预估评分如:
r ^ u i = q i T p u \hat{r}_{ui}=q_{i}^{T}p_{u} r^ui=qiTpu
其中 p u p_{u} pu是用户u在用户矩阵U中对应行向量, q i q_i qi`物品i在物品矩阵V中对应的列向量。
对矩阵进行矩阵分解目前主要用的是‘梯度下降’的方式。
加入正则项之后的目标函数为:
m i n q ∗ , p ∗ = ∑ ( u , i ) ϵ K ( r u i ) min_{q^*,p^*}=\sum_{(u,i)\epsilon{K}}(r_{ui}) minq,p=(u,i)ϵK(rui)

三,FM(Factorization Machine,因子分解机)

3.1,FM参考资料:

FM:推荐中的瑞士军刀
推荐算法有三个应用领域:召回、粗排、精排。只有FM可以实现三个领域全覆盖。
FM能够生产user/item embedding,因此实现一个FM召回,就能够完成u2i, i2i, i2u, u2u2i四种召回方式,还包括对新用户、新物料的冷启动。性价比如此之高,即使在很多大厂,FM也是主力召回模型。

FM的模型可以表达成:
(FM算法更详细的数学推理以及代码描述)
补充公式

FM算法原理:
CTR预估模型FM、FFM、DeepFM
FM算法解析与Python实现(讲解不清晰)

FM的各种推演TF实现(tf实现的各种算法)

FM原理到应用(python/TF实现)好文

FM理论与实践(TF实现代码详解)

本地/Documents/ml/deepml/deep nn ctr prediction 地址下有相关课件,tf实现的lr,fm等,18年的有点老

3.2,FM离线框架开源地址:

1,spark fm
org.apache.spark.ml.classification.FMClassifier
spark的libfm?
https://github.com/zhengruifeng/spark-libFM

2,libfm
最经典的fm框架。
http://www.libfm.org/
使用情况:https://blog.csdn.net/luoyexuge/article/details/72639235

3,alphaFM
“该项目只不过是作者八小时之外的课外作品,却被很多公司拿来投入线上实际生产环境”

4,xlearn
https://xlearn-doc-cn.readthedocs.io/en/latest/index.html
提供了命令行以及python和R接口,命令行方式还挺方便的,可以研究一下能不能使用

“5. 比较常见的实现有:”
https://zhuanlan.zhihu.com/p/77090937?utm_source=wechat_session&utm_medium=social&utm_oi=769570593849741312

四,Weed&&deep

W&D由浅层(或单层)的Wide部分神经网络和深层的Deep部分多层神经网络组成,输出层采用softmax或logistics regression综合Wide和Deep部分的输出。
Wide部分有利于增强模型的“记忆能力”,Deep部分有利于增强模型的“泛化能力”。
wide对稀疏特征比较好,deep部分对于稠密化的Embedding向量比较好

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

一杯拿铁go

你的打赏是我更新最大的动力

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

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

打赏作者

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

抵扣说明:

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

余额充值