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

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

Introduction

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

Prototype

public EuclideanDistanceSimilarity(DataModel dataModel) throws TasteException 

Source Link

Usage

From source file:com.corchado.testRecomender.recomendador.java

/**
 * @param args the command line arguments
 * @throws java.io.IOException/*  w w w  . j  av a  2s  . co m*/
 * @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 w w  w .j  av  a2  s  .  co 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.staticvillage.recommender.PlaceRecommender.java

License:Apache License

public PlaceRecommender(DataModel model, int neighborhoodSize, Indexer<Place> indexer, GeoPoint geoPoint)
        throws TasteException {
    this.model = model;
    this.indexer = indexer;
    this.geoPoint = geoPoint;

    UserSimilarity similarity = new EuclideanDistanceSimilarity(model);
    UserNeighborhood neighborhood = new NearestNUserNeighborhood(neighborhoodSize, similarity, model);

    delegate = new GenericUserBasedRecommender(model, neighborhood, similarity);
}

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  w w . ja va  2 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:final_mahout.Final_Mahout.java

/**
 * @param args the command line arguments
 *///from w w  w .j  av  a2 s . c o  m
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:net.aprendizajengrande.gitrecommender.Experiment.java

License:Open Source License

public static void main(String[] args) throws Exception {

    DataModel model = new FileDataModel(new File(args[0]));

    System.out.println("For repo: " + args[0]);
    System.out.println("User-based:");

    RecommenderEvaluator evaluator = new RMSRecommenderEvaluator();
    RecommenderBuilder recommenderBuilder = new RecommenderBuilder() {
        @Override//from w w  w. ja  va2 s .c om
        public Recommender buildRecommender(DataModel model) throws TasteException {
            UserSimilarity similarity = new PearsonCorrelationSimilarity(model);
            UserNeighborhood neighborhood = new NearestNUserNeighborhood(2, similarity, model);
            return new GenericUserBasedRecommender(model, neighborhood, similarity);
        }
    };
    // Use 90% of the data to train; test using the other 10%.
    double score = evaluator.evaluate(recommenderBuilder, null, model, 0.9, 1.0);
    System.out.println(score);

    recommenderBuilder = new RecommenderBuilder() {
        @Override
        public Recommender buildRecommender(DataModel model) throws TasteException {
            ItemSimilarity similarity = new EuclideanDistanceSimilarity(model);
            //new LogLikelihoodSimilarity(model);
            return new GenericItemBasedRecommender(model, similarity);
        }
    };
    System.out.println("Item-based:");
    score = evaluator.evaluate(recommenderBuilder, null, model, 0.9, 1.0);
    System.out.println(score);
}

From source file:nl.gridline.zieook.tasks.quality.MahoutEvaluatorTest.java

License:Apache License

@Test
public void testEuclideanDistanceSimilarity() throws TasteException, IOException {
    RandomUtils.useTestSeed();//from   w  w w  . j  a v a 2s. co  m

    LOG.info("testing EuclideanDistanceSimilarity:");
    DataModel model = new FileDataModel(testData);

    AverageAbsoluteDifferenceRecommenderEvaluator evaluator = new AverageAbsoluteDifferenceRecommenderEvaluator();
    RMSRecommenderEvaluator rmsEvaluator = new RMSRecommenderEvaluator();

    GenericRecommenderIRStatsEvaluator evaluatorIR = new GenericRecommenderIRStatsEvaluator();

    RecommenderBuilder builder = new RecommenderBuilder() {
        @Override
        public Recommender buildRecommender(DataModel model) throws TasteException {
            EuclideanDistanceSimilarity similarity = new EuclideanDistanceSimilarity(model);
            UserNeighborhood neighborhood = new NearestNUserNeighborhood(2, similarity, model);
            return new GenericUserBasedRecommender(model, neighborhood, similarity);
        }
    };

    long start = System.currentTimeMillis();
    double score = evaluator.evaluate(builder, null, model, 0.7, 1.0);
    LOG.info("average score: {} in {}s", String.format("%.4f", score),
            ((System.currentTimeMillis() - start) / 1000));

    start = System.currentTimeMillis();
    score = rmsEvaluator.evaluate(builder, null, model, 0.7, 1.0);
    LOG.info("rms score: {} in {}s", String.format("%.4f", score),
            ((System.currentTimeMillis() - start) / 1000));

    start = System.currentTimeMillis();
    IRStatistics stats = evaluatorIR.evaluate(builder, null, model, null, 2,
            GenericRecommenderIRStatsEvaluator.CHOOSE_THRESHOLD, 1.0);

    LOG.info("precision: {} recall: {} in {}s", new Object[] { String.format("%.4f", stats.getPrecision()),
            String.format("%.4f", stats.getRecall()), ((System.currentTimeMillis() - start) / 1000) });
}

From source file:org.eclipse.agail.recommenderserver.collaborative.CollaborativeFiltering.java

License:Open Source License

private void applyCollaborativeFiltering(GatewayProfile profile) {

    int userID = addNewItemsandUser(profile);
    System.out.println("userID: " + userID);

    try {//  ww  w . j  a  v a 2s . c  o m
        // load the data from the file with format "userID,itemID,value"
        DataModel model = new FileDataModel(new File(userProfilesFile));

        //  compute the correlation coefficient between their interactions
        //UserSimilarity similarity = new PearsonCorrelationSimilarity(model);
        UserSimilarity similarity = new EuclideanDistanceSimilarity(model);
        // we'll use all that have a similarity greater than 0.1
        UserNeighborhood neighborhood = new ThresholdUserNeighborhood(0.1, similarity, model);
        //UserNeighborhood neighborhood = new NearestNUserNeighborhood(3, similarity, model);

        // all the pieces to create our recommender
        UserBasedRecommender recommender = new GenericUserBasedRecommender(model, neighborhood, similarity);

        //  get 10 items recommended for the user with userID 
        recommendations = recommender.recommend(userID, 10);

        for (RecommendedItem recommendation : recommendations) {
            System.out.println(recommendation);
            String item = getItem(recommendation.getItemID());
            if (item.split(",")[0].contains("App")) {
                apps.getAppList().add(new App("App", item.split(",")[1], 0, 0));
            } else if (item.split(",")[0].contains("Device")) {
                devs.getDeviceList().add(new Device("Device", item.split(",")[1]));
            } else if (item.split(",")[0].contains("Workflow")) {
                wfs.getWfList().add(new Workflow("Workflow", "Workflow", "Workflow", item.split(",")[1]));
            } else if (item.split(",")[0].contains("Cloud")) {
                clouds.getCloudList().add(new Cloud("Cloud", item.split(",")[1], "", "", "", "", "", "", ""));
            }
        }

    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

From source file:org.eclipse.agail.recommenderserver.Test.java

License:Open Source License

public static void testCollaborativeFiltering() {

    System.out.println("testCollaborativeFiltering");

    try {/*  w  ww. j  av a2s .c o m*/
        // load the data from the file with format "userID,itemID,value"
        DataModel model = new FileDataModel(new File(testFile2));

        //  compute the correlation coefficient between their interactions
        UserSimilarity similarity = new EuclideanDistanceSimilarity(model);

        double similar = similarity.userSimilarity(1, 2);
        System.out.println(similar);

        // we'll use all that have a similarity greater than 0.1
        UserNeighborhood neighborhood = new ThresholdUserNeighborhood(0.1, similarity, model);

        // all the pieces to create our recommender
        UserBasedRecommender recommender = new GenericUserBasedRecommender(model, neighborhood, similarity);

        //  get three items recommended for the user with userID 2
        List<RecommendedItem> recommendations = recommender.recommend(2, 10);
        for (RecommendedItem recommendation : recommendations) {
            System.out.println(recommendation);
        }

    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

}

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