List of usage examples for org.apache.mahout.cf.taste.impl.similarity EuclideanDistanceSimilarity EuclideanDistanceSimilarity
public EuclideanDistanceSimilarity(DataModel dataModel) throws TasteException
From source file:com.corchado.testRecomender.recomendador.java
/** * @param args the command line arguments * @throws java.io.IOException/* w w w . j av a 2s . co m*/ * @throws org.apache.mahout.cf.taste.common.TasteException */ public static void main(String[] args) throws IOException, TasteException { final Scanner entrada = new Scanner(System.in); DataModel model = new FileDataModel(new File("ml-100k/ua.base")); UserSimilarity similarity = null; int obciones; System.out.println("RECOMENDADOR MEDIANTE FILTRADO COLABORATIVO"); do { System.out.println("Seleccione la funcion de similitud a utilizar para recomendar"); System.out.println("marque 1 para la funcion euclidiana"); System.out.println("marque 2 para la funcion de Pearson"); System.out.println("marque 3 para la funcion de Log-likelihood"); System.out.println("marque 4 para la funcion de Tanimoto"); obciones = entrada.nextInt(); switch (obciones) { case 1: similarity = new EuclideanDistanceSimilarity(model); break; case 2: similarity = new PearsonCorrelationSimilarity(model); break; case 3: similarity = new LogLikelihoodSimilarity(model); break; case 4: similarity = new TanimotoCoefficientSimilarity(model); break; } } while (obciones != 1 && obciones != 2 && obciones != 3 && obciones != 4); int queHago = 0; try { do { System.out.println("\n Seleccione... "); System.out.println("1 para realizar una recomendacion "); System.out.println("2 si quiere probar una recomendacion "); System.out.println("3 para evaluar precision y recall"); System.out.println("4 si quiere salir"); queHago = entrada.nextInt(); switch (queHago) { case 1: System.out.println("Recomendando..."); Recomendar(entrada, model, similarity); break; case 2: System.out.println( "Realizando una prueba al recomendador tomado como conjunto de entrenamiento el 70% " + "del dataset y el 30% como conjunto de prueba. Ademas se evalua mediante el promedio de las diferencias." + "Mientras mas pequeo es este valor mejor es la recomendacion"); System.out.println("Si el dataset es muy grande la evaluacion puede tardar un poquito.."); Probar(entrada, model, similarity); break; case 3: System.out.println( "Evaluando precision y recall tomando como limite entre una recomendacion bueno o mala " + "la suma entre la media y la desviaci'on estandar (threshold = + ?)..."); evaluarPrecicionRecall(entrada, model, similarity); break; } } while (queHago != 4); } catch (IOException | TasteException e) { System.out.println(e.getMessage()); } }
From source file:com.corchado.testRecomender.recomendadorUI.java
private String funcionSimilitud() throws TasteException { String funcionSimilitud = SpinnerFuncionsmilitud.getValue().toString(); switch (funcionSimilitud) { case "Distancia Euclideana": similarity = new EuclideanDistanceSimilarity(model); break;/*from w w w .j av a2 s . co m*/ case "Correlacin de Pearson": similarity = new PearsonCorrelationSimilarity(model); break; case "log-likelihood": similarity = new LogLikelihoodSimilarity(model); break; case "Coheficiente de Tanimoto": similarity = new TanimotoCoefficientSimilarity(model); break; } return funcionSimilitud; }
From source file:com.staticvillage.recommender.PlaceRecommender.java
License:Apache License
public PlaceRecommender(DataModel model, int neighborhoodSize, Indexer<Place> indexer, GeoPoint geoPoint) throws TasteException { this.model = model; this.indexer = indexer; this.geoPoint = geoPoint; UserSimilarity similarity = new EuclideanDistanceSimilarity(model); UserNeighborhood neighborhood = new NearestNUserNeighborhood(neighborhoodSize, similarity, model); delegate = new GenericUserBasedRecommender(model, neighborhood, similarity); }
From source file:edu.nudt.c6.datasetlinking.mahout.MyRecommenderBuilder.java
License:Apache License
@Override public Recommender buildRecommender(DataModel dataModel) throws TasteException { if (recommenderType == RECOMMENDER.ITEM) { ItemSimilarity itemSimilarity = null; switch (similarityType) { case PEARSON: itemSimilarity = new PearsonCorrelationSimilarity(dataModel); break; case PEARSON_WEIGHTED: itemSimilarity = new PearsonCorrelationSimilarity(dataModel, Weighting.WEIGHTED); break; case COSINE: itemSimilarity = new UncenteredCosineSimilarity(dataModel); break; case TANIMOTO: itemSimilarity = new TanimotoCoefficientSimilarity(dataModel); break; case LOGLIKELIHOOD: itemSimilarity = new LogLikelihoodSimilarity(dataModel); break; case CITYBLOCK: itemSimilarity = new CityBlockSimilarity(dataModel); break; case EUCLIDEAN: itemSimilarity = new EuclideanDistanceSimilarity(dataModel); break; case EUCLIDEAN_WEIGHTED: itemSimilarity = new EuclideanDistanceSimilarity(dataModel, Weighting.WEIGHTED); break; case DATASET_VOCABULARY_COSINE: try { itemSimilarity = new DatasetVocabularySimilarity(dataModel); } catch (ClassNotFoundException | IOException e) { // TODO Auto-generated catch block e.printStackTrace();/* w w w . ja va 2 s . c o m*/ } break; case DATASET_CLASS_COSINE: try { itemSimilarity = new DatasetClassSimilarity(dataModel); } catch (ClassNotFoundException | IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } break; case DATASET_PPROPERTY_COSINE_SUBJECTS: try { itemSimilarity = new DatasetPropertySubjectsSimilarity(dataModel); } catch (ClassNotFoundException | IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } break; case DATASET_PPROPERTY_COSINE_TRIPLES: try { itemSimilarity = new DatasetPropertyTriplesSimilarity(dataModel); } catch (ClassNotFoundException | IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } break; default: itemSimilarity = new EuclideanDistanceSimilarity(dataModel); } if (pref) { return new GenericItemBasedRecommender(dataModel, itemSimilarity); } else { return new GenericBooleanPrefItemBasedRecommender(dataModel, itemSimilarity); } } else if (recommenderType == RECOMMENDER.USER) { UserSimilarity userSimilarity = null; switch (similarityType) { case PEARSON: userSimilarity = new PearsonCorrelationSimilarity(dataModel); break; case PEARSON_WEIGHTED: userSimilarity = new PearsonCorrelationSimilarity(dataModel, Weighting.WEIGHTED); break; case COSINE: userSimilarity = new UncenteredCosineSimilarity(dataModel); break; case SPEARMAN: userSimilarity = new SpearmanCorrelationSimilarity(dataModel); break; case TANIMOTO: userSimilarity = new TanimotoCoefficientSimilarity(dataModel); break; case LOGLIKELIHOOD: userSimilarity = new LogLikelihoodSimilarity(dataModel); break; case CITYBLOCK: userSimilarity = new CityBlockSimilarity(dataModel); break; case EUCLIDEAN: userSimilarity = new EuclideanDistanceSimilarity(dataModel); break; case EUCLIDEAN_WEIGHTED: userSimilarity = new EuclideanDistanceSimilarity(dataModel, Weighting.WEIGHTED); break; case DATASET_VOCABULARY_COSINE: try { userSimilarity = new DatasetVocabularySimilarity(dataModel); } catch (ClassNotFoundException | IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } break; case DATASET_CLASS_COSINE: try { userSimilarity = new DatasetClassSimilarity(dataModel); } catch (ClassNotFoundException | IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } break; case DATASET_PPROPERTY_COSINE_SUBJECTS: try { userSimilarity = new DatasetPropertySubjectsSimilarity(dataModel); } catch (ClassNotFoundException | IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } break; case DATASET_PPROPERTY_COSINE_TRIPLES: try { userSimilarity = new DatasetPropertyTriplesSimilarity(dataModel); } catch (ClassNotFoundException | IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } break; default: userSimilarity = new EuclideanDistanceSimilarity(dataModel); } UserNeighborhood userNeighborhood = null; switch (neighborhoodType) { case NEAREST: userNeighborhood = new NearestNUserNeighborhood(this.nearestNum, userSimilarity, dataModel); break; case THRESHOLD: default: userNeighborhood = new ThresholdUserNeighborhood(this.neighborThreshold, userSimilarity, dataModel); } if (pref) { return new GenericUserBasedRecommender(dataModel, userNeighborhood, userSimilarity); } else { return new GenericBooleanPrefUserBasedRecommender(dataModel, userNeighborhood, userSimilarity); } } else if (recommenderType == RECOMMENDER.SVD) { AbstractFactorizer factorizer = null; switch (SVDfactorizerType) { case RatingSGD: factorizer = new RatingSGDFactorizer(dataModel, factorNum, iterationNum); break; case ALSWR: factorizer = new ALSWRFactorizer(dataModel, factorNum, lambda, iterationNum); break; case SVDPlusPlus: factorizer = new SVDPlusPlusFactorizer(dataModel, factorNum, iterationNum); break; case ParallelSGD: factorizer = new ParallelSGDFactorizer(dataModel, factorNum, lambda, iterationNum); break; case MyRatingSGD: factorizer = new MyRatingSGDFactorizer(dataModel, factorNum, iterationNum); break; } return new SVDRecommender(dataModel, factorizer); } else if (recommenderType == RECOMMENDER.LINKDOCUMENT) { } else if (recommenderType == RECOMMENDER.CollaborativeRanking) { AbstractCRFactorizer factorizer = null; switch (CRFactorizerType) { case BasicLFM: try { factorizer = new BasicLFMFactorizer(dataModel, factorNum, iterationNum); } catch (ClassNotFoundException | IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } break; case LFMTrans: try { factorizer = new LFMTransFactorizer(dataModel, factorNum, iterationNum, learningRate); } catch (ClassNotFoundException | IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } break; } return new CollaborativeRankingRecommender(dataModel, factorizer); } else if (recommenderType == RECOMMENDER.Random) { return new RandomRecommender(dataModel); } else if (recommenderType == RECOMMENDER.ItemAverage) { return new ItemAverageRecommender(dataModel); } else if (recommenderType == RECOMMENDER.ItemUserAverage) { return new ItemUserAverageRecommender(dataModel); } return null; }
From source file:final_mahout.Final_Mahout.java
/** * @param args the command line arguments *///from w w w .j av a2 s . c o m public static void main(String[] args) throws TasteException, IOException { DataModel model = new FileDataModel(new File("/Users/wendyzhuo/Desktop/data3.csv")); //Computer the similarity between users,according to their preference UserSimilarity similarity = new EuclideanDistanceSimilarity(model); //Group the users with similar preference UserNeighborhood neighborhood = new ThresholdUserNeighborhood(0.2, similarity, model); //Create a recommender UserBasedRecommender recommender = new GenericUserBasedRecommender(model, neighborhood, similarity); //For the user with the id 1 get two recommendations List<RecommendedItem> recommendations = recommender.recommend(1, 2); for (RecommendedItem recommendation : recommendations) { System.out.println("they should not take id: " + recommendation.getItemID() + "(predicted preference:" + recommendation.getValue() + ")"); } // TODO code application logic here }
From source file:net.aprendizajengrande.gitrecommender.Experiment.java
License:Open Source License
public static void main(String[] args) throws Exception { DataModel model = new FileDataModel(new File(args[0])); System.out.println("For repo: " + args[0]); System.out.println("User-based:"); RecommenderEvaluator evaluator = new RMSRecommenderEvaluator(); RecommenderBuilder recommenderBuilder = new RecommenderBuilder() { @Override//from w w w. ja va2 s .c om public Recommender buildRecommender(DataModel model) throws TasteException { UserSimilarity similarity = new PearsonCorrelationSimilarity(model); UserNeighborhood neighborhood = new NearestNUserNeighborhood(2, similarity, model); return new GenericUserBasedRecommender(model, neighborhood, similarity); } }; // Use 90% of the data to train; test using the other 10%. double score = evaluator.evaluate(recommenderBuilder, null, model, 0.9, 1.0); System.out.println(score); recommenderBuilder = new RecommenderBuilder() { @Override public Recommender buildRecommender(DataModel model) throws TasteException { ItemSimilarity similarity = new EuclideanDistanceSimilarity(model); //new LogLikelihoodSimilarity(model); return new GenericItemBasedRecommender(model, similarity); } }; System.out.println("Item-based:"); score = evaluator.evaluate(recommenderBuilder, null, model, 0.9, 1.0); System.out.println(score); }
From source file:nl.gridline.zieook.tasks.quality.MahoutEvaluatorTest.java
License:Apache License
@Test public void testEuclideanDistanceSimilarity() throws TasteException, IOException { RandomUtils.useTestSeed();//from w w w . j a v a 2s. co m LOG.info("testing EuclideanDistanceSimilarity:"); DataModel model = new FileDataModel(testData); AverageAbsoluteDifferenceRecommenderEvaluator evaluator = new AverageAbsoluteDifferenceRecommenderEvaluator(); RMSRecommenderEvaluator rmsEvaluator = new RMSRecommenderEvaluator(); GenericRecommenderIRStatsEvaluator evaluatorIR = new GenericRecommenderIRStatsEvaluator(); RecommenderBuilder builder = new RecommenderBuilder() { @Override public Recommender buildRecommender(DataModel model) throws TasteException { EuclideanDistanceSimilarity similarity = new EuclideanDistanceSimilarity(model); UserNeighborhood neighborhood = new NearestNUserNeighborhood(2, similarity, model); return new GenericUserBasedRecommender(model, neighborhood, similarity); } }; long start = System.currentTimeMillis(); double score = evaluator.evaluate(builder, null, model, 0.7, 1.0); LOG.info("average score: {} in {}s", String.format("%.4f", score), ((System.currentTimeMillis() - start) / 1000)); start = System.currentTimeMillis(); score = rmsEvaluator.evaluate(builder, null, model, 0.7, 1.0); LOG.info("rms score: {} in {}s", String.format("%.4f", score), ((System.currentTimeMillis() - start) / 1000)); start = System.currentTimeMillis(); IRStatistics stats = evaluatorIR.evaluate(builder, null, model, null, 2, GenericRecommenderIRStatsEvaluator.CHOOSE_THRESHOLD, 1.0); LOG.info("precision: {} recall: {} in {}s", new Object[] { String.format("%.4f", stats.getPrecision()), String.format("%.4f", stats.getRecall()), ((System.currentTimeMillis() - start) / 1000) }); }
From source file:org.eclipse.agail.recommenderserver.collaborative.CollaborativeFiltering.java
License:Open Source License
private void applyCollaborativeFiltering(GatewayProfile profile) { int userID = addNewItemsandUser(profile); System.out.println("userID: " + userID); try {// ww w . j a v a 2s . c o m // load the data from the file with format "userID,itemID,value" DataModel model = new FileDataModel(new File(userProfilesFile)); // compute the correlation coefficient between their interactions //UserSimilarity similarity = new PearsonCorrelationSimilarity(model); UserSimilarity similarity = new EuclideanDistanceSimilarity(model); // we'll use all that have a similarity greater than 0.1 UserNeighborhood neighborhood = new ThresholdUserNeighborhood(0.1, similarity, model); //UserNeighborhood neighborhood = new NearestNUserNeighborhood(3, similarity, model); // all the pieces to create our recommender UserBasedRecommender recommender = new GenericUserBasedRecommender(model, neighborhood, similarity); // get 10 items recommended for the user with userID recommendations = recommender.recommend(userID, 10); for (RecommendedItem recommendation : recommendations) { System.out.println(recommendation); String item = getItem(recommendation.getItemID()); if (item.split(",")[0].contains("App")) { apps.getAppList().add(new App("App", item.split(",")[1], 0, 0)); } else if (item.split(",")[0].contains("Device")) { devs.getDeviceList().add(new Device("Device", item.split(",")[1])); } else if (item.split(",")[0].contains("Workflow")) { wfs.getWfList().add(new Workflow("Workflow", "Workflow", "Workflow", item.split(",")[1])); } else if (item.split(",")[0].contains("Cloud")) { clouds.getCloudList().add(new Cloud("Cloud", item.split(",")[1], "", "", "", "", "", "", "")); } } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } }
From source file:org.eclipse.agail.recommenderserver.Test.java
License:Open Source License
public static void testCollaborativeFiltering() { System.out.println("testCollaborativeFiltering"); try {/* w ww. j av a2s .c o m*/ // load the data from the file with format "userID,itemID,value" DataModel model = new FileDataModel(new File(testFile2)); // compute the correlation coefficient between their interactions UserSimilarity similarity = new EuclideanDistanceSimilarity(model); double similar = similarity.userSimilarity(1, 2); System.out.println(similar); // we'll use all that have a similarity greater than 0.1 UserNeighborhood neighborhood = new ThresholdUserNeighborhood(0.1, similarity, model); // all the pieces to create our recommender UserBasedRecommender recommender = new GenericUserBasedRecommender(model, neighborhood, similarity); // get three items recommended for the user with userID 2 List<RecommendedItem> recommendations = recommender.recommend(2, 10); for (RecommendedItem recommendation : recommendations) { System.out.println(recommendation); } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } }
From source file:services.CrossingRecommender.java
License:Apache License
public CrossingRecommender(DataModel bcModel) throws TasteException { UserSimilarity similarity = new CachingUserSimilarity(new EuclideanDistanceSimilarity(bcModel), bcModel); UserNeighborhood neighborhood = new NearestNUserNeighborhood(10, 0.2, similarity, bcModel, 0.2); recommender = new GenericUserBasedRecommender(bcModel, neighborhood, similarity); }