Author: srowen
Date: Fri Aug 13 03:39:46 2010
New Revision: 985082
URL: http://svn.apache.org/viewvc?rev=985082&view=rev
Log:
MAHOUT-462
Modified:
mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/item/RecommenderJob.java
mahout/trunk/core/src/main/java/org/apache/mahout/math/hadoop/similarity/vector/AbstractDistributedVectorSimilarity.java
mahout/trunk/core/src/main/java/org/apache/mahout/math/hadoop/similarity/vector/DistributedCooccurrenceVectorSimilarity.java
Modified:
mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/item/RecommenderJob.java
URL:
http://svn.apache.org/viewvc/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/item/RecommenderJob.java?rev=985082&r1=985081&r2=985082&view=diff
==============================================================================
---
mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/item/RecommenderJob.java
(original)
+++
mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/item/RecommenderJob.java
Fri Aug 13 03:39:46 2010
@@ -35,13 +35,18 @@ import org.apache.mahout.cf.taste.hadoop
import org.apache.mahout.cf.taste.hadoop.RecommendedItemsWritable;
import org.apache.mahout.cf.taste.hadoop.TasteHadoopUtils;
import org.apache.mahout.cf.taste.hadoop.ToItemPrefsMapper;
-import org.apache.mahout.cf.taste.hadoop.similarity.item.*;
+import org.apache.mahout.cf.taste.hadoop.similarity.item.CountUsersKeyWritable;
+import org.apache.mahout.cf.taste.hadoop.similarity.item.CountUsersMapper;
+import org.apache.mahout.cf.taste.hadoop.similarity.item.CountUsersReducer;
+import
org.apache.mahout.cf.taste.hadoop.similarity.item.PrefsToItemUserMatrixMapper;
+import
org.apache.mahout.cf.taste.hadoop.similarity.item.PrefsToItemUserMatrixReducer;
import org.apache.mahout.common.AbstractJob;
import org.apache.mahout.math.VarIntWritable;
import org.apache.mahout.math.VarLongWritable;
import org.apache.mahout.math.VectorWritable;
import org.apache.mahout.math.hadoop.DistributedRowMatrix;
import org.apache.mahout.math.hadoop.similarity.RowSimilarityJob;
+import org.apache.mahout.math.hadoop.similarity.SimilarityType;
import java.io.IOException;
import java.util.Map;
@@ -88,17 +93,18 @@ public final class RecommenderJob extend
addInputOption();
addOutputOption();
addOption("numRecommendations", "n", "Number of recommendations per user",
-
String.valueOf(AggregateAndRecommendReducer.DEFAULT_NUM_RECOMMENDATIONS));
+
String.valueOf(AggregateAndRecommendReducer.DEFAULT_NUM_RECOMMENDATIONS));
addOption("usersFile", "u", "File of users to recommend for", null);
addOption("itemsFile", "u", "File of items to recommend for", null);
addOption("booleanData", "b", "Treat input as without pref values",
Boolean.FALSE.toString());
addOption("maxPrefsPerUserConsidered", null,
- "Maximum number of preferences considered per user in final
recommendation phase",
-
String.valueOf(UserVectorSplitterMapper.DEFAULT_MAX_PREFS_PER_USER_CONSIDERED));
- addOption("maxSimilaritiesPerItemConsidered", null,
- "Maximum number of similarities considered per item ",
- String.valueOf(DEFAULT_MAX_SIMILARITIES_PER_ITEM_CONSIDERED));
- addOption("similarityClassname", "s", "Name of distributed similarity
class to instantiate");
+ "Maximum number of preferences considered per user in final
recommendation phase",
+
String.valueOf(UserVectorSplitterMapper.DEFAULT_MAX_PREFS_PER_USER_CONSIDERED));
+ addOption("maxSimilaritiesPerItemConsidered", null,"Maximum number of
similarities considered per item ",
+ String.valueOf(DEFAULT_MAX_SIMILARITIES_PER_ITEM_CONSIDERED));
+ addOption("similarityClassname", "s", "Name of distributed similarity
class to instantiate, alternatively use " +
+ "one of the predefined similarities (" +
SimilarityType.listEnumNames() + ')',
+ String.valueOf(SimilarityType.SIMILARITY_COOCCURRENCE));
Map<String,String> parsedArgs = parseArguments(args);
if (parsedArgs == null) {
Modified:
mahout/trunk/core/src/main/java/org/apache/mahout/math/hadoop/similarity/vector/AbstractDistributedVectorSimilarity.java
URL:
http://svn.apache.org/viewvc/mahout/trunk/core/src/main/java/org/apache/mahout/math/hadoop/similarity/vector/AbstractDistributedVectorSimilarity.java?rev=985082&r1=985081&r2=985082&view=diff
==============================================================================
---
mahout/trunk/core/src/main/java/org/apache/mahout/math/hadoop/similarity/vector/AbstractDistributedVectorSimilarity.java
(original)
+++
mahout/trunk/core/src/main/java/org/apache/mahout/math/hadoop/similarity/vector/AbstractDistributedVectorSimilarity.java
Fri Aug 13 03:39:46 2010
@@ -47,7 +47,7 @@ public abstract class AbstractDistribute
/**
* computes the number of elements in the {...@link Iterable}
*/
- protected int countElements(Iterable<?> iterable) {
+ protected static int countElements(Iterable<?> iterable) {
return countElements(iterable.iterator());
}
Modified:
mahout/trunk/core/src/main/java/org/apache/mahout/math/hadoop/similarity/vector/DistributedCooccurrenceVectorSimilarity.java
URL:
http://svn.apache.org/viewvc/mahout/trunk/core/src/main/java/org/apache/mahout/math/hadoop/similarity/vector/DistributedCooccurrenceVectorSimilarity.java?rev=985082&r1=985081&r2=985082&view=diff
==============================================================================
---
mahout/trunk/core/src/main/java/org/apache/mahout/math/hadoop/similarity/vector/DistributedCooccurrenceVectorSimilarity.java
(original)
+++
mahout/trunk/core/src/main/java/org/apache/mahout/math/hadoop/similarity/vector/DistributedCooccurrenceVectorSimilarity.java
Fri Aug 13 03:39:46 2010
@@ -17,17 +17,26 @@
package org.apache.mahout.math.hadoop.similarity.vector;
+import org.apache.mahout.math.Vector;
import org.apache.mahout.math.hadoop.similarity.Cooccurrence;
/**
* uses the co-occcurence count as vector similarity
*/
-public class DistributedCooccurrenceVectorSimilarity extends
AbstractDistributedVectorSimilarity {
+public class DistributedCooccurrenceVectorSimilarity implements
DistributedVectorSimilarity {
@Override
- protected double doComputeResult(int rowA, int rowB, Iterable<Cooccurrence>
cooccurrences, double weightOfVectorA,
- double weightOfVectorB, int numberOfColumns) {
- return countElements(cooccurrences);
+ public double weight(Vector v) {
+ return Double.NaN;
}
+ @Override
+ public double similarity(int rowA,
+ int rowB,
+ Iterable<Cooccurrence> cooccurrences,
+ double weightOfVectorA,
+ double weightOfVectorB,
+ int numberOfColumns) {
+ return AbstractDistributedVectorSimilarity.countElements(cooccurrences);
+ }
}