List of usage examples for org.apache.mahout.cf.taste.model Preference getItemID
long getItemID();
From source file:GavaFactorizer.java
License:Apache License
private void cachePreferences() throws TasteException { int numPreferences = countPreferences(); cachedUserIDs = new long[numPreferences]; cachedItemIDs = new long[numPreferences]; LongPrimitiveIterator userIDs = dataModel.getUserIDs(); int index = 0; while (userIDs.hasNext()) { long userID = userIDs.nextLong(); PreferenceArray preferencesFromUser = dataModel.getPreferencesFromUser(userID); for (Preference preference : preferencesFromUser) { cachedUserIDs[index] = userID; cachedItemIDs[index] = preference.getItemID(); index++;/*from w w w .j av a2s .c o m*/ } } }
From source file:com.anjuke.romar.mahout.util.Util.java
License:Apache License
public static void applyAdd(FastByIDMap<PreferenceArray> data, Preference addPreference) { long userID = addPreference.getUserID(); long itemID = addPreference.getItemID(); float preferenceValue = addPreference.getValue(); PreferenceArray prefs = data.get(userID); boolean exists = false; if (prefs != null) { for (int i = 0; i < prefs.length(); i++) { if (prefs.getItemID(i) == itemID) { exists = true;/* ww w . ja v a 2 s . c o m*/ prefs.setValue(i, preferenceValue); break; } } } if (!exists) { if (prefs == null) { prefs = new GenericUserPreferenceArray(1); } else { PreferenceArray newPrefs = new GenericUserPreferenceArray(prefs.length() + 1); for (int i = 0, j = 1; i < prefs.length(); i++, j++) { newPrefs.set(j, prefs.get(i)); } prefs = newPrefs; } prefs.setUserID(0, userID); prefs.setItemID(0, itemID); prefs.setValue(0, preferenceValue); data.put(userID, prefs); } }
From source file:com.anjuke.romar.mahout.util.Util.java
License:Apache License
public static void applyRemove(FastByIDMap<PreferenceArray> data, Preference removePreference) { long userID = removePreference.getUserID(); long itemID = removePreference.getItemID(); PreferenceArray prefs = data.get(userID); if (prefs != null) { boolean exists = false; int length = prefs.length(); for (int i = 0; i < length; i++) { if (prefs.getItemID(i) == itemID) { exists = true;//from w w w .ja v a2 s. c o m break; } } if (exists) { if (length == 1) { data.remove(userID); } else { PreferenceArray newPrefs = new GenericUserPreferenceArray(length - 1); for (int i = 0, j = 0; i < length; i++, j++) { if (prefs.getItemID(i) == itemID) { j--; } else { newPrefs.set(j, prefs.get(i)); } } data.put(userID, newPrefs); } } } }
From source file:com.innometrics.integration.app.recommender.ml.als.ALSWRFactorizer.java
License:Apache License
protected Vector sparseUserRatingVector(PreferenceArray prefs) { SequentialAccessSparseVector ratings = new SequentialAccessSparseVector(Integer.MAX_VALUE, prefs.length()); for (Preference preference : prefs) { ratings.set(itemIndex(preference.getItemID()), preference.getValue()); }/*from www . ja v a 2 s . co m*/ return ratings; }
From source file:com.msiiplab.recsys.rwr.GLRecommenderIRStatsEvaluator.java
License:Apache License
protected FastByIDMap<Preference> getPrefereceMap(PreferenceArray userPreferences) { FastByIDMap<Preference> map = new FastByIDMap<Preference>(); for (Preference pref : userPreferences) { map.put(pref.getItemID(), pref); }/*w w w.j a v a 2s . c om*/ return map; }
From source file:com.msiiplab.recsys.rwr.GLRecommenderIRStatsEvaluator.java
License:Apache License
protected double computeNDCG(PreferenceArray userPreferences, PreferenceArray userPredictions, FastIDSet relevantItemIDs, FastByIDMap<Preference> userPreferenceMap, int at) { double cumulativeGain = 0.0; double idealizedGain = 0.0; // compute IDCG Iterator<Preference> it_pref = userPreferences.iterator(); int i = 0;//from w w w . j ava 2s . c o m while (it_pref.hasNext()) { it_pref.next(); if (i < at) { idealizedGain += 1.0 / log2(i + 2.0); ; } else { break; } i++; } // compute DCG it_pref = userPredictions.iterator(); i = 0; while (it_pref.hasNext()) { Preference pref = it_pref.next(); long itemID = pref.getItemID(); if (relevantItemIDs.contains(itemID) && i < at) { cumulativeGain += 1.0 / log2(i + 2.0); ; } i++; } if (idealizedGain > 0) { return cumulativeGain / idealizedGain; } else { return 0; } }
From source file:com.msiiplab.recsys.rwr.GLRecommenderIRStatsEvaluator.java
License:Apache License
protected double computeRNDCG(PreferenceArray userPreferences, PreferenceArray userPredictions, FastIDSet relevantItemIDs, FastByIDMap<Preference> userPreferenceMap, int at) { double rCumulativeGain = 0.0; double rIdealizedGain = 0.0; // compute IDCG Iterator<Preference> it_pref = userPreferences.iterator(); int i = 0;/*ww w.ja v a 2 s .c o m*/ while (it_pref.hasNext()) { Preference pref = it_pref.next(); if (i < at) { double discount = 1.0 / log2(i + 2.0); float rel = pref.getValue(); rIdealizedGain += rel * discount; } else { break; } i++; } // compute DCG it_pref = userPredictions.iterator(); i = 0; while (it_pref.hasNext()) { Preference pref = it_pref.next(); long itemID = pref.getItemID(); if (relevantItemIDs.contains(itemID) && i < at) { double discount = 1.0 / log2(i + 2.0); float rel = userPreferenceMap.get(itemID).getValue(); rCumulativeGain += rel * discount; } i++; } if (rIdealizedGain > 0) { return rCumulativeGain / rIdealizedGain; } else { return 0; } }
From source file:com.mykidscart.mahout_service.RecommenderServlet.java
License:Apache License
private void writeDebugRecommendations(long userID, Iterable<RecommendedItem> items, PrintWriter writer) throws TasteException { DataModel dataModel = recommender.getDataModel(); writer.print("User:"); writer.println(userID);//from w ww . j a v a2 s .c om writer.print("Recommender: "); writer.println(recommender); writer.println(); writer.print("Top "); writer.print(NUM_TOP_PREFERENCES); writer.println(" Preferences:"); PreferenceArray rawPrefs = dataModel.getPreferencesFromUser(userID); int length = rawPrefs.length(); PreferenceArray sortedPrefs = rawPrefs.clone(); sortedPrefs.sortByValueReversed(); // Cap this at NUM_TOP_PREFERENCES just to be brief int max = Math.min(NUM_TOP_PREFERENCES, length); for (int i = 0; i < max; i++) { Preference pref = sortedPrefs.get(i); writer.print(pref.getValue()); writer.print('\t'); writer.println(pref.getItemID()); } writer.println(); writer.println("Recommendations:"); for (RecommendedItem recommendedItem : items) { writer.print(recommendedItem.getValue()); writer.print('\t'); writer.println(recommendedItem.getItemID()); } }
From source file:de.tuberlin.dima.recsys.ssnmm.interactioncut.BiasedItemBasedRecommender.java
License:Apache License
public BiasedItemBasedRecommender(DataModel dataModel, ItemSimilarity similarity, int k, double lambda2, double lambda3) throws TasteException { super(dataModel, similarity); this.k = k;//from w w w . j a v a 2s . c om this.similarity = similarity; RunningAverage averageRating = new FullRunningAverage(); LongPrimitiveIterator itemIDs = getDataModel().getItemIDs(); while (itemIDs.hasNext()) { for (Preference pref : getDataModel().getPreferencesForItem(itemIDs.next())) { averageRating.addDatum(pref.getValue()); } } mu = averageRating.getAverage(); itemBiases = new OpenLongDoubleHashMap(getDataModel().getNumItems()); userBiases = new OpenLongDoubleHashMap(getDataModel().getNumUsers()); itemIDs = getDataModel().getItemIDs(); while (itemIDs.hasNext()) { long itemID = itemIDs.nextLong(); PreferenceArray preferences = getDataModel().getPreferencesForItem(itemID); double sum = 0; for (Preference pref : preferences) { sum += pref.getValue() - mu; } double bi = sum / (lambda2 + preferences.length()); itemBiases.put(itemID, bi); } LongPrimitiveIterator userIDs = getDataModel().getUserIDs(); while (userIDs.hasNext()) { long userID = userIDs.nextLong(); PreferenceArray preferences = getDataModel().getPreferencesFromUser(userID); double sum = 0; for (Preference pref : preferences) { sum += pref.getValue() - mu - itemBiases.get(pref.getItemID()); } double bu = sum / (lambda3 + preferences.length()); userBiases.put(userID, bu); } }
From source file:edu.uniandes.yelp.recommender.CFRecommender.java
public List<Business> recommend(long userID) { try {/* w ww . j ava2 s.co m*/ List<RecommendedItem> items = recommender.recommend(userID, 10); List<ObjectId> ids = new LinkedList<>(); System.out.println("user: " + dm.fromLongToId(userID)); System.out.println("count: " + items.size()); System.out.println("max preference: " + dm.getMaxPreference()); System.out.println("min preference: " + dm.getMinPreference()); for (Preference p : dm.getPreferencesFromUser(userID)) { System.out.println("preferencia: item: " + p.getItemID() + " value: " + p.getValue()); } items.stream().forEach((item) -> { System.out.println("item : " + item.getItemID()); ids.add(new ObjectId(dm.fromLongToId(item.getItemID()))); }); List<Business> datos = businessService.getBusiness(ids); return datos; } catch (TasteException ex) { Logger.getLogger(CFRecommender.class.getName()).log(Level.SEVERE, null, ex); return new LinkedList<>(); } }