List of usage examples for org.apache.mahout.cf.taste.impl.neighborhood ThresholdUserNeighborhood ThresholdUserNeighborhood
public ThresholdUserNeighborhood(double threshold, UserSimilarity userSimilarity, DataModel dataModel)
From source file:UserbasedRecommender.java
License:Apache License
/** * Method that creates a list of recommendations based on collaborative filtering * //from ww w. ja va2 s. co m * @param model the data needed. The data is what is stored at the moment in the collaborativ_view in the database. * @return the list of computed recommendations */ public ArrayList<CollaborativeRecommendation> RunUserbasedRecommender(DataModel model) { ArrayList<CollaborativeRecommendation> recommendedItemsList = new ArrayList<CollaborativeRecommendation>(); try { /*Comparing the user interactions. This computes the correlation coefficient between user interactions.*/ UserSimilarity similarity = new PearsonCorrelationSimilarity(model); /*Deciding for which users to affect the recommender. Here we use all that have a similarity greater than 0.1 */ UserNeighborhood neighborhood = new ThresholdUserNeighborhood(0.1, similarity, model); /*Recommender*/ UserBasedRecommender recommender = new GenericUserBasedRecommender(model, neighborhood, similarity); /*Get recommendations for this userId*/ List<RecommendedItem> recommendations = recommender.recommend(userId, 167); if (!recommendations.isEmpty()) { for (RecommendedItem recommendation : recommendations) { recommendedItemsList .add(new CollaborativeRecommendation(recommendation, (int) userId, "user based")); } } else { /*There are no recommendations for this user*/ System.out.println("No recommendations for this user in userbased"); } } catch (TasteException e) { e.printStackTrace(); } return recommendedItemsList; }
From source file:com.checkup.mahout.test.ExampleTest.java
@Test public void quickstart() throws IOException, TasteException { DataModel model = new FileDataModel(new File(Resources.quickstart_csv.getFile())); UserSimilarity similarity = new PearsonCorrelationSimilarity(model); UserNeighborhood neighborhood = new ThresholdUserNeighborhood(0.1, similarity, model); UserBasedRecommender recommender = new GenericUserBasedRecommender(model, neighborhood, similarity); List<RecommendedItem> recommendations = recommender.recommend(2, 3); for (RecommendedItem recommendation : recommendations) { System.out.println(recommendation); }//from ww w . j av a2 s . c om }
From source file:com.github.gurelkaynak.recommendationengine.core.RecommenderFactory.java
public Recommender buildUserBasedRecommender(DataModel dataModel) { Recommender recommender;/*from ww w .j av a 2 s . co m*/ recommender = null; try { UserSimilarity similarity = new CachingUserSimilarity( new PearsonCorrelationSimilarity(dataModel, Weighting.WEIGHTED), dataModel); UserNeighborhood neighborhood; switch (this.userNeighborhoodAlgorithm) { case "threshold": neighborhood = new ThresholdUserNeighborhood(this.thresholdValue, similarity, dataModel); break; case "nearestnuser": neighborhood = new NearestNUserNeighborhood(this.nearestNUserValue, similarity, dataModel); break; default: neighborhood = new ThresholdUserNeighborhood(this.thresholdValue, similarity, dataModel); break; } recommender = new GenericUserBasedRecommender(dataModel, neighborhood, similarity); } catch (TasteException exception) { System.err.println(exception); } return recommender; }
From source file:com.mycompany.mahoutrecco.App.java
public static void main(String[] args) throws Exception { DataModel model = new FileDataModel(new File("data/justBeforeMahout.csv")); UserSimilarity similarity = new PearsonCorrelationSimilarity(model); UserNeighborhood neighborhood = new ThresholdUserNeighborhood(0.1, similarity, model); UserBasedRecommender recommender = new GenericUserBasedRecommender(model, neighborhood, similarity); List<RecommendedItem> recommendations = recommender.recommend(503046, 5); System.out.println(recommendations); for (RecommendedItem recommendation : recommendations) { System.out.println(recommendation); }/*from ww w .ja v a2s . c o m*/ }
From source file:com.mycompany.mavenproject1.Recommendor.java
public static void main(String[] args) throws Exception { DataModel model = new FileDataModel(new File("src/Data/data.csv")); UserSimilarity similarity = new PearsonCorrelationSimilarity(model); UserNeighborhood neighborhood = new ThresholdUserNeighborhood(2, similarity, model); UserBasedRecommender recommender = new GenericUserBasedRecommender(model, neighborhood, similarity); List<RecommendedItem> recommendations = recommender.recommend(1, 1); for (RecommendedItem recommendation : recommendations) { System.out.println(recommendation); }//ww w . ja va2 s . c o m }
From source file:com.mycompany.xplor_recommendation_engine.Xplor.java
/** * @param args the command line arguments * @throws java.sql.SQLException/*from ww w . j a v a 2 s.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();/* w ww. ja v a 2s . com*/ } 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 ww . j av a 2 s . c om*/ 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:fr.paris.lutece.plugins.recommendation.service.RecommendationService.java
License:Open Source License
/** * Initialize a recommender/*from w w w . ja va 2 s . c om*/ * @param strName The recommender name * @return The recommender */ private static UserBasedRecommender initRecommender(String strName) { try { AppLogService.info("Initialize Mahout JDBC DataModel for Recommender '" + strName + "'"); String strKeyPrefix = PREFIX + strName; String strDataSource = AppPropertiesService.getProperty(strKeyPrefix + PROPERTY_DATASOURCE); AppLogService.info("- DataSource = " + strDataSource); String strPrefTable = AppPropertiesService.getProperty(strKeyPrefix + PROPERTY_PREF_TABLE); AppLogService.info("- Table = " + strPrefTable); String strUserIdColumn = AppPropertiesService.getProperty(strKeyPrefix + PROPERTY_USER_ID_COL); AppLogService.info("- User ID Column = " + strUserIdColumn); String strItemIdColumn = AppPropertiesService.getProperty(strKeyPrefix + PROPERTY_ITEM_ID_COL); AppLogService.info("- Item ID Column = " + strItemIdColumn); String strPrefColumn = AppPropertiesService.getProperty(strKeyPrefix + PROPERTY_PREF_COL); AppLogService.info("- Pref Column = " + strPrefColumn); PoolManager pm = AppConnectionService.getPoolManager(); DataSource dataSource = pm.getDataSource(strDataSource); DataModel model = new MySQLJDBCDataModel(dataSource, strPrefTable, strUserIdColumn, strItemIdColumn, strPrefColumn, null); UserSimilarity similarity = new PearsonCorrelationSimilarity(model); UserNeighborhood neighborhood = new ThresholdUserNeighborhood(0.1, similarity, model); return new GenericUserBasedRecommender(model, neighborhood, similarity); } catch (TasteException ex) { AppLogService.error("Error loading recommender : " + ex.getMessage(), ex); } return null; }
From source file:hr.fer.tel.rovkp.homework03.task02.RecommenderUtils.java
public static GenericUserBasedRecommender userBasedRecommender(DataModel model) throws TasteException { UserSimilarity similarity = new PearsonCorrelationSimilarity(model); UserNeighborhood neighborhood = new ThresholdUserNeighborhood(0.9, similarity, model); return new GenericUserBasedRecommender(model, neighborhood, similarity); }