@pagal_guy wrote:
hello,
While trying to implement recommenders through R,I came across some piece of code:
ratingMatrix <- as.data.frame(rbind(c(5,5,0,1),c(4,0,0,1),c(1,1,0,5),c(1,0,0,4),c(0,1,5,4))) #Naming the columns: names(ratingMatrix) = c('P1','P2','P3','P4') #Naming the rows: rownames(ratingMatrix) = paste("U",1:5,sep = "") rownames(ratingMatrix) #Converting to simple triplet matrix to retain only non-zero values and their index values: p = slam::as.simple_triplet_matrix(ratingMatrix) #Simulated Annealing: #Initialisation of Parameters par = rep(1,18)#There are a total of 18 values in U and M matrices together. #Forming objective function: fnc = function(par){ u = matrix(par[1:10],nrow = 5,byrow = T)#U matrix #initialisation: m = matrix(par[11:18],nrow = 2,byrow = T)#transposed M #matrix initialisation R = u %*% m Rv = sapply(1:13,function(x)R[p$i[x],p$j[x]]) sum((p$v-Rv)^2)#Sum of square of error which is to be minimized } library(GenSA) set.seed(1234); val = GenSA(par,fnc,lower = rep(0,18),upper = rep(4,18), control = list(threshold.stop = 0.0001)) #Final rating matrix after optimization matrix(val$par[1:10],nrow = 5,byrow = T)%*%matrix(val$par[11:18],nrow = 2,byrow = T)
The final matrix that is returned is:
I am not being able to understand the Simulated Annealing part.
Can someone please help me with this??
Posts: 1
Participants: 1