Package org.apache.mahout.cf.taste.impl.common

Examples of org.apache.mahout.cf.taste.impl.common.FullRunningAverage


      PreferenceArray prefs = dataModel.getPreferencesFromUser(key);
      int size = prefs.length();
      if (size == 0) {
        return ZERO;
      }
      RunningAverage average = new FullRunningAverage();
      for (int i = 0; i < size; i++) {
        average.addDatum(prefs.getValue(i));
      }
      return (float) average.getAverage();
    }
View Full Code Here


    }
    return createFactorization(userVectors, itemVectors);
  }

  double getAveragePreference() throws TasteException {
    RunningAverage average = new FullRunningAverage();
    LongPrimitiveIterator userIDs = dataModel.getUserIDs();
    while (userIDs.hasNext()) {
      for (Preference preference : dataModel.getPreferencesFromUser(userIDs.nextLong())) {
        average.addDatum(preference.getValue());
      }
    }
    return average.getAverage();
  }
View Full Code Here

    }
   
    @Override
    public double estimate(Long itemID) throws TasteException {
      DataModel dataModel = getDataModel();
      RunningAverage average = new FullRunningAverage();
      LongPrimitiveIterator it = cluster.iterator();
      while (it.hasNext()) {
        Float pref = dataModel.getPreferenceValue(it.nextLong(), itemID);
        if (pref != null) {
          average.addDatum(pref);
        }
      }
      return average.getAverage();
    }
View Full Code Here

      userBiases.put(userID, bias);
    }
  }

  private double averageRating() throws TasteException {
    RunningAverage averageRating = new FullRunningAverage();
    LongPrimitiveIterator itemIDs = getDataModel().getItemIDs();
    while (itemIDs.hasNext()) {
      for (Preference pref : getDataModel().getPreferencesForItem(itemIDs.next())) {
        averageRating.addDatum(pref.getValue());
      }
    }
    return averageRating.getAverage();
  }
View Full Code Here

   */
  private static Split categoricalSplit(Data data, int attr) {
    FullRunningAverage[] ra = new FullRunningAverage[data.getDataset().nbValues(attr)];
    double[] sk = new double[data.getDataset().nbValues(attr)];
    for (int i = 0; i < ra.length; i++) {
      ra[i] = new FullRunningAverage();
    }
    FullRunningAverage totalRa = new FullRunningAverage();
    double totalSk = 0.0;

    for (int i = 0; i < data.size(); i++) {
      // computes the variance
      Instance instance = data.get(i);
      int value = (int) instance.get(attr);
      double xk = data.getDataset().getLabel(instance);
      if (ra[value].getCount() == 0) {
        ra[value].addDatum(xk);
        sk[value] = 0.0;
      } else {
        double mk = ra[value].getAverage();
        ra[value].addDatum(xk);
        sk[value] += (xk - mk) * (xk - ra[value].getAverage());
      }

      // total variance
      if (i == 0) {
        totalRa.addDatum(xk);
        totalSk = 0.0;
      } else {
        double mk = totalRa.getAverage();
        totalRa.addDatum(xk);
        totalSk += (xk - mk) * (xk - totalRa.getAverage());
      }
    }

    // computes the variance gain
    double ig = totalSk;
View Full Code Here

   * Computes the best split for a NUMERICAL attribute
   */
  private static Split numericalSplit(Data data, int attr) {
    FullRunningAverage[] ra = new FullRunningAverage[2];
    for (int i = 0; i < ra.length; i++) {
      ra[i] = new FullRunningAverage();
    }

    // Instance sort
    Instance[] instances = new Instance[data.size()];
    for (int i = 0; i < data.size(); i++) {
View Full Code Here

      if (hasMkSk) {
        double mk = Double.parseDouble(tokens[4]);
        double sk = Double.parseDouble(tokens[5]);
        average = new FullRunningAverageAndStdDev(count, diff, mk, sk);
      } else {
        average = new FullRunningAverage(count, diff);
      }
      level1Map.put(itemID2, average);
      averageCount++;
    }
View Full Code Here

  // Use RMSE scoring:

  @Override
  protected void reset() {
    average = new FullRunningAverage();
  }
View Full Code Here

    this.values = new float[numPrefs];
    this.cachedEstimates = new double[numPrefs];

    index = 0;
    log.info("Loading {} preferences into memory", numPrefs);
    RunningAverage average = new FullRunningAverage();
    for (Preference preference : factorizablePreferences.getPreferences()) {
      userIndexes[index] = userIDMapping.get(preference.getUserID());
      itemIndexes[index] = itemIDMapping.get(preference.getItemID());
      values[index] = preference.getValue();
      cachedEstimates[index] = 0;

      average.addDatum(preference.getValue());

      index++;
      if (index % 1000000 == 0) {
        log.info("Processed {} preferences", index);
      }
    }
    log.info("Processed {} preferences, done.", index);

    double averagePreference = average.getAverage();
    log.info("Average preference value is {}", averagePreference);

    double prefInterval = factorizablePreferences.getMaxPreference() - factorizablePreferences.getMinPreference();
    defaultValue = Math.sqrt((averagePreference - prefInterval * 0.1) / numFeatures);
    interval = prefInterval * 0.1 / numFeatures;
View Full Code Here

    info.append(MathHelper.nice(Ak));
    info.append('\n');

    log.info(info.toString());

    RunningAverage avg = new FullRunningAverage();
    for (MatrixSlice slice : preferences) {
      for (Element e : slice.nonZeroes()) {
        if (!Double.isNaN(e.get())) {
          double pref = e.get();
          double estimate = u.viewRow(slice.index()).dot(m.viewRow(e.index()));
          double err = pref - estimate;
          avg.addDatum(err * err);
          log.info("Comparing preference of user [{}] towards item [{}], was [{}] estimate is [{}]",
                   slice.index(), e.index(), pref, estimate);
        }
      }
    }
    double rmse = Math.sqrt(avg.getAverage());
    log.info("RMSE: {}", rmse);

    assertTrue(rmse < 0.2);
  }
View Full Code Here

TOP

Related Classes of org.apache.mahout.cf.taste.impl.common.FullRunningAverage

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.