Author: ssc
Date: Wed Nov 2 09:31:30 2011
New Revision: 1196517
URL: http://svn.apache.org/viewvc?rev=1196517&view=rev
Log:
MAHOUT-861 Simultaneously update left and right vectors while training
ExpectationMaximizationSVDFactorizer
Modified:
mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/svd/ExpectationMaximizationSVDFactorizer.java
Modified:
mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/svd/ExpectationMaximizationSVDFactorizer.java
URL:
http://svn.apache.org/viewvc/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/svd/ExpectationMaximizationSVDFactorizer.java?rev=1196517&r1=1196516&r2=1196517&view=diff
==============================================================================
---
mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/svd/ExpectationMaximizationSVDFactorizer.java
(original)
+++
mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/svd/ExpectationMaximizationSVDFactorizer.java
Wed Nov 2 09:31:30 2011
@@ -140,8 +140,9 @@ public final class ExpectationMaximizati
double[] rightVectorJ = rightVectors[j];
double prediction = predictRating(i, j, f, pref, true);
double err = pref.getValue() - prediction;
+ double leftVectorIF = leftVectorI[f];
leftVectorI[f] += learningRate * (err * rightVectorJ[f] -
preventOverfitting * leftVectorI[f]);
- rightVectorJ[f] += learningRate * (err * leftVectorI[f] -
preventOverfitting * rightVectorJ[f]);
+ rightVectorJ[f] += learningRate * (err * leftVectorIF - preventOverfitting
* rightVectorJ[f]);
return err;
}