J'ai essayé d'exécuter le cadre de mahout et d'utiliser le coefficient de Tanimoto sur un ensemble d'éléments. Heureusement, il travaille avec moi, cependant, il renvoie la valeur 1.0 pour tous les éléments prévus, le code a été comme suit:Coefficient Tanimoto dans mhout retour seulement 1.0 comme valeur de prédiction
public static void main(String[] args) throws Exception {
DataModel model = new FileDataModel(new File("stack.csv")); //load data from file needed for computation
UserSimilarity similarity = new TanimotoCoefficientSimilarity(model); //log likelihood similarity will be used for making recommendation .
/*To use TanimotoCoefficientSimilarity replace “LogLikelihoodSimilarity” with TanimotoCoefficientSimilarity”.
UserSimilarity implementation provides how similar two two users are using LoglikehoodSimilarity */
UserNeighborhood neighborhood = new NearestNUserNeighborhood(2, similarity, model); //Define a group of user most similar to a given user . 2 define a group of 2 user having most similar preference
Recommender recommender = new GenericUserBasedRecommender( model, neighborhood, similarity); // creates a recommendation engine
List<RecommendedItem>recommendations = recommender.recommend(3, 5);
/*one recommendation for user with ID 4 . In Mahout it always take Integer value i.e It will always take userId and number of item to be recommended */
for (RecommendedItem recommendation : recommendations) {
System.out.println(recommendation);
}
}
SORTIR mis comme suit:
[main] INFO org.apache.mahout.cf.taste.impl.model.file.FileDataModel - Creating FileDataModel for file stack.csv
[main] INFO org.apache.mahout.cf.taste.impl.model.file.FileDataModel - Reading file info...
[main] INFO org.apache.mahout.cf.taste.impl.model.file.FileDataModel - Read lines: 696
RecommendedItem[item:589, value:1.0]
RecommendedItem[item:380, value:1.0]
RecommendedItem[item:2916, value:1.0]
RecommendedItem[item:3107, value:1.0]
RecommendedItem[item:2028, value:1.0]
Part of my data file is as follow:
1 3408
1 595
1 2398
1 2918
1 2791
1 2687
1 3105
.
.
.
Jusqu'à ma connaissance que La valeur du coefficient de Tanimoto est généralement comprise entre 0 et 1.0, mais ici, elle ne montre que 1.0, ce qui est quelque chose d'impossible comme je le pense. Donc, quelqu'un a une idée de comment résoudre ce problème? Y a-t-il un seuil que je peux changer?
Toute aide avec ceci est fortement appréciée.
Merci beaucoup à l'avance.
Merci @Dragan Milcevski pour votre réponse. J'ai lu http://en.wikipedia.org/wiki/Jaccard_index avant, mais dans le cas où j'obtiens toujours 1 pour la valeur des préférences prédites, je ne peux donc pas décider dans mon exemple ci-dessus quel item 589 ou 380 est plus susceptible de être préféré par le numéro d'utilisateur 5 et tous les éléments auront la même priorité à l'utilisateur, où je ne suis pas sûr si cela est correct. Basé sur http://academypublisher.com/proc/wisa09/papers/wisa09p29.pdf la valeur du coefficient de Tanimoto la valeur de la prédiction n'est généralement pas de 1.0, elle peut être inférieure à cette valeur, puisqu'elle commence de 0 à 1.0. Merci beaucoup. – easy
Oui, vous avez raison. Je vais éditer ma réponse. Cependant je suppose que vous en avez beaucoup de semblables. Essayez d'obtenir les 100 meilleures recommandations et voyez si les valeurs changent. –
Merci beaucoup @Dragan Milcevski pour vos conseils. Je l'ai essayé avec le top 100 des recommandations et j'ai essayé de changer le nombre d'éléments similaires de 2 à 5 et 10. Mais, malheureusement, toujours obtenir la valeur de prédiction 1.0. Je ne sais pas pourquoi :( – easy