Author: srowen
Date: Mon Mar 11 16:18:11 2013
New Revision: 1455212

URL: http://svn.apache.org/r1455212
Log:
MAHOUT-1144 fix SVD++ normalization

Modified:
    
mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/svd/SVDPlusPlusFactorizer.java

Modified: 
mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/svd/SVDPlusPlusFactorizer.java
URL: 
http://svn.apache.org/viewvc/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/svd/SVDPlusPlusFactorizer.java?rev=1455212&r1=1455211&r2=1455212&view=diff
==============================================================================
--- 
mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/svd/SVDPlusPlusFactorizer.java
 (original)
+++ 
mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/svd/SVDPlusPlusFactorizer.java
 Mon Mar 11 16:18:11 2013
@@ -22,8 +22,6 @@ import com.google.common.collect.Maps;
 import org.apache.mahout.cf.taste.impl.common.FastIDSet;
 import org.apache.mahout.cf.taste.impl.common.LongPrimitiveIterator;
 import org.apache.mahout.common.RandomUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 import org.apache.mahout.cf.taste.common.TasteException;
 import org.apache.mahout.cf.taste.model.DataModel;
@@ -41,7 +39,6 @@ import java.util.Random;
  */
 public final class SVDPlusPlusFactorizer extends RatingSGDFactorizer {
 
-  private static final Logger log = 
LoggerFactory.getLogger(SVDPlusPlusFactorizer.class);
   private double[][] p;
   private double[][] y;
   private Map<Integer, List<Integer>> itemsByUser;
@@ -110,7 +107,7 @@ public final class SVDPlusPlusFactorizer
           userVectors[userIndex][feature] += y[itemIndex][feature];
         }
       }
-      double denominator = Math.sqrt(itemsByUser.size());
+      double denominator = Math.sqrt(itemsByUser.get(userIndex).size());
       for (int feature = 0; feature < userVectors[userIndex].length; 
feature++) {
         userVectors[userIndex][feature] =
             (float) (userVectors[userIndex][feature] / denominator + 
p[userIndex][feature]);
@@ -135,7 +132,7 @@ public final class SVDPlusPlusFactorizer
           pPlusY[f] += y[i2][f];
         }
     }
-    double denominator = Math.sqrt(itemsByUser.size());
+    double denominator = Math.sqrt(itemsByUser.get(userIndex).size());
     for (int feature = 0; feature < pPlusY.length; feature++) {
       pPlusY[feature] = (float) (pPlusY[feature] / denominator + 
p[userIndex][feature]);
     }


Reply via email to