协同过滤推荐算法_【surprise算法包4】基于协同过滤的基础推荐算法

4112c9cf1d9923dc39c842813dc9c27f.png

Surpise包之协同过滤

一. CoClustering

这是一个基于聚类的协同过滤算法,该算法是根据文献【1】来实现的。该算法的主要思想是分别将user和item进行分类(类似分桶),然后根据类中心来进行预测。其预测函数如下:

9b622446628963e3d0b258a681043520.png

其中,

f97a69b9f3c1801a87dac7b70513f405.png

是用户u和item i所在的联合类中的所有成员的分数均值,类中的成员以(u,i)的形式存在。

910c4cc137a255b9c28e086ce5978a5b.png

是用户u所在的用户类中的所有成员的分数均值,

a14f86413e5fe8827b383eb4018ffc86.png

是item i所在的item 类中的所有成员的分数均值,

1c46c224e22cf61241cc4c3c2f0d7cd4.png

是用户u历史上打过的所有的分值的均值,

2ec903cb1f9e9c0a72af78a70a8bb2d0.png

是item i得到的所有分数的均值。

Surprise包在实现该算法时,逻辑如下:

1) 初始化所有item和user所属的类

2) 计算

a108796ad577a73f28b38f1678ebb986.png

3) 更新每一个item和user所属的类

4) 跳转到2)循环进行

步骤3)中的user所属类的更新逻辑是:遍历每一个打分记录,对于当前的记录(u,i,rating),假设用户u依次属于每一个类别,item i的类别不变,然后使用用户u历史上评价过低所有item计算该类别下的误差,然后取误差最小的类别来更新用户u所属的类别。Item所属类别的更新逻辑类似。

二. SlopeOne

这是迄今为止非常简单且有效的一种完全基于统计的协同过滤算法, 该算法是根据文献【2】来实现的。该算法的主要思想是通过当前用户打分的所有item与当前item i在同一用户下的得分偏差总和来估算当前用户对item i的打分。其预测函数如下:

aa97d1cf5a5616f4ba00c1b24525cc30.png

d5bc4899aa84f34203cb3c54d3f46465.png

其中,

ee5d9557e03fbbd28e76481e7f36c365.png

表示用户u所打分的所有的item集合,

9c34b3e4969e2117d32b6ca4bd32e61d.png

表示item i与item j的共同用户的集合,即集合中的每一个用户都曾经即给item i打过分也给item j打过分。

三. 参考文献

【1】 Thomas George and Srujana Merugu. A scalable collaborative filtering framework based on co-clustering. 2005. URL: http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.113.6458&rep=rep1&type=pdf.

【2】 Daniel Lemire and Anna Maclachlan. Slope one predictors for online rating-based collaborative filtering. 2007. URL: http://arxiv.org/abs/cs/0702144.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值