2014-05-18 1 views
0

Je dois faire un recommandeur basé sur une base de données Yelp, j'ai filtré les avis d'affaires et l'utilisateur et créé un realRatingMatrix avec les évaluations des utilisateurs pour les entreprises respectives. Même si la matrice sera gigantesque, je ne fais que tester d'abord avec une très petite matrice (matrice mdat).Mauvaise sortie dans la fonction de prédiction du paquet R 'recommanderlab'?

#learning matrix 
learningM <- as(mdat[1:8,],"realRatingMatrix") 

# matrix to predict user recommendations 
testM <- as(mdat[9:10,],"realRatingMatrix") 

#using the learning matrix to create a UBCF recommender 
rec <- Recommender(learningM, method = "UBCF") 

#function that should output 2 business recommendations to users of testM 
pre <- predict(rec, testM, n=2) 

Au lieu de cela je reçois une sortie comme ceci:

> as(pre,"list") 
[[1]] 
character(0) 

[[2]] 
character(0) 

Pourquoi ai-je cette sortie? La fonction predict calcule-t-elle des résultats erronés, fournissant ainsi une sortie erronée ou mon nom de colonne métier est-il un type de texte différent, de sorte qu'il ne peut pas l'afficher correctement?

Modifier: mdat matrice comme demandé, désolé de ne pas le mettre à la première place.

> dput(mdat) 
structure(c(1, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 4, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, 5, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, 4, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 3, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 1, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, NA, 4, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
3, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 5, NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, 5), .Dim = c(10L, 10L), .Dimnames = list(
c("jqhP9mV2rYvmPdKvlOfp0g", "tqkkmL2NB19Sxeg1AaXnSA", "cNMJxBzmXA9N7krLvlrzlA", 
"9v3uIUTitC043Y4Qs54K1g", "nLUwyI34R-cAHLnmEGeLIg", "6SUSTwhfSFva9nbIDmoN7Q", 
"iCppbv3C7XvCyzIZnNQ7fg", "MUo7TLgR7sy1ob0MvxyPHQ", "GMVQyHMHNGplG3aof8jMcA", 
"VNGevHJuTxcou-Nhm8Q5RQ"), c("iZYDZvXoIT648EZOnEP0pQ", "HQJjHA6BRcRD0vR5askdkQ", 
"bul_5Ahk_QYLUAJ4Od27jg", "EOoj2h1Brzk1AhqScvIHDA", "roEQNfyPi3jRv3WFFr-f_g", 
"ffp58kYSK7dJGs5ER-5txw", "pvlM--HZY1a8SqMXiwEz1A", "mta3FuoNzjjGWQr9TCHGhA", 
"QeK3lOP-CTZS72YgeXiiqA", "57VozB9tq5SbNst9nO-jxA"))) 
+0

L'erreur est que personne ne peut répondre sans les données. Publication de la sortie de 'dput (mdat)' –

+0

La matrice @BondedDust a été ajoutée. – Vitz

+1

La plupart des données sont NA et il n'y a pas de chevauchement dans les dimnames des ensembles d'apprentissage et de test. Il n'y a donc rien dans l'ensemble d'apprentissage qui pourrait être utilisé pour calculer de manière similaire les caractéristiques des ensembles d'apprentissage et de test. –

Répondre

1

As explained by the vignette, recommenderlab tente de résoudre un problème de régression matricielle. Mais si l'ensemble de valeurs de l'ensemble d'apprentissage ne contient pas le même ensemble de recommandations provenant de nouveaux utilisateurs, aucune mesure de similarité ne peut être établie pour les nouveaux utilisateurs avec les anciens utilisateurs. L'algorithme doit trouver des anciens utilisateurs qui ont évalué les mêmes éléments que les nouveaux utilisateurs avant de pouvoir fournir d'autres éléments à partir des autres évaluations d'anciens utilisateurs.

Une recommandation de population simple ne nécessite pas de trouver un sous-ensemble d'évaluateurs ayant partagé des évaluations avec de nouveaux utilisateurs.