我有一个数据集,Recoset,用户给出的某些产品类别的评级。我正在尝试学习使用用户给出的评分来预测其他用户可能喜欢的产品类别,方法是将recommenderLab包的基于用户的协作过滤放在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个用户的这个错误。
我花了几天的时间,浏览了整个recommenderLab documentation,浏览了许多源代码和教程,但还是调试了这个错误。如果能帮助我们解决这个问题,我们将不胜感激。
> user item rating
> ORG1SNQ0TV16NQP6ZB5SD9XGX1FP7 MobileCable 2
> ORG441VE999BMCTYGZ0H7HDWHGX62 OTGPendrive 2
> ORG7L1NRFQZTPDJRFXC0CQ1LXLY6E MobileScreenGuard 3
> ORGBYFYMG92YFDC043NG7PZEHEPTS MobileScreenGuard 2
> ORGLZH07SFPSFQ3RZJMCV85XKKDKE Smartphone 5
> ORGMBN2841ZDJDZD4HHEN28HB5YYP Headphone 1这是指向dataset的链接
发布于 2020-09-04 10:14:44
我知道这可能不是一个完整的帮助:但我发现使用基于项目的协作过滤绕过了这个问题。我在这里找到了一个返回相同错误的示例:https://rpubs.com/dhairavc/639597
我认为这与UBCF的邻居数量有关。
如果将行更改为:
learn <- Recommender(rrm2,method = "IBCF")我想你可能会返回一个结果。基于用户的策略对稀疏矩阵并不友好。
我希望这对你有帮助,如果我离修复更近了,我会更新你的!
发布于 2020-12-25 19:42:27
使用不同的方法更改推荐行
learn <- Recommender(rrm2,method = "IBCF") # Change with "UBCF","SVD","POPULAR"https://stackoverflow.com/questions/63474065
复制相似问题