我參加編程比賽,其中第一列是用戶,第二列是電影,第三列是十分制評分系統中的數字。用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