You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mahout.apache.org by td...@apache.org on 2013/03/25 23:09:13 UTC

svn commit: r1460916 - in /mahout/trunk: core/src/main/java/org/apache/mahout/math/hadoop/decomposer/DistributedLanczosSolver.java math/src/main/java/org/apache/mahout/math/decomposer/lanczos/LanczosSolver.java

Author: tdunning
Date: Mon Mar 25 22:09:13 2013
New Revision: 1460916

URL: http://svn.apache.org/r1460916
Log:
MAHOUT-1174 - Make Lanczos code point to the preferred SSVD code (and removed one code warning)

Modified:
    mahout/trunk/core/src/main/java/org/apache/mahout/math/hadoop/decomposer/DistributedLanczosSolver.java
    mahout/trunk/math/src/main/java/org/apache/mahout/math/decomposer/lanczos/LanczosSolver.java

Modified: mahout/trunk/core/src/main/java/org/apache/mahout/math/hadoop/decomposer/DistributedLanczosSolver.java
URL: http://svn.apache.org/viewvc/mahout/trunk/core/src/main/java/org/apache/mahout/math/hadoop/decomposer/DistributedLanczosSolver.java?rev=1460916&r1=1460915&r2=1460916&view=diff
==============================================================================
--- mahout/trunk/core/src/main/java/org/apache/mahout/math/hadoop/decomposer/DistributedLanczosSolver.java (original)
+++ mahout/trunk/core/src/main/java/org/apache/mahout/math/hadoop/decomposer/DistributedLanczosSolver.java Mon Mar 25 22:09:13 2013
@@ -43,6 +43,12 @@ import java.io.IOException;
 import java.util.List;
 import java.util.Map;
 
+/**
+ * See the SSVD code for a better option than using this:
+ *
+ * https://cwiki.apache.org/MAHOUT/stochastic-singular-value-decomposition.html
+ * @see org.apache.mahout.math.hadoop.stochasticsvd.SSVDSolver
+ */
 public class DistributedLanczosSolver extends LanczosSolver implements Tool {
 
   public static final String RAW_EIGENVECTORS = "rawEigenvectors";

Modified: mahout/trunk/math/src/main/java/org/apache/mahout/math/decomposer/lanczos/LanczosSolver.java
URL: http://svn.apache.org/viewvc/mahout/trunk/math/src/main/java/org/apache/mahout/math/decomposer/lanczos/LanczosSolver.java?rev=1460916&r1=1460915&r2=1460916&view=diff
==============================================================================
--- mahout/trunk/math/src/main/java/org/apache/mahout/math/decomposer/lanczos/LanczosSolver.java (original)
+++ mahout/trunk/math/src/main/java/org/apache/mahout/math/decomposer/lanczos/LanczosSolver.java Mon Mar 25 22:09:13 2013
@@ -18,6 +18,7 @@
 package org.apache.mahout.math.decomposer.lanczos;
 
 
+import com.google.common.base.Preconditions;
 import org.apache.mahout.math.Matrix;
 import org.apache.mahout.math.Vector;
 import org.apache.mahout.math.VectorIterable;
@@ -34,6 +35,10 @@ import java.util.Map;
  * <p>Simple implementation of the <a href="http://en.wikipedia.org/wiki/Lanczos_algorithm">Lanczos algorithm</a> for
  * finding eigenvalues of a symmetric matrix, applied to non-symmetric matrices by applying Matrix.timesSquared(vector)
  * as the "matrix-multiplication" method.</p>
+ *
+ * See the SSVD code for a better option
+ * {@link org.apache.mahout.math.ssvd.SequentialBigSvd}
+ * See also the docs on <a href=https://cwiki.apache.org/MAHOUT/stochastic-singular-value-decomposition.html>stochastic projection SVD</a>
  * <p>
  * To avoid floating point overflow problems which arise in power-methods like Lanczos, an initial pass is made
  * through the input matrix to
@@ -54,6 +59,7 @@ import java.util.Map;
  * This can be made smarter if (when!) this proves to be a major bottleneck.  Of course, this step can be parallelized
  * as well.
  * </p>
+ * @see org.apache.mahout.math.ssvd.SequentialBigSvd
  */
 public class LanczosSolver {
 
@@ -157,6 +163,10 @@ public class LanczosSolver {
         }
         realEigen.assign(rowJ, new PlusMult(d));
       }
+
+      Preconditions.checkState(realEigen != null);
+      assert realEigen != null;
+
       realEigen = realEigen.normalize();
       state.setRightSingularVector(row, realEigen);
       double e = eigenVals.get(row) * state.getScaleFactor();