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

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

Introduction

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

Prototype

public TanimotoCoefficientSimilarity(DataModel dataModel) 

Source Link

Usage

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

}