【推荐系统】基于物品的协同过滤算法

本文介绍了基于物品的协同过滤算法,通过用户行为计算物品相似度,涉及共现矩阵、同现相似度的计算方法,以及为避免热门物品影响而采用的IUF参数。算法还考虑了活跃用户对结果的影响并进行了归一化处理。
摘要由CSDN通过智能技术生成

基于物品的协同过滤

基于物品的协同过滤算法的核心思想就是:给用户推荐那些和他们之前喜欢的物品相似的物品。
ItemCF算法并不是直接根据物品本身的属性来计算相似度,而是通过分析用户的行为来计算物品之间的相似度

对于推荐阶段,可分为以下几步:

  1. 寻找与被推荐用户喜爱物品集最相似的N个物品
  2. 计算用户对这N个物品的感兴趣程度列表并逆序排列

考虑以下情形:

用户购买商品
A{a,b,d}
B{c,d,e}
C{a,b,c}
D{b,e}

如何计算商品之间的相似度?
我们想知道当购买商品a时,如果有很多用户购买了商品b,那是不是可以就此认为商品a与b是相似的呢?(比如说甲新购买了手机,乙买了手机还买了手机壳,我们是否可以推荐手机壳给用户甲呢?)

先写出每个用户的共现矩阵C
如 用户A:
在这里插入图片描述
C[i][j]代表的含义是同时喜欢物品i和物品j的用户数量。
易知这是一个对称矩阵

我们将每个用户的共现矩阵叠加,能够得到全部用户的完整的共现矩阵。
在这里插入图片描述

相似度的计算

同现相似度

ω i , j = ∣ N ( i ) ∩ N ( j ) ∣ ∣ N ( i ) ∣ \omega_{i,j}= \frac{|N(i)\cap N(j)|}{|N(i)|} ωi,j=N(i)N(i)N(j)
其中, ∣ N ( i ) ∣ |N(i)| N(i)指喜欢物品 i i i的用户数量,分子表示同时喜欢物品 i i i j j j的用户数量。因此,上述公式可以理解为喜欢物品 i i i的用户中有多少比例的用户也喜欢物品 j j j

但是,如果物品j很热门,那么 ω i , j \omega_{i,j} ωi,j就会很大,接近与1,任何物品与物品j都有很大的相似度,所以我们有了下面的公式:
ω i , j = ∣ N ( i ) ∩ N ( j ) ∣ ∣ N ( i ) ∣ ∣ N ( j ) ∣ \omega_{i,j}= \frac{|N(i)\cap N(j)|}{\sqrt{ |N(i)||N(j)|}} ωi,j=N(i)∣∣N(j) N(i)N(j)
这个公式惩罚了物品 j j j 的权重,因此减轻了热门物品会和很多物品相似的可能性。

另外为减小活跃用户对结果的影响,考虑IUF(nverse User Frequence) ,即用户活跃度对数的倒数的参数,认为活跃用户对物品相似度的贡献应该小于不活跃的用户.
ω i , j = ∑ u ∈ ∣ N ( i ) ∩ N ( j ) ∣ 1 l o g ( 1 + ∣ N ( u ) ∣ ) ∣ N ( i ) ∣ ∣ N ( j ) ∣ \omega_{i,j}= \frac{ {\textstyle \sum_{u\in |N(i)\cap N(j)|}^{}}\frac{1}{log(1+|N(u)|)} }{\sqrt{ |N(i)||N(j)|}} ωi,j=N(i)∣∣N(j) uN(i)N(j)log(1+N(u))1
为了便于计算,还需将相似度矩阵归一化。

  • 25
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值