Example usage for org.apache.mahout.math.stats LogLikelihood logLikelihoodRatio

List of usage examples for org.apache.mahout.math.stats LogLikelihood logLikelihoodRatio

Introduction

In this page you can find the example usage for org.apache.mahout.math.stats LogLikelihood logLikelihoodRatio.

Prototype

public static double logLikelihoodRatio(long k11, long k12, long k21, long k22) 

Source Link

Document

Calculates the Raw Log-likelihood ratio for two events, call them A and B.

Usage

From source file:org.codelibs.elasticsearch.taste.similarity.LogLikelihoodSimilarity.java

License:Apache License

@Override
public double userSimilarity(final long userID1, final long userID2) {

    final DataModel dataModel = getDataModel();
    final FastIDSet prefs1 = dataModel.getItemIDsFromUser(userID1);
    final FastIDSet prefs2 = dataModel.getItemIDsFromUser(userID2);

    final long prefs1Size = prefs1.size();
    final long prefs2Size = prefs2.size();
    final long intersectionSize = prefs1Size < prefs2Size ? prefs2.intersectionSize(prefs1)
            : prefs1.intersectionSize(prefs2);
    if (intersectionSize == 0) {
        return Double.NaN;
    }/*from   w w  w .  ja  va 2 s .  c  o m*/
    final long numItems = dataModel.getNumItems();
    final double logLikelihood = LogLikelihood.logLikelihoodRatio(intersectionSize,
            prefs2Size - intersectionSize, prefs1Size - intersectionSize,
            numItems - prefs1Size - prefs2Size + intersectionSize);
    return 1.0 - 1.0 / (1.0 + logLikelihood);
}

From source file:org.codelibs.elasticsearch.taste.similarity.LogLikelihoodSimilarity.java

License:Apache License

private double doItemSimilarity(final long itemID1, final long itemID2, final long preferring1,
        final long numUsers) {
    final DataModel dataModel = getDataModel();
    final long preferring1and2 = dataModel.getNumUsersWithPreferenceFor(itemID1, itemID2);
    if (preferring1and2 == 0) {
        return Double.NaN;
    }/*from   ww w .j  av  a 2  s  . co  m*/
    final long preferring2 = dataModel.getNumUsersWithPreferenceFor(itemID2);
    final double logLikelihood = LogLikelihood.logLikelihoodRatio(preferring1and2,
            preferring2 - preferring1and2, preferring1 - preferring1and2,
            numUsers - preferring1 - preferring2 + preferring1and2);
    return 1.0 - 1.0 / (1.0 + logLikelihood);
}

From source file:org.gpfvic.mahout.cf.taste.impl.similarity.LogLikelihoodSimilarity.java

License:Apache License

@Override
public double userSimilarity(long userID1, long userID2) throws TasteException {

    DataModel dataModel = getDataModel();
    FastIDSet prefs1 = dataModel.getItemIDsFromUser(userID1);
    FastIDSet prefs2 = dataModel.getItemIDsFromUser(userID2);

    long prefs1Size = prefs1.size();
    long prefs2Size = prefs2.size();
    long intersectionSize = prefs1Size < prefs2Size ? prefs2.intersectionSize(prefs1)
            : prefs1.intersectionSize(prefs2);
    if (intersectionSize == 0) {
        return Double.NaN;
    }//from  w w  w .j a v  a2s  .  c  o  m
    long numItems = dataModel.getNumItems();
    double logLikelihood = LogLikelihood.logLikelihoodRatio(intersectionSize, prefs2Size - intersectionSize,
            prefs1Size - intersectionSize, numItems - prefs1Size - prefs2Size + intersectionSize);
    return 1.0 - 1.0 / (1.0 + logLikelihood);
}

From source file:org.gpfvic.mahout.cf.taste.impl.similarity.LogLikelihoodSimilarity.java

License:Apache License

private double doItemSimilarity(long itemID1, long itemID2, long preferring1, long numUsers)
        throws TasteException {
    DataModel dataModel = getDataModel();
    long preferring1and2 = dataModel.getNumUsersWithPreferenceFor(itemID1, itemID2);
    if (preferring1and2 == 0) {
        return Double.NaN;
    }//  w  ww  . j  a v  a  2  s  .  co m
    long preferring2 = dataModel.getNumUsersWithPreferenceFor(itemID2);
    double logLikelihood = LogLikelihood.logLikelihoodRatio(preferring1and2, preferring2 - preferring1and2,
            preferring1 - preferring1and2, numUsers - preferring1 - preferring2 + preferring1and2);
    return 1.0 - 1.0 / (1.0 + logLikelihood);
}