List of usage examples for org.apache.mahout.cf.taste.impl.similarity CachingUserSimilarity CachingUserSimilarity
public CachingUserSimilarity(UserSimilarity similarity, int maxCacheSize)
From source file:com.anjuke.romar.mahout.factory.MahoutServiceUserRecommendFactory.java
License:Apache License
@Override public MahoutService createService() { RomarConfig config = RomarConfig.getInstance(); Recommender recommender;/*from w ww . j av a 2s .c o m*/ DataModel dataModel = PersistenceDataModelFactory.createDataModel(config); UserSimilarity similarity; if (config.isUseFileSimilarity()) { File file = new File(config.getSimilarityFile()); if (!file.exists()) { throw new IllegalArgumentException("similairy file not exists"); } if (!file.isFile()) { throw new IllegalArgumentException("similairy file is a directory"); } IteratorBuiler<UserUserSimilarity> iteratorBuilder; if (config.isBinarySimilarityFile()) { iteratorBuilder = RomarFileSimilarityIterator.dataFileUserIteratorBuilder(); } else { iteratorBuilder = RomarFileSimilarityIterator.lineFileUserIteratorBuilder(); } similarity = new RomarFileUserSimilarity(file, iteratorBuilder); } else { similarity = createSimilarity(config, dataModel); if (config.isUseSimilariyCache()) { similarity = new CachingUserSimilarity(similarity, config.getSimilarityCacheSize()); } } UserNeighborhood neighborhood = ClassUtils.instantiateAs(config.getUserNeighborhoodClass(), UserNeighborhood.class, new Class<?>[] { int.class, UserSimilarity.class, DataModel.class }, new Object[] { config.getUserNeighborhoodNearestN(), similarity, dataModel }); recommender = new GenericUserBasedRecommender(dataModel, neighborhood, similarity); return new RecommenderWrapper(recommender); }
From source file:com.buddycloud.channeldirectory.search.handler.common.mahout.ChannelRecommender.java
License:Apache License
public ChannelRecommender(Properties properties) throws TasteException { this.recommenderDataModel = createDataModel(properties); DataModel dataModel = recommenderDataModel.getDataModel(); UserSimilarity userSimilarity = new CachingUserSimilarity(new LogLikelihoodSimilarity(dataModel), MAX_CACHE_SIZE);//from www .j a v a 2s .c o m this.userNeighborhood = new NearestNUserNeighborhood(10, Double.NEGATIVE_INFINITY, userSimilarity, dataModel, 1.0); this.userRecommender = new GenericBooleanPrefUserBasedRecommender(dataModel, userNeighborhood, userSimilarity); this.itemSimilarity = new LogLikelihoodSimilarity(dataModel); }
From source file:com.github.gurelkaynak.recommendationengine.core.RecommenderFactory.java
public Recommender buildUserBasedRecommender(DataModel dataModel) { Recommender recommender;//from ww w . ja va 2 s.c o 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:norbert.mynemo.core.recommendation.recommender.UserSimilarityRecommender.java
License:Apache License
private UserSimilarity createSimilarity(DataModel dataModel) throws TasteException { UserSimilarity selectedSimilarity;/* ww w . jav a2s . c om*/ switch (configuration.getType()) { case USER_SIMILARITY_WITH_CITY_BLOCK_DISTANCE: selectedSimilarity = new CityBlockSimilarity(dataModel); break; case USER_SIMILARITY_WITH_EUCLIDEAN_DISTANCE: selectedSimilarity = new EuclideanDistanceSimilarity(dataModel, Weighting.UNWEIGHTED); break; case USER_SIMILARITY_WITH_LOG_LIKELIHOOD: selectedSimilarity = new LogLikelihoodSimilarity(dataModel); break; case USER_SIMILARITY_WITH_ORIGINAL_SPEARMAN_CORRELATION: selectedSimilarity = new OriginalSpearmanCorrelationSimilarity(dataModel); break; case USER_SIMILARITY_WITH_PEARSON_CORRELATION: selectedSimilarity = new PearsonCorrelationSimilarity(dataModel, Weighting.UNWEIGHTED); break; case USER_SIMILARITY_WITH_SPEARMAN_CORRELATION: selectedSimilarity = new SpearmanCorrelationSimilarity(dataModel); break; case USER_SIMILARITY_WITH_TANIMOTO_COEFFICIENT: selectedSimilarity = new TanimotoCoefficientSimilarity(dataModel); break; case USER_SIMILARITY_WITH_UNCENTERED_COSINE: selectedSimilarity = new UncenteredCosineSimilarity(dataModel, Weighting.UNWEIGHTED); break; case USER_SIMILARITY_WITH_WEIGHTED_EUCLIDEAN_DISTANCE: selectedSimilarity = new EuclideanDistanceSimilarity(dataModel, Weighting.WEIGHTED); break; case USER_SIMILARITY_WITH_WEIGHTED_PEARSON_CORRELATION: selectedSimilarity = new PearsonCorrelationSimilarity(dataModel, Weighting.WEIGHTED); break; case USER_SIMILARITY_WITH_WEIGHTED_UNCENTERED_COSINE: selectedSimilarity = new UncenteredCosineSimilarity(dataModel, Weighting.WEIGHTED); break; default: throw new IllegalStateException(); } int cacheSize = Math.min(dataModel.getNumUsers() * dataModel.getNumUsers(), MAXIMUM_CACHE_SIZE); return new CachingUserSimilarity(selectedSimilarity, cacheSize); }
From source file:org.zaizi.mahout.config.ClassNameSimilarityConfiguration.java
License:Open Source License
public UserSimilarity getUserSimilarity(DataModel dataModel) throws TasteException { try {/* w w w . j a v a2 s .com*/ Class<UserSimilarity> similarityClass = (Class<UserSimilarity>) getClass().getClassLoader() .loadClass(getSimilarityClassName()); Constructor<UserSimilarity> ctor = similarityClass.getDeclaredConstructor(DataModel.class); CachingUserSimilarity userSimilarity = new CachingUserSimilarity(ctor.newInstance(dataModel), dataModel); return userSimilarity; } catch (Exception exc) { if (exc instanceof TasteException) throw (TasteException) exc; else throw new TasteException(exc); } }
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); }