List of usage examples for org.apache.mahout.cf.taste.impl.similarity TanimotoCoefficientSimilarity TanimotoCoefficientSimilarity
public TanimotoCoefficientSimilarity(DataModel dataModel)
From source file:be.ugent.tiwi.sleroux.newsrec.newsreccollaborativefiltering.MahoutTermRecommender.java
public Map<Long, List<RecommendedItem>> makeRecommendations(int n) throws IOException, TasteException { DataModel model = new FileDataModel(new File(mahoutInputFile), ";"); UserSimilarity similarity = new TanimotoCoefficientSimilarity(model); UserNeighborhood neighborhood = new NearestNUserNeighborhood(2, similarity, model); Recommender recommender = new GenericUserBasedRecommender(model, neighborhood, similarity); LongPrimitiveIterator it = model.getUserIDs(); Map<Long, List<RecommendedItem>> output = new HashMap<>(model.getNumUsers()); while (it.hasNext()) { long user = it.nextLong(); List<RecommendedItem> items = recommender.recommend(user, n); output.put(user, items);/*ww w. jav a 2 s .com*/ } return output; }
From source file:businessreco.BusinessReco.java
public static void main(String args[]) { try {//from ww w .ja v a2s.c om //Loading the DATA; DataModel dm = new FileDataModel(new File( "C:\\Users\\bryce\\Course Work\\3. Full Summer\\Big Data\\Final Project\\Yelp\\FINAL CODE\\Mahout\\data\\busirec_new.csv")); // We use the below line to relate businesses. //ItemSimilarity sim = new LogLikelihoodSimilarity(dm); TanimotoCoefficientSimilarity sim = new TanimotoCoefficientSimilarity((dm)); //Using the below line get recommendations GenericItemBasedRecommender recommender = new GenericItemBasedRecommender(dm, sim); //Looping through every business. for (LongPrimitiveIterator items = dm.getItemIDs(); items.hasNext();) { long itemId = items.nextLong(); // For each business we recommend 3 businesses. List<RecommendedItem> recommendations = recommender.mostSimilarItems(itemId, 2); for (RecommendedItem recommendation : recommendations) { System.out.println(itemId + "," + recommendation.getItemID() + "," + recommendation.getValue()); } } } catch (IOException | TasteException e) { System.out.println(e); } }
From source file:com.anjuke.romar.mahout.GenericReloadDataModelTest.java
License:Apache License
@Test public void test() throws TasteException { GenericReloadDataModel model = new GenericReloadDataModel(); ItemBasedRecommender recommender = new GenericItemBasedRecommender(model, new CachingItemSimilarity(new TanimotoCoefficientSimilarity(model), 100)); recommender.setPreference(1, 1, 5f); recommender.setPreference(1, 2, 1f); recommender.setPreference(2, 1, 1f); recommender.setPreference(2, 2, 5f); recommender.refresh(null);//from w w w. j a v a 2 s . c o m assertEquals(0, recommender.recommend(1, 5).size()); recommender.setPreference(2, 3, 1f); recommender.refresh(null); assertEquals(1, recommender.recommend(1, 5).size()); recommender.setPreference(2, 4, 1f); recommender.refresh(null); assertEquals(2, recommender.recommend(1, 5).size()); assertEquals(2, recommender.recommend(1, 5).size()); }
From source file:com.corchado.testRecomender.recomendador.java
/** * @param args the command line arguments * @throws java.io.IOException/*w ww .ja va2s . c om*/ * @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 www .j av a 2s . c o 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.github.gurelkaynak.recommendationengine.core.RecommenderFactory.java
public ItemBasedRecommender buildItemBasedRecommender(DataModel dataModel) { ItemBasedRecommender recommender;//w w w .j a v a2 s.co m recommender = null; try { ItemSimilarity similarity = new CachingItemSimilarity(new TanimotoCoefficientSimilarity(dataModel), dataModel); recommender = new GenericItemBasedRecommender(dataModel, similarity); } catch (TasteException exception) { System.err.println(exception); } return recommender; }
From source file:com.mycompany.xplor_recommendation_engine.Xplor.java
/** * @param args the command line arguments * @throws java.sql.SQLException//from w w w .j ava 2s .co m * @throws java.io.IOException */ public static void main(String[] args) throws SQLException, IOException, TasteException { FileConverter fc = FileConverter.getFileConverter(); int[] columnSpecs = new int[2]; columnSpecs[0] = 2; columnSpecs[1] = 2; fc.convertToCSV("xplor_development", "blog_profile_maps", columnSpecs); // Calibrate recommender for csv file DataModel model = new FileDataModel(new File("blog_profile_maps.csv")); UserSimilarity similarity = new TanimotoCoefficientSimilarity(model); UserNeighborhood neighborhood = new ThresholdUserNeighborhood(0.1, similarity, model); Recommender recommender = new GenericBooleanPrefUserBasedRecommender(model, neighborhood, similarity); Recommender cachingRecommender = new CachingRecommender(recommender); // Establish JDBC connection for (int i = 1; i <= model.getNumUsers(); i++) { List<RecommendedItem> recommendations = cachingRecommender.recommend(i, 10); for (RecommendedItem recommendation : recommendations) { // Store recommendations in recommendations table } } // Store recommendations in database }
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();//from www .jav a2 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:edu.uci.ics.sourcerer.ml.ApiRecommender.java
License:Open Source License
public ApiRecommender(DataModel bcModel) throws TasteException { // UserSimilarity similarity = new EuclideanDistanceSimilarity(bcModel,Weighting.WEIGHTED); // UserSimilarity similarity = new LogLikelihoodSimilarity(bcModel); //UserSimilarity similarity = new PearsonCorrelationSimilarity(bcModel); UserSimilarity similarity = new TanimotoCoefficientSimilarity(bcModel); // UserSimilarity similarity = new MySqlTanimotoCoefficientUserSimilarity( // ManualPoolingMysqlDataSourceFactory.getDataSource( // "jdbc:mysql://mondego.calit2.uci.edu:3307/sourcerer_test", // "sourcerer", // "")); // UserSimilarity similarity = new HammingDistanceSimilarity(bcModel); UserNeighborhood neighborhood = new NearestNUserNeighborhood(15, 0.4, similarity, bcModel, 1.0); recommender = new CachingRecommender(new GenericUserBasedRecommender(bcModel, neighborhood, similarity)); }
From source file:edu.uci.ics.sourcerer.ml.db.tools.SimilarUserCalculatorTest.java
License:Open Source License
@Before public void setUp() throws FileNotFoundException, TasteException { startTime = System.currentTimeMillis(); File dataFile = new File(dataFileLocation); DataModel dm = new TasteFileModelWithStringItemIds(dataFile); suCalc.setDataModel(dm);/*from ww w . j a v a2s . c o m*/ suCalc.setNeighborhoodSize(100); suCalc.setSimilarityThreshold(0.3); suCalc.setUserSimilarity(new TanimotoCoefficientSimilarity(dm)); suCalc2.setDataModel(dm); suCalc2.setNeighborhoodSize(100); suCalc2.setSimilarityThreshold(0.3); suCalc2.setUserSimilarity(new HammingDistanceSimilarity(dm)); // suCalc.setUserSimilarity(new HammingDistanceSimilarity(dm)); // suCalc.setUserSimilarity(new PearsonCorrelationSimilarity(dm)); // suCalc.setUserSimilarity(new LogLikelihoodSimilarity(dm)); System.out.println("Setup time (hh:mm:ss) = " + TimeUtil.formatMs(System.currentTimeMillis() - startTime)); startTime = System.currentTimeMillis(); }