List of usage examples for org.apache.mahout.math.stats LogLikelihood logLikelihoodRatio
public static double logLikelihoodRatio(long k11, long k12, long k21, long k22)
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); }