public void increment(double x, Object y) {
    KernelRegression kreg;
    double score;

    // increment all categories
    for (Object o : kernelRegressionMap.keySet()) {
      kreg = kernelRegressionMap.get(o);
      score = itemScoring.computeCategoryScore(o, y);
      kreg.increment(x, score);
    }

    // increment item
    score = itemScoring.computeItemScore(y);
    expectedScore.increment(x, score);
  }
  public void initializeCategories() {
    expectedScore = new KernelRegression(kernel, bandwidth, uniform);

    // add all categories to map
    Iterator<Object> iter = itemScoring.categoryIterator();
    Object obj = null;
    while (iter.hasNext()) {
      obj = iter.next();
      kernelRegressionMap.put(obj, new KernelRegression(kernel, bandwidth, uniform));
    }
  }
 public double getMaximumPossibleScore() {
   return itemScoring.maximumPossibleScore();
 }
 public double getScoreValue(Object category) {
   return itemScoring.computeItemScore(category);
 }