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();