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?

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top