我参加编程比赛,其中第一列是用户,第二列是电影,第三列是十分制评分系统中的数字。用SVD矩阵预测
0 0 9
0 1 8
1 1 4
1 2 6
2 2 7
而且我预测第三列(用户,电影,?):
0 2
1 0
2 0
2 1
而且我知道答案:
0 2 7.052009
1 0 6.687943
2 0 6.995272
2 1 6.687943
此表中的数据:行是用户0,1和2;列是电影0,1和2;细胞是得分,0
未投票:
[,1] [,2] [,3]
[1,] 9 8 0
[2,] 0 4 6
[3,] 0 0 7
我用[R郎为GET SVD:
$d
[1] 12.514311 9.197763 2.189331
$u
[,1] [,2] [,3]
[1,] 0.9318434 -0.3240669 0.1632436
[2,] 0.3380257 0.6116879 -0.7152458
[3,] 0.1319333 0.7216776 0.6795403
$v
[,1] [,2] [,3]
[1,] 0.6701600 -0.31709904 0.6710691
[2,] 0.7037423 -0.01584988 -0.7102785
[3,] 0.2358650 0.94825998 0.2125341
换位v是:
[,1] [,2] [,3]
[1,] 0.6701600 0.7037423 0.2358650
[2,] -0.31709904 -0.01584988 0.94825998
[3,] 0.6710691 -0.7102785 0.2125341
和我读到预测电影等级使用此公式:
但我不知道如何预测评级是这样的:
0 2 7.052009
1 0 6.687943
2 0 6.995272
2 1 6.687943
对于这个数据:
0 2
1 0
2 0
2 1
“首先,当您没有可用于特定用户/电影组合的排名时,则不应将其填入零。”这是错误的:这是在矩阵完成任务中采用的标准方法。查看关于这个主题的任何参考(包括维基百科)。 – vrume21 2015-04-10 12:46:53
@ vrume21 - 我相信你错了。只有在将矩阵居中后,零才可以被替换。如果你事先这样做,那么你会严重偏斜他们的权重。相当于用每个变量的均值代替缺失值。 – 2015-04-10 12:57:43