协同过滤 java_协同过滤原理及实现(Collaborative Filtering)

概述协同过滤(Collaborative Filtering)是推荐系统中最经典的方法了,本文做一个简单的概述。User-based Collaborative Filtering假设一个场景,我们想买一个东西或者想吃一个东西,但是自己不知道哪种东西比较好,那么通常的选择就是去询问身边有着相似喜好的朋友寻求推荐。这就是基于用户的协同过滤,核心思想就是相似的用户(user)会喜欢相似的物品(item...
摘要由CSDN通过智能技术生成

概述

协同过滤(Collaborative Filtering)是推荐系统中最经典的方法了,本文做一个简单的概述。

User-based Collaborative Filtering

假设一个场景,我们想买一个东西或者想吃一个东西,但是自己不知道哪种东西比较好,那么通常的选择就是去询问身边有着相似喜好的朋友寻求推荐。这就是基于用户的协同过滤,核心思想就是相似的用户(user)会喜欢相似的物品(item)。

用户数据

为了在用户群体中找到跟自己相似的用户,很明显需要收集所有用户的数据,如所有用户对多个商品的评价,那么该数据的矩阵形状为

math?formula=(n_%7Busers%7D%2Cn_%7Bitems%7D)。在该矩阵中计算其他所有用户与指定用户的相似度,并使用前

math?formula=k个相似用户的数据来做推荐。推荐,肯定是该用户未曾见过或用过的东西,那么需要选出这些相似用户对指定用户未评价过的物品的评价数据,再做下一步计算。

相似用户对物品的加权评价为:相似度

math?formula=%5Ctimes评分;另外,考虑到热门物品与冷门物品在评价人数上的巨大差别,还需要对加权平价做一个归一化的处理:加权评分/评价人数。对指定用户所有未接触过的物品做加权评价求和,按得分排序就得到了一个推荐物品序列。

假设现在有如下评价数据,其中的0为缺失值的填充值:

item1

item2

item3

item4

item5

item6

user1

2.5

3.5

3

3.5

2.5

3

user2

3

3.5

1.5

5

3.5

3

user3

2.5

3

0

3.5

0

4

user4

0

3.5

3

0

4

4

user5

3

4

2

3

2

3

user6

3

4

0

5

3.5

3

user7

0

4.5

0

<
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值