0

我有一个数据集,Recoset,是用户对某些产品类别的评分。我正在尝试学习使用用户给出的评级来预测其他用户可能喜欢的产品类别,方法是在 R 中使用推荐程序实验室包的基于用户的协作过滤。

这是代码

m <- read.csv("recoset2.csv")
rrm <-as(m,"realRatingMatrix")
rrm2 <- rrm[rowCounts(rrm)>5] #only users who have bought from more than 5 verticals (any random 5)

learn <- Recommender(rrm2,method = "UBCF")
learned <- predict(learn,rrm[2001:2010,],n=3)
learned_list <- as(learned,"list")

现在,只要我预测 10 个或更少的用户,代码就可以正常工作(有时)。但是当我以这种方式将用户数量增加到 11 或更多时

learned <- predict(learn,rrm[2001:2020],n=3)

我受到这个错误的欢迎

Error in neighbors[, x] : incorrect number of dimensions

此错误有时也支持低至 2 个用户,但我从未收到 1 个用户的此错误。

我自己花了几天时间,浏览了整个推荐实验室文档,搜索了许多资源和教程,但调试了这个错误。任何解决此问题的帮助将不胜感激

> user                          item                 rating
> ORG1SNQ0TV16NQP6ZB5SD9XGX1FP7 MobileCable            2
> ORG441VE999BMCTYGZ0H7HDWHGX62 OTGPendrive            2
> ORG7L1NRFQZTPDJRFXC0CQ1LXLY6E MobileScreenGuard      3
> ORGBYFYMG92YFDC043NG7PZEHEPTS MobileScreenGuard      2
> ORGLZH07SFPSFQ3RZJMCV85XKKDKE Smartphone             5
> ORGMBN2841ZDJDZD4HHEN28HB5YYP Headphone              1

这是数据集的链接

4

2 回答 2

0

用不同的方法改变推荐行

learn <- Recommender(rrm2,method = "IBCF") # Change with "UBCF","SVD","POPULAR"
于 2020-12-25T11:42:26.763 回答
0

我知道这可能没有太多帮助:但我发现使用基于项目的协作过滤可以绕过这个问题。我在这里找到了一个返回相同错误的示例: https ://rpubs.com/dhairavc/639597

我认为这与 UBCF 的邻居数量有关。

如果将行更改为:

learn <- Recommender(rrm2,method = "IBCF")

我想你可能会返回一个结果。基于用户的对稀疏矩阵并不友好。

我希望这会有所帮助,如果我更接近修复,我会更新你!

于 2020-09-04T02:14:43.973 回答