Author: squinn
Date: Mon Mar 11 22:22:12 2013
New Revision: 1455350
URL: http://svn.apache.org/r1455350
Log:
Added SSVD optional parameters to spectral kmeans command line.
Modified:
mahout/trunk/core/src/main/java/org/apache/mahout/clustering/spectral/kmeans/SpectralKMeansDriver.java
Modified:
mahout/trunk/core/src/main/java/org/apache/mahout/clustering/spectral/kmeans/SpectralKMeansDriver.java
URL:
http://svn.apache.org/viewvc/mahout/trunk/core/src/main/java/org/apache/mahout/clustering/spectral/kmeans/SpectralKMeansDriver.java?rev=1455350&r1=1455349&r2=1455350&view=diff
==============================================================================
---
mahout/trunk/core/src/main/java/org/apache/mahout/clustering/spectral/kmeans/SpectralKMeansDriver.java
(original)
+++
mahout/trunk/core/src/main/java/org/apache/mahout/clustering/spectral/kmeans/SpectralKMeansDriver.java
Mon Mar 11 22:22:12 2013
@@ -51,6 +51,9 @@ import org.apache.mahout.math.hadoop.sto
public class SpectralKMeansDriver extends AbstractJob {
public static final double OVERSHOOTMULTIPLIER = 2.0;
+ public static final int REDUCERS = 10;
+ public static final int BLOCKHEIGHT = 30000;
+ public static final int OVERSAMPLING = 15;
public static void main(String[] args) throws Exception {
ToolRunner.run(new SpectralKMeansDriver(), args);
@@ -70,6 +73,9 @@ public class SpectralKMeansDriver extend
addOption(DefaultOptionCreator.maxIterationsOption().create());
addOption(DefaultOptionCreator.overwriteOption().create());
addFlag("usessvd", "ssvd", "Uses SSVD as the eigensolver.
Default is the Lanczos solver.");
+ addOption("ssvdreducers", "r", "Number of reducers for SSVD",
String.valueOf(REDUCERS));
+ addOption("ssvdblockheight", "h", "Block height for SSVD",
String.valueOf(BLOCKHEIGHT));
+ addOption("ssvdoversampling", "p", "Oversampling parameter for
SSVD", String.valueOf(OVERSAMPLING));
Map<String, List<String>> parsedArgs = parseArguments(arg0);
if (parsedArgs == null) {
@@ -90,11 +96,34 @@ public class SpectralKMeansDriver extend
Path tempdir = new Path(getOption("tempDir"));
boolean ssvd = parsedArgs.containsKey("--usessvd");
-
- run(conf, input, output, numDims, clusters, measure,
convergenceDelta, maxIterations, tempdir, ssvd);
+ if (ssvd) {
+ int reducers = Integer.parseInt(getOption("ssvdreducers"));
+ int blockheight =
Integer.parseInt(getOption("ssvdblockheight"));
+ int oversampling =
Integer.parseInt(getOption("oversampling"));
+ run(conf, input, output, numDims, clusters, measure,
convergenceDelta,
+ maxIterations, tempdir, true, reducers,
blockheight, oversampling);
+ } else {
+ run(conf, input, output, numDims, clusters, measure,
convergenceDelta,
+ maxIterations, tempdir, false);
+ }
return 0;
}
+
+ public static void run(
+ Configuration conf,
+ Path input,
+ Path output,
+ int numDims,
+ int clusters,
+ DistanceMeasure measure,
+ double convergenceDelta,
+ int maxIterations,
+ Path tempDir,
+ boolean ssvd) throws IOException, InterruptedException,
ClassNotFoundException {
+ run(conf, input, output, numDims, clusters, measure,
convergenceDelta,
+ maxIterations, tempDir, ssvd, REDUCERS, BLOCKHEIGHT,
OVERSAMPLING);
+ }
/**
* Run the Spectral KMeans clustering on the supplied arguments
@@ -120,7 +149,10 @@ public class SpectralKMeansDriver extend
double convergenceDelta,
int maxIterations,
Path tempDir,
- boolean ssvd)
+ boolean ssvd,
+ int numReducers,
+ int blockHeight,
+ int oversampling)
throws IOException, InterruptedException,
ClassNotFoundException {
Path outputCalc = new Path(tempDir, "calculations");
@@ -160,19 +192,15 @@ public class SpectralKMeansDriver extend
depConf,
LPath,
SSVDout,
- 1000, // Vertical height of a q-block
+ blockHeight,
clusters,
- 15, // Oversampling
- 10);
+ oversampling,
+ numReducers);
solveIt.setComputeV(false);
solveIt.setComputeU(true);
solveIt.setOverwrite(true);
solveIt.setQ(0);
-
- // May want to update SSVD documentation on this one:
method doc
- // says "false" is the default, yet it's set to true in
the
- // variable definition.
//solveIt.setBroadcast(false);
solveIt.run();
data = new Path(solveIt.getUPath());