You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mahout.apache.org by sr...@apache.org on 2008/06/15 20:20:13 UTC
svn commit: r667985 - in /lucene/mahout/trunk/core/src/main:
examples/org/apache/mahout/cf/taste/example/grouplens/
java/org/apache/mahout/cf/taste/impl/common/
java/org/apache/mahout/cf/taste/impl/correlation/
java/org/apache/mahout/cf/taste/impl/eval...
Author: srowen
Date: Sun Jun 15 11:20:12 2008
New Revision: 667985
URL: http://svn.apache.org/viewvc?rev=667985&view=rev
Log:
Switch to use FastMap entirely. Remove some arbirary initial map size choices.
Modified:
lucene/mahout/trunk/core/src/main/examples/org/apache/mahout/cf/taste/example/grouplens/GroupLensDataModel.java
lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/common/FastMap.java
lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/correlation/GenericItemCorrelation.java
lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/eval/AbstractDifferenceRecommenderEvaluator.java
lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/eval/GenericRecommenderIRStatsEvaluator.java
lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/model/GenericDataModel.java
lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/model/GenericUser.java
lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/model/file/FileDataModel.java
lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/ItemAverageRecommender.java
lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/ItemUserAverageRecommender.java
lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/TreeClusteringRecommender.java
lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/TreeClusteringRecommender2.java
lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/slopeone/MemoryDiffStorage.java
lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/transforms/Counters.java
lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/transforms/InverseUserFrequency.java
Modified: lucene/mahout/trunk/core/src/main/examples/org/apache/mahout/cf/taste/example/grouplens/GroupLensDataModel.java
URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/core/src/main/examples/org/apache/mahout/cf/taste/example/grouplens/GroupLensDataModel.java?rev=667985&r1=667984&r2=667985&view=diff
==============================================================================
--- lucene/mahout/trunk/core/src/main/examples/org/apache/mahout/cf/taste/example/grouplens/GroupLensDataModel.java (original)
+++ lucene/mahout/trunk/core/src/main/examples/org/apache/mahout/cf/taste/example/grouplens/GroupLensDataModel.java Sun Jun 15 11:20:12 2008
@@ -17,6 +17,7 @@
package org.apache.mahout.cf.taste.example.grouplens;
+import org.apache.mahout.cf.taste.impl.common.FastMap;
import org.apache.mahout.cf.taste.impl.common.IOUtils;
import org.apache.mahout.cf.taste.impl.model.file.FileDataModel;
import org.apache.mahout.cf.taste.model.Item;
@@ -32,7 +33,6 @@
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
-import java.util.HashMap;
import java.util.Map;
import java.util.NoSuchElementException;
@@ -54,7 +54,7 @@
super(convertGLFile(ratingsFile, true));
File convertedMoviesFile = convertGLFile(moviesFile, false);
BufferedReader reader = new BufferedReader(new FileReader(convertedMoviesFile));
- movieMap = new HashMap<String, Movie>(5001);
+ movieMap = new FastMap<String, Movie>(5001);
try {
for (String line; (line = reader.readLine()) != null;) {
String[] tokens = line.split(",");
Modified: lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/common/FastMap.java
URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/common/FastMap.java?rev=667985&r1=667984&r2=667985&view=diff
==============================================================================
--- lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/common/FastMap.java (original)
+++ lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/common/FastMap.java Sun Jun 15 11:20:12 2008
@@ -49,8 +49,7 @@
public static final int NO_MAX_SIZE = Integer.MAX_VALUE;
/**
- * Dummy object used to represent a key that has been removed. Package-private to allow direct access
- * by inner classes. No harm in exposing it.
+ * Dummy object used to represent a key that has been removed.
*/
private static final Object REMOVED = new Object();
Modified: lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/correlation/GenericItemCorrelation.java
URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/correlation/GenericItemCorrelation.java?rev=667985&r1=667984&r2=667985&view=diff
==============================================================================
--- lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/correlation/GenericItemCorrelation.java (original)
+++ lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/correlation/GenericItemCorrelation.java Sun Jun 15 11:20:12 2008
@@ -21,11 +21,11 @@
import org.apache.mahout.cf.taste.correlation.ItemCorrelation;
import org.apache.mahout.cf.taste.impl.common.IteratorIterable;
import org.apache.mahout.cf.taste.impl.common.IteratorUtils;
+import org.apache.mahout.cf.taste.impl.common.FastMap;
import org.apache.mahout.cf.taste.impl.recommender.TopItems;
import org.apache.mahout.cf.taste.model.DataModel;
import org.apache.mahout.cf.taste.model.Item;
-import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
@@ -43,7 +43,7 @@
*/
public final class GenericItemCorrelation implements ItemCorrelation {
- private final Map<Item, Map<Item, Double>> correlationMaps = new HashMap<Item, Map<Item, Double>>(1009);
+ private final Map<Item, Map<Item, Double>> correlationMaps = new FastMap<Item, Map<Item, Double>>();
/**
* <p>Creates a {@link GenericItemCorrelation} from a precomputed list of {@link ItemItemCorrelation}s. Each
@@ -88,8 +88,7 @@
* @param dataModel data model to get {@link Item}s from
* @throws TasteException if an error occurs while accessing the {@link DataModel} items
*/
- public GenericItemCorrelation(ItemCorrelation otherCorrelation, DataModel dataModel)
- throws TasteException {
+ public GenericItemCorrelation(ItemCorrelation otherCorrelation, DataModel dataModel) throws TasteException {
List<? extends Item> items = IteratorUtils.iterableToList(dataModel.getItems());
Iterator<ItemItemCorrelation> it = new DataModelCorrelationsIterator(otherCorrelation, items);
initCorrelationMaps(new IteratorIterable<ItemItemCorrelation>(it));
@@ -134,7 +133,7 @@
}
Map<Item, Double> map = correlationMaps.get(item1);
if (map == null) {
- map = new HashMap<Item, Double>(1009);
+ map = new FastMap<Item, Double>();
correlationMaps.put(item1, map);
}
map.put(item2, iic.getValue());
Modified: lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/eval/AbstractDifferenceRecommenderEvaluator.java
URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/eval/AbstractDifferenceRecommenderEvaluator.java?rev=667985&r1=667984&r2=667985&view=diff
==============================================================================
--- lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/eval/AbstractDifferenceRecommenderEvaluator.java (original)
+++ lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/eval/AbstractDifferenceRecommenderEvaluator.java Sun Jun 15 11:20:12 2008
@@ -21,6 +21,7 @@
import org.apache.mahout.cf.taste.eval.RecommenderBuilder;
import org.apache.mahout.cf.taste.eval.RecommenderEvaluator;
import org.apache.mahout.cf.taste.impl.common.RandomUtils;
+import org.apache.mahout.cf.taste.impl.common.FastMap;
import org.apache.mahout.cf.taste.impl.model.GenericDataModel;
import org.apache.mahout.cf.taste.impl.model.GenericItem;
import org.apache.mahout.cf.taste.impl.model.GenericPreference;
@@ -35,9 +36,9 @@
import java.util.ArrayList;
import java.util.Collection;
-import java.util.HashMap;
import java.util.Map;
import java.util.Random;
+import java.util.List;
/**
* <p>Abstract superclass of a couple implementations, providing shared functionality.</p>
@@ -75,12 +76,12 @@
int numUsers = dataModel.getNumUsers();
Collection<User> trainingUsers = new ArrayList<User>(1 + (int) (trainingPercentage * (double) numUsers));
Map<User, Collection<Preference>> testUserPrefs =
- new HashMap<User, Collection<Preference>>(1 + (int) ((1.0 - trainingPercentage) * (double) numUsers));
+ new FastMap<User, Collection<Preference>>(1 + (int) ((1.0 - trainingPercentage) * (double) numUsers));
for (User user : dataModel.getUsers()) {
if (random.nextDouble() < evaluationPercentage) {
- Collection<Preference> trainingPrefs = new ArrayList<Preference>();
- Collection<Preference> testPrefs = new ArrayList<Preference>();
+ List<Preference> trainingPrefs = new ArrayList<Preference>();
+ List<Preference> testPrefs = new ArrayList<Preference>();
Preference[] prefs = user.getPreferencesAsArray();
for (int i = 0; i < prefs.length; i++) {
Preference pref = prefs[i];
Modified: lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/eval/GenericRecommenderIRStatsEvaluator.java
URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/eval/GenericRecommenderIRStatsEvaluator.java?rev=667985&r1=667984&r2=667985&view=diff
==============================================================================
--- lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/eval/GenericRecommenderIRStatsEvaluator.java (original)
+++ lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/eval/GenericRecommenderIRStatsEvaluator.java Sun Jun 15 11:20:12 2008
@@ -38,6 +38,7 @@
import java.util.HashSet;
import java.util.NoSuchElementException;
import java.util.Random;
+import java.util.List;
/**
* <p>For each {@link org.apache.mahout.cf.taste.model.User}, these implementation determine the top <code>n</code> preferences,
@@ -91,10 +92,10 @@
}
int numRelevantItems = relevantItems.size();
if (numRelevantItems > 0) {
- Collection<User> trainingUsers = new ArrayList<User>(dataModel.getNumUsers());
+ List<User> trainingUsers = new ArrayList<User>(dataModel.getNumUsers());
for (User user2 : dataModel.getUsers()) {
if (id.equals(user2.getID())) {
- Collection<Preference> trainingPrefs = new ArrayList<Preference>();
+ List<Preference> trainingPrefs = new ArrayList<Preference>();
Preference[] prefs2 = user2.getPreferencesAsArray();
for (int i = 0; i < prefs2.length; i++) {
Preference pref = prefs2[i];
Modified: lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/model/GenericDataModel.java
URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/model/GenericDataModel.java?rev=667985&r1=667984&r2=667985&view=diff
==============================================================================
--- lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/model/GenericDataModel.java (original)
+++ lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/model/GenericDataModel.java Sun Jun 15 11:20:12 2008
@@ -20,6 +20,7 @@
import org.apache.mahout.cf.taste.common.TasteException;
import org.apache.mahout.cf.taste.impl.common.ArrayIterator;
import org.apache.mahout.cf.taste.impl.common.EmptyIterable;
+import org.apache.mahout.cf.taste.impl.common.FastMap;
import org.apache.mahout.cf.taste.model.DataModel;
import org.apache.mahout.cf.taste.model.Item;
import org.apache.mahout.cf.taste.model.Preference;
@@ -29,7 +30,6 @@
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
-import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.NoSuchElementException;
@@ -63,11 +63,11 @@
throw new IllegalArgumentException("users is null");
}
- this.userMap = new HashMap<Object, User>();
- this.itemMap = new HashMap<Object, Item>();
+ this.userMap = new FastMap<Object, User>();
+ this.itemMap = new FastMap<Object, Item>();
// I'm abusing generics a little here since I want to use this (huge) map to hold Lists,
// then arrays, and don't want to allocate two Maps at once here.
- Map<Object, Object> prefsForItems = new HashMap<Object, Object>();
+ Map<Object, Object> prefsForItems = new FastMap<Object, Object>();
for (User user : users) {
userMap.put(user.getID(), user);
Preference[] prefsArray = user.getPreferencesAsArray();
Modified: lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/model/GenericUser.java
URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/model/GenericUser.java?rev=667985&r1=667984&r2=667985&view=diff
==============================================================================
--- lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/model/GenericUser.java (original)
+++ lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/model/GenericUser.java Sun Jun 15 11:20:12 2008
@@ -18,6 +18,7 @@
package org.apache.mahout.cf.taste.impl.model;
import org.apache.mahout.cf.taste.impl.common.ArrayIterator;
+import org.apache.mahout.cf.taste.impl.common.FastMap;
import org.apache.mahout.cf.taste.model.Preference;
import org.apache.mahout.cf.taste.model.User;
@@ -25,8 +26,8 @@
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
-import java.util.HashMap;
import java.util.Map;
+import java.util.List;
/**
* <p>A simple {@link User} which has simply an ID and some {@link Collection} of
@@ -41,7 +42,7 @@
// Use an array for maximum performance
private final Preference[] values;
- public GenericUser(K id, Collection<Preference> preferences) {
+ public GenericUser(K id, List<Preference> preferences) {
if (id == null) {
throw new IllegalArgumentException("id is null");
}
@@ -50,9 +51,12 @@
data = Collections.emptyMap();
values = NO_PREFS;
} else {
- data = new HashMap<Object, Preference>();
- values = preferences.toArray(new Preference[preferences.size()]);
- for (Preference preference : values) {
+ data = new FastMap<Object, Preference>();
+ int size = preferences.size();
+ values = new Preference[size];
+ for (int i = 0; i < size; i++) {
+ Preference preference = preferences.get(i);
+ values[i] = preference;
// Is this hacky?
if (preference instanceof SettableUserPreference) {
((SettableUserPreference) preference).setUser(this);
Modified: lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/model/file/FileDataModel.java
URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/model/file/FileDataModel.java?rev=667985&r1=667984&r2=667985&view=diff
==============================================================================
--- lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/model/file/FileDataModel.java (original)
+++ lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/model/file/FileDataModel.java Sun Jun 15 11:20:12 2008
@@ -19,6 +19,7 @@
import org.apache.mahout.cf.taste.common.TasteException;
import org.apache.mahout.cf.taste.impl.common.IOUtils;
+import org.apache.mahout.cf.taste.impl.common.FastMap;
import org.apache.mahout.cf.taste.impl.model.GenericDataModel;
import org.apache.mahout.cf.taste.impl.model.GenericItem;
import org.apache.mahout.cf.taste.impl.model.GenericPreference;
@@ -36,7 +37,6 @@
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
-import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.NoSuchElementException;
@@ -95,7 +95,7 @@
protected void reload() throws IOException {
try {
reloadLock.lock();
- Map<String, List<Preference>> data = new HashMap<String, List<Preference>>(1003);
+ Map<String, List<Preference>> data = new FastMap<String, List<Preference>>();
processFile(data);
Modified: lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/ItemAverageRecommender.java
URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/ItemAverageRecommender.java?rev=667985&r1=667984&r2=667985&view=diff
==============================================================================
--- lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/ItemAverageRecommender.java (original)
+++ lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/ItemAverageRecommender.java Sun Jun 15 11:20:12 2008
@@ -20,6 +20,7 @@
import org.apache.mahout.cf.taste.common.TasteException;
import org.apache.mahout.cf.taste.impl.common.FullRunningAverage;
import org.apache.mahout.cf.taste.impl.common.RunningAverage;
+import org.apache.mahout.cf.taste.impl.common.FastMap;
import org.apache.mahout.cf.taste.model.DataModel;
import org.apache.mahout.cf.taste.model.Item;
import org.apache.mahout.cf.taste.model.Preference;
@@ -29,7 +30,6 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.NoSuchElementException;
@@ -55,7 +55,7 @@
public ItemAverageRecommender(DataModel dataModel) {
super(dataModel);
- this.itemAverages = new HashMap<Object, RunningAverage>(1003);
+ this.itemAverages = new FastMap<Object, RunningAverage>();
this.refreshLock = new ReentrantLock();
this.buildAveragesLock = new ReentrantReadWriteLock();
}
Modified: lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/ItemUserAverageRecommender.java
URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/ItemUserAverageRecommender.java?rev=667985&r1=667984&r2=667985&view=diff
==============================================================================
--- lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/ItemUserAverageRecommender.java (original)
+++ lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/ItemUserAverageRecommender.java Sun Jun 15 11:20:12 2008
@@ -20,6 +20,7 @@
import org.apache.mahout.cf.taste.common.TasteException;
import org.apache.mahout.cf.taste.impl.common.FullRunningAverage;
import org.apache.mahout.cf.taste.impl.common.RunningAverage;
+import org.apache.mahout.cf.taste.impl.common.FastMap;
import org.apache.mahout.cf.taste.model.DataModel;
import org.apache.mahout.cf.taste.model.Item;
import org.apache.mahout.cf.taste.model.Preference;
@@ -29,7 +30,6 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.NoSuchElementException;
@@ -58,8 +58,8 @@
public ItemUserAverageRecommender(DataModel dataModel) {
super(dataModel);
- this.itemAverages = new HashMap<Object, RunningAverage>(1003);
- this.userAverages = new HashMap<Object, RunningAverage>(1003);
+ this.itemAverages = new FastMap<Object, RunningAverage>();
+ this.userAverages = new FastMap<Object, RunningAverage>();
this.overallAveragePrefValue = new FullRunningAverage();
this.refreshLock = new ReentrantLock();
this.buildAveragesLock = new ReentrantReadWriteLock();
Modified: lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/TreeClusteringRecommender.java
URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/TreeClusteringRecommender.java?rev=667985&r1=667984&r2=667985&view=diff
==============================================================================
--- lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/TreeClusteringRecommender.java (original)
+++ lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/TreeClusteringRecommender.java Sun Jun 15 11:20:12 2008
@@ -22,6 +22,7 @@
import org.apache.mahout.cf.taste.impl.common.Pair;
import org.apache.mahout.cf.taste.impl.common.RandomUtils;
import org.apache.mahout.cf.taste.impl.common.RunningAverage;
+import org.apache.mahout.cf.taste.impl.common.FastMap;
import org.apache.mahout.cf.taste.model.DataModel;
import org.apache.mahout.cf.taste.model.Item;
import org.apache.mahout.cf.taste.model.Preference;
@@ -35,7 +36,6 @@
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
-import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
@@ -341,7 +341,7 @@
private static Map<Object, List<RecommendedItem>> computeTopRecsPerUserID(
Iterable<Collection<User>> clusters) throws TasteException {
- Map<Object, List<RecommendedItem>> recsPerUser = new HashMap<Object, List<RecommendedItem>>();
+ Map<Object, List<RecommendedItem>> recsPerUser = new FastMap<Object, List<RecommendedItem>>();
for (Collection<User> cluster : clusters) {
List<RecommendedItem> recs = computeTopRecsForCluster(cluster);
for (User user : cluster) {
@@ -372,7 +372,7 @@
}
private static Map<Object, Collection<User>> computeClustersPerUserID(Collection<Collection<User>> clusters) {
- Map<Object, Collection<User>> clustersPerUser = new HashMap<Object, Collection<User>>(clusters.size());
+ Map<Object, Collection<User>> clustersPerUser = new FastMap<Object, Collection<User>>(clusters.size());
for (Collection<User> cluster : clusters) {
for (User user : cluster) {
clustersPerUser.put(user.getID(), cluster);
Modified: lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/TreeClusteringRecommender2.java
URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/TreeClusteringRecommender2.java?rev=667985&r1=667984&r2=667985&view=diff
==============================================================================
--- lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/TreeClusteringRecommender2.java (original)
+++ lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/TreeClusteringRecommender2.java Sun Jun 15 11:20:12 2008
@@ -20,6 +20,7 @@
import org.apache.mahout.cf.taste.common.TasteException;
import org.apache.mahout.cf.taste.impl.common.FullRunningAverage;
import org.apache.mahout.cf.taste.impl.common.RunningAverage;
+import org.apache.mahout.cf.taste.impl.common.FastMap;
import org.apache.mahout.cf.taste.model.DataModel;
import org.apache.mahout.cf.taste.model.Item;
import org.apache.mahout.cf.taste.model.Preference;
@@ -33,7 +34,6 @@
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
-import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedList;
@@ -417,7 +417,7 @@
private static Map<Object, List<RecommendedItem>> computeTopRecsPerUserID(Iterable<Collection<User>> clusters)
throws TasteException {
- Map<Object, List<RecommendedItem>> recsPerUser = new HashMap<Object, List<RecommendedItem>>();
+ Map<Object, List<RecommendedItem>> recsPerUser = new FastMap<Object, List<RecommendedItem>>();
for (Collection<User> cluster : clusters) {
List<RecommendedItem> recs = computeTopRecsForCluster(cluster);
for (User user : cluster) {
@@ -448,7 +448,7 @@
}
private static Map<Object, Collection<User>> computeClustersPerUserID(Collection<Collection<User>> clusters) {
- Map<Object, Collection<User>> clustersPerUser = new HashMap<Object, Collection<User>>(clusters.size());
+ Map<Object, Collection<User>> clustersPerUser = new FastMap<Object, Collection<User>>(clusters.size());
for (Collection<User> cluster : clusters) {
for (User user : cluster) {
clustersPerUser.put(user.getID(), cluster);
Modified: lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/slopeone/MemoryDiffStorage.java
URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/slopeone/MemoryDiffStorage.java?rev=667985&r1=667984&r2=667985&view=diff
==============================================================================
--- lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/slopeone/MemoryDiffStorage.java (original)
+++ lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/slopeone/MemoryDiffStorage.java Sun Jun 15 11:20:12 2008
@@ -33,7 +33,6 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
@@ -100,8 +99,8 @@
this.stdDevWeighted = stdDevWeighted;
this.compactAverages = compactAverages;
this.maxEntries = maxEntries;
- this.averageDiffs = new FastMap<Object, Map<Object, RunningAverage>>(1003);
- this.averageItemPref = new FastMap<Object, RunningAverage>(101);
+ this.averageDiffs = new FastMap<Object, Map<Object, RunningAverage>>();
+ this.averageItemPref = new FastMap<Object, RunningAverage>();
this.buildAverageDiffsLock = new ReentrantReadWriteLock();
this.refreshLock = new ReentrantLock();
buildAverageDiffs();
@@ -213,7 +212,7 @@
Object itemIDA = prefA.getItem().getID();
Map<Object, RunningAverage> aMap = averageDiffs.get(itemIDA);
if (aMap == null) {
- aMap = new HashMap<Object, RunningAverage>();
+ aMap = new FastMap<Object, RunningAverage>();
averageDiffs.put(itemIDA, aMap);
}
for (int j = i + 1; j < length; j++) {
Modified: lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/transforms/Counters.java
URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/transforms/Counters.java?rev=667985&r1=667984&r2=667985&view=diff
==============================================================================
--- lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/transforms/Counters.java (original)
+++ lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/transforms/Counters.java Sun Jun 15 11:20:12 2008
@@ -17,7 +17,8 @@
package org.apache.mahout.cf.taste.impl.transforms;
-import java.util.HashMap;
+import org.apache.mahout.cf.taste.impl.common.FastMap;
+
import java.util.Map;
/**
@@ -25,7 +26,7 @@
*/
final class Counters<T> {
- private final Map<T, MutableInteger> counts = new HashMap<T, MutableInteger>(1009);
+ private final Map<T, MutableInteger> counts = new FastMap<T, MutableInteger>();
void increment(T key) {
MutableInteger count = counts.get(key);
Modified: lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/transforms/InverseUserFrequency.java
URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/transforms/InverseUserFrequency.java?rev=667985&r1=667984&r2=667985&view=diff
==============================================================================
--- lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/transforms/InverseUserFrequency.java (original)
+++ lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/transforms/InverseUserFrequency.java Sun Jun 15 11:20:12 2008
@@ -23,11 +23,11 @@
import org.apache.mahout.cf.taste.model.Preference;
import org.apache.mahout.cf.taste.model.User;
import org.apache.mahout.cf.taste.transforms.PreferenceTransform;
+import org.apache.mahout.cf.taste.impl.common.FastMap;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.Collections;
-import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.atomic.AtomicReference;
@@ -69,7 +69,7 @@
}
this.dataModel = dataModel;
this.logBase = logBase;
- this.iufFactors = new AtomicReference<Map<Item, Double>>(new HashMap<Item, Double>(1009));
+ this.iufFactors = new AtomicReference<Map<Item, Double>>(new FastMap<Item, Double>());
refresh();
}
@@ -100,8 +100,7 @@
}
numUsers++;
}
- Map<Item, Double> newIufFactors =
- new HashMap<Item, Double>(1 + (4 * itemPreferenceCounts.size()) / 3, 0.75f);
+ Map<Item, Double> newIufFactors = new FastMap<Item, Double>(itemPreferenceCounts.size());
double logFactor = Math.log(logBase);
for (Map.Entry<Item, Counters.MutableInteger> entry : itemPreferenceCounts.getEntrySet()) {
newIufFactors.put(entry.getKey(),