Problem with Recommendation System in R

Asked

Viewed 114 times

2

I’m trying to develop a recommendation system using the R language.

Basically, the system is music recommendation collecting information from a file where there is a certain amount of users and for each user, a count of times he has heard a certain artist.

library(tidyverse)
library(data.table)
library(recommenderlab)

dados <- fread("dadosTreinamento.txt", header = TRUE, sep = "\t", fill = TRUE) #Dados carregados em variável

names(dados)[2:3] <- c("IdArtist", "IdUser")

dadosGrupo <- group_by(dados, IdUser, IdArtist) #Agrupando os dados

dadosGrupo2 <- summarise(dadosGrupo, count = n()) #Gerando tabela com soma da quantidade de vezes que cada usuário ouviu determinado artista
dadosGrupo2 <- as.data.frame(dadosGrupo2) #Convertendo dadosGrupo2 para data.frame

matrizAfinidade <- as(dadosGrupo2, "realRatingMatrix") #Matriz real de dados

Rec.model<-Recommender(matrizAfinidade, method = "UBCF")

usuarios <- length(unique(dadosGrupo2$IdUser))

listaRecomendacoes <- list(length(usuarios))

for (i in 1:usuarios) {
  itemRecomendado <- predict(Rec.model, matrizAfinidade[i,], n=5)
  listaRecomendacoes[i] <- as(itemRecomendado, "list")
}

In this section the program generates the recommendation of 5 items for users.

However, when I try to visualize the recommendation through the command View(listaRecomendacoes), the system presents only the recommended items and where the user information for which the system recommended should be, there is only the word "Character", as can be seen in the figure below:

inserir a descrição da imagem aqui

The user data file I’m using is at this link.

1 answer

2


Put an extra clasp on listaRecomendacoes so that it receives the entire list and not only content. There the user Ids are the names of the lists.

listaRecomendacoes <- vector('list', usuarios) #inicializa uma lista vazia do tamanho de usuarios

for (i in 1:usuarios) {
  itemRecomendado <- predict(Rec.model, matrizAfinidade[i,], n=5)
  listaRecomendacoes[[i]] <- as(itemRecomendado, "list") #passa os valores para a lista
}

names(listaRecomendacoes[[1]]) #pega o ID do usuário 1
sapply(listaRecomendacoes, names)#vetor com os IDs dos usuários
  • Thank you Jorge Mendes. Actually, adding only the brackets to the listRecommendations already worked!

Browser other questions tagged

You are not signed in. Login or sign up in order to post.