Example usage for org.apache.mahout.cf.taste.model Preference getItemID

List of usage examples for org.apache.mahout.cf.taste.model Preference getItemID

Introduction

In this page you can find the example usage for org.apache.mahout.cf.taste.model Preference getItemID.

Prototype

long getItemID();

Source Link

Usage

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