comment obtenir la préférence de l'utilisateur dans mahout datamodel
-
21-12-2019 - |
Question
J'essaie mahout et vous demandez-vous à propos de l'entrée datamodel
pour les non-distribués version
fichier datamodel a suivre:userid, itemid, userPreference le problème est que je n'ai pas de préférence de l'utilisateur valeurs, ont pour précalculer il ne mahout ont une méthode pour le faire?
J'ai trouvé un article http://www.codeproject.com/Articles/620717/Building-A-Recommendation-Engine-Machine-Learning
l'auteur semble ne pas vraiment avoir de l'utilisateur perference valeurs, mais il a utilisé org.apache.mahout.cf.taste.hadoop.item.RecommenderJob -s SIMILARITY_COOCCURRENCE
pour calculer à partir de {userid, questionid}
à partir de ce que je peux dire, mahout semble calculer perference valeurs de données, puis de calculer la recommandation, suis-je correct dans ce cas?
La solution
Si vous n'avez pas de préférence de l'utilisateur des valeurs, peut-être que vous n'en avez pas besoin.Cornac offre une mise en œuvre de recommander des articles pour les utilisateurs sans avoir la préférence des valeurs.Ceci est appelé Boolean préférences. Fondamentalement, vous avez juste à savoir que l'utilisateur aime un certain point, mais vous ne savez pas combien.Parfois, c'est très bien.
Soufflet est un exemple de code comment cela peut être fait.Fondamentalement, seule la première ligne diffère, où vous dites que votre modèle de données est de type BooleanPrefDataModel
.Puis avec l'opérateur booléen données, vous pouvez utiliser deux types de mesures de similarité:LogLikelihoodSimilarity, TanimotoCoefficientSimilarity
.Les deux peuvent être utilisés pour calculer basée sur l'utilisateur et l'élément de base de recommandations.
DataModel model = new GenericBooleanPrefDataModel( GenericBooleanPrefDataModel.toDataMap( new FileDataModel(new File("FILE_NAME"))));
UserSimilarity similarity = new LogLikelihoodSimilarity(model);
UserNeighborhood neighborhood = new NearestNUserNeighborhood(10, similarity, model);
Reecommender recommender = new GenericUserBasedRecommender(model, neighborhood, similarity);
List<RecommendedItem> recommendations = recommender.recommend(1, 10);
for (RecommendedItem recommendation : recommendations) {
System.out.println(recommendation);
}
L'autre alternative consiste à calculer la préférence des valeurs en dehors de mahout et d'alimenter le modèle de données dans un autre utilisateur ou d'un élément à base d'algorithmes.Mais autant que je sache, mahout n'offre pas de mise en œuvre pour le calcul de valeurs préférées.
Autres conseils
Vous pouvez définir la valeur de préférence pour votre modèle de données (mais, cela dépend de votre modèle de données).Par exemple, vos données les éléments du modèle sont les pistes qui sont écoutés par les utilisateurs.Les préférences de la valeur peut être définie que user1 écoute trackA x fois.Ainsi, les préférences de la valeur pour le modèle de données doit être défini pour chaque userid-itemid paire unique.
L'exemple de modèle de données :
userid,itemid,les préférences
1,1,3 - 1,2,5 - ....- 5,1,2...ainsi de suite.