1

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.

Répondre

1

Le coefficient Tanimoto, ou également connu sous le nom de coefficient de Jaccard, ignore complètement les valeurs de préférence et considère simplement que l'utilisateur aime ces éléments, et rien de plus. Comment est-il calculé? La valeur finale est le nombre d'éléments pour lesquels deux utilisateurs expriment une certaine préférence (en d'autres termes seulement) divisé par le nombre d'éléments pour lesquels l'un ou l'autre utilisateur exprime une certaine préférence.

En savoir plus sur le coefficient Jaccard ici: http://en.wikipedia.org/wiki/Jaccard_index

En savoir plus sur la mise en œuvre du Mahout TanimotoCoefficientSimilarity dans le livre Mahout in Action.

+0

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

+0

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. –

+0

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