, . -, , , . SVD (PCA), ( ). , , , .
Netflix ( ), SVD, - PCA. , NaN, , .
, , , "", , , . 3 3 , , . , , .
"- " (RSEOF), PCA . , .
, acast reshape2:
library(reshape2)
library(sinkr) (download from GitHub: https://github.com/menugget/sinkr)
df1 <- data.frame(user=factor(c(0,0,1,1,2)), movie=factor(c(0,1,1,2,2)), rank=c(9,8,4,6,7))
df1
df2 <-data.frame(user=factor(c(0,1,2,2)), movie=factor(c(2,0,0,1)))
df2
m1 <- acast(df1, movie ~ user, fill=NaN)
m1
, eof sinkr (), RSEOF:
E <- eof(m1, method="svd", recursive=TRUE, center=FALSE, scale=FALSE)
E$u
E$A
E$Lambda
NaN PCA ( E$A %*% t(E$u)):
R <- eofRecon(E)
R
pos <- (as.numeric(df2$user)-1)*length(levels(df1$movie)) + as.numeric(df2$movie)
pos
df2$rank <- R[pos]
df2
df2 /, :
user movie rank
1 0 2 9.246148
2 1 0 7.535567
3 2 0 6.292984
4 2 1 5.661985
, , ( 7). , () (), m1,
0 1 2
0 9 NaN NaN
1 8 4 NaN
2 NaN 6 7
, "0" "2" , "1", , "1". "1", , . 7.05, , "1" (.. 8), RSEOF 9.2.
, , - , , , " ". , , , .