协同过滤(collaborative filtering)

协同过滤是推荐系统中常用算法,分为user-based和item-based两种。它基于用户与物品的交互,通过发现用户间的相似性或物品间的相似性进行推荐。文章介绍了核心公式、相似度计算方法、算法优化目标及其实战中的注意事项,并解答了算法相关问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

协同过滤简介

协同过滤是推荐算法中最常用的算法之一,它根据user与item的交互,发现item之间的相关性,或者发现user之间的相关性,进行推荐。

  • 比如你有位朋友看电影的爱好跟你类似,然后最近新上了《调音师》,他觉得不错,就会推荐给你,这是最简单的基于user的协同过滤算法(user-based collaboratIve filtering)
  • 还有一种是基于item的协同过滤算法(item-based collaborative filtering),比如你非常喜欢电影《当幸福来敲门的时候》,那么观影系统可能会推荐一些类似的励志片给你,比如《风雨哈佛路》等。

以下主要分析user-based,item-based。

导图

在这里插入图片描述

核心公式:

符号

r u , i r_{u,i} ru,iuser u u u 对 item i i i 的评分
r ˉ u \bar{r}_{u} rˉu:user u u u 的平均评分
P a , b P_{a,b} Pa,b:用户 a a a, b b b都有评价的items集合

公式

1.item-based CF 邻域方法预测公式

Pred ⁡ ( u , i ) = r ‾ u + ∑ j ∈ S i ( sim ⁡ ( i , j ) × r u , j ) ∑ j ∈ S i sim ⁡ ( i , j ) \operatorname{Pred}(u, i)=\overline{r}_{u}+\frac{\sum_{j \in S_{i}}\left(\operatorname{sim}(i, j) \times r_{u, j}\right)}{\sum_{j \in S_{i}} \operatorname{sim}(i, j)} Pred(u,i)=ru+jSisim(i,j)jSi(sim(i,j)×ru,j)

2.偏差优化目标
min ⁡ b ∑ ( u , i ) ∈ K ( r ( u , i ) − μ − b u − b i ) 2 \min _{b} \sum_{(u, i) \in K}\left(r_{(u, i)}-\mu-b_{u}-b_{i}\right)^{2} bmin(u,i)K(r(u,i)μbubi)2其中 ( u , i ) ∈ K (u,i) \in K (ui)K表示所有的评分, μ \mu μ总评分均值, b u b_u bu为user u u u的偏差, b i b_i bi为item i i i 的偏差。

  • 加入正则项后的Funk SVD 优化公式
    min ⁡ u v ∑ ( u , i ) ∈ k n o w n ( r u , i − u u v i ) + λ ( ∣ u ∣ 2 + ∣ v ∣ 2 ) \min _{u v} \sum_{(u, i) \in k n o w n}\left(r_{u,i}-u_{u} v_{i}\right)+\lambda\left(|u|^{2}+|v|^{2}\right) uvmin(u,i)known(ru,iuuvi)+λ(u2+v2)其中 u u u_u uu为user u u u的偏好,即为user特征矩阵 U U U的第 u u u行, v i v_i vi为item i i i的特征,即为特征矩阵 V V V的第 i i i

算法十问

  1. 相似度与距离之间的关系?

距离越大,相似度越小;距离越小,相似度越高。即在求解最大相似度的时候可以转为求解最小距离。

  1. 在协同过滤中,常用的相似度函数有哪些?
  1. 杰卡德相似度(Jaccard similarity)
    公式: s i m j a c c a r d ( u 1 , u 2 ) = items bought by  u 1   a n d   u 2  items bought by  u 1   o r   u 2 sim_{jaccard}(u_{1}, u_{2})=\frac{ \text {items} \text { bought by } u_{1}\ and\ u_{2}}{ \text { items bought by } u_{1}\ or\ u_{2}} simjaccard
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值