Example usage for org.apache.mahout.cf.taste.impl.similarity CachingUserSimilarity CachingUserSimilarity

List of usage examples for org.apache.mahout.cf.taste.impl.similarity CachingUserSimilarity CachingUserSimilarity

Introduction

In this page you can find the example usage for org.apache.mahout.cf.taste.impl.similarity CachingUserSimilarity CachingUserSimilarity.

Prototype

public CachingUserSimilarity(UserSimilarity similarity, int maxCacheSize) 

Source Link

Document

Creates this on top of the given UserSimilarity .

Usage

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);
}