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 22:03:19 UTC
svn commit: r668007 - in /lucene/mahout/trunk/core/src:
main/java/org/apache/mahout/cf/taste/hadoop/
main/java/org/apache/mahout/cf/taste/impl/common/
main/java/org/apache/mahout/cf/taste/impl/correlation/
main/java/org/apache/mahout/cf/taste/impl/reco...
Author: srowen
Date: Sun Jun 15 13:03:19 2008
New Revision: 668007
URL: http://svn.apache.org/viewvc?rev=668007&view=rev
Log:
More small refactorings
Modified:
lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/ItemItemWritable.java
lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/common/Pair.java
lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/correlation/AbstractCorrelation.java
lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/TopItems.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/transforms/CorrelationTransform.java
lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/web/RecommenderServlet.java
lucene/mahout/trunk/core/src/test/java/org/apache/mahout/cf/taste/impl/LoadTest.java
Modified: lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/ItemItemWritable.java
URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/ItemItemWritable.java?rev=668007&r1=668006&r2=668007&view=diff
==============================================================================
--- lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/ItemItemWritable.java (original)
+++ lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/ItemItemWritable.java Sun Jun 15 13:03:19 2008
@@ -23,8 +23,6 @@
import java.io.DataOutput;
import java.io.IOException;
-/**
- */
public final class ItemItemWritable implements WritableComparable {
private String itemAID;
Modified: lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/common/Pair.java
URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/common/Pair.java?rev=668007&r1=668006&r2=668007&view=diff
==============================================================================
--- lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/common/Pair.java (original)
+++ lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/common/Pair.java Sun Jun 15 13:03:19 2008
@@ -48,7 +48,7 @@
isEqualOrNulls(second, otherPair.second);
}
- static boolean isEqualOrNulls(Object obj1, Object obj2) {
+ private static boolean isEqualOrNulls(Object obj1, Object obj2) {
return obj1 == null ? obj2 == null : obj1.equals(obj2);
}
@@ -60,7 +60,7 @@
return (firstHash >>> 16 | firstHash << 16) ^ hashCodeNull(second);
}
- static int hashCodeNull(Object obj) {
+ private static int hashCodeNull(Object obj) {
return obj == null ? 0 : obj.hashCode();
}
Modified: lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/correlation/AbstractCorrelation.java
URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/correlation/AbstractCorrelation.java?rev=668007&r1=668006&r2=668007&view=diff
==============================================================================
--- lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/correlation/AbstractCorrelation.java (original)
+++ lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/correlation/AbstractCorrelation.java Sun Jun 15 13:03:19 2008
@@ -50,7 +50,7 @@
*
* @param dataModel
*/
- public AbstractCorrelation(DataModel dataModel) {
+ AbstractCorrelation(DataModel dataModel) {
this(dataModel, false);
}
@@ -60,7 +60,7 @@
* @param dataModel
* @param weighted
*/
- public AbstractCorrelation(DataModel dataModel, boolean weighted) {
+ AbstractCorrelation(DataModel dataModel, boolean weighted) {
if (dataModel == null) {
throw new IllegalArgumentException("dataModel is null");
}
Modified: lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/TopItems.java
URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/TopItems.java?rev=668007&r1=668006&r2=668007&view=diff
==============================================================================
--- lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/TopItems.java (original)
+++ lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/TopItems.java Sun Jun 15 13:03:19 2008
@@ -179,11 +179,11 @@
return user.getPreferencesAsArray();
}
- public User getUser() {
+ User getUser() {
return user;
}
- public double getSimilarity() {
+ double getSimilarity() {
return similarity;
}
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=668007&r1=668006&r2=668007&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 13:03:19 2008
@@ -202,41 +202,7 @@
buildAverageDiffsLock.writeLock().lock();
long averageCount = 0L;
for (User user : dataModel.getUsers()) {
- log.debug("Processing prefs for user {}", user);
- // Save off prefs for the life of this loop iteration
- Preference[] userPreferences = user.getPreferencesAsArray();
- int length = userPreferences.length;
- for (int i = 0; i < length; i++) {
- Preference prefA = userPreferences[i];
- double prefAValue = prefA.getValue();
- Object itemIDA = prefA.getItem().getID();
- Map<Object, RunningAverage> aMap = averageDiffs.get(itemIDA);
- if (aMap == null) {
- aMap = new FastMap<Object, RunningAverage>();
- averageDiffs.put(itemIDA, aMap);
- }
- for (int j = i + 1; j < length; j++) {
- // This is a performance-critical block
- Preference prefB = userPreferences[j];
- Object itemIDB = prefB.getItem().getID();
- RunningAverage average = aMap.get(itemIDB);
- if (average == null && averageCount < maxEntries) {
- average = buildRunningAverage();
- aMap.put(itemIDB, average);
- averageCount++;
- }
- if (average != null) {
- average.addDatum(prefB.getValue() - prefAValue);
- }
-
- }
- RunningAverage itemAverage = averageItemPref.get(itemIDA);
- if (itemAverage == null) {
- itemAverage = buildRunningAverage();
- averageItemPref.put(itemIDA, itemAverage);
- }
- itemAverage.addDatum(prefAValue);
- }
+ averageCount = processOneUser(averageCount, user);
}
// Go back and prune inconsequential diffs. "Inconsequential" means, here, an average
@@ -261,6 +227,45 @@
}
}
+ private long processOneUser(long averageCount, User user) {
+ log.debug("Processing prefs for user {}", user);
+ // Save off prefs for the life of this loop iteration
+ Preference[] userPreferences = user.getPreferencesAsArray();
+ int length = userPreferences.length;
+ for (int i = 0; i < length; i++) {
+ Preference prefA = userPreferences[i];
+ double prefAValue = prefA.getValue();
+ Object itemIDA = prefA.getItem().getID();
+ Map<Object, RunningAverage> aMap = averageDiffs.get(itemIDA);
+ if (aMap == null) {
+ aMap = new FastMap<Object, RunningAverage>();
+ averageDiffs.put(itemIDA, aMap);
+ }
+ for (int j = i + 1; j < length; j++) {
+ // This is a performance-critical block
+ Preference prefB = userPreferences[j];
+ Object itemIDB = prefB.getItem().getID();
+ RunningAverage average = aMap.get(itemIDB);
+ if (average == null && averageCount < maxEntries) {
+ average = buildRunningAverage();
+ aMap.put(itemIDB, average);
+ averageCount++;
+ }
+ if (average != null) {
+ average.addDatum(prefB.getValue() - prefAValue);
+ }
+
+ }
+ RunningAverage itemAverage = averageItemPref.get(itemIDA);
+ if (itemAverage == null) {
+ itemAverage = buildRunningAverage();
+ averageItemPref.put(itemIDA, itemAverage);
+ }
+ itemAverage.addDatum(prefAValue);
+ }
+ return averageCount;
+ }
+
private RunningAverage buildRunningAverage() {
if (stdDevWeighted) {
return compactAverages ? new CompactRunningAverageAndStdDev() : new FullRunningAverageAndStdDev();
Modified: lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/transforms/CorrelationTransform.java
URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/transforms/CorrelationTransform.java?rev=668007&r1=668006&r2=668007&view=diff
==============================================================================
--- lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/transforms/CorrelationTransform.java (original)
+++ lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/transforms/CorrelationTransform.java Sun Jun 15 13:03:19 2008
@@ -18,7 +18,6 @@
package org.apache.mahout.cf.taste.transforms;
import org.apache.mahout.cf.taste.common.Refreshable;
-import org.apache.mahout.cf.taste.common.TasteException;
/**
* <p>Implementations encapsulate some transformation on correlation values between two
@@ -34,6 +33,6 @@
* (should be in [-1,1])
* @return transformed correlation (should be in [-1,1])
*/
- double transformCorrelation(T thing1, T thing2, double value) throws TasteException;
+ double transformCorrelation(T thing1, T thing2, double value);
}
Modified: lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/web/RecommenderServlet.java
URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/web/RecommenderServlet.java?rev=668007&r1=668006&r2=668007&view=diff
==============================================================================
--- lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/web/RecommenderServlet.java (original)
+++ lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/web/RecommenderServlet.java Sun Jun 15 13:03:19 2008
@@ -115,8 +115,7 @@
}
- private void writeXML(HttpServletResponse response, Iterable<RecommendedItem> items)
- throws IOException, TasteException {
+ private void writeXML(HttpServletResponse response, Iterable<RecommendedItem> items) throws IOException {
response.setContentType("text/xml");
response.setCharacterEncoding("UTF-8");
response.setHeader("Cache-Control", "no-cache");
@@ -132,8 +131,7 @@
writer.println("</recommendedItems>");
}
- private void writeJSON(HttpServletResponse response, Iterable<RecommendedItem> items)
- throws IOException, TasteException {
+ private void writeJSON(HttpServletResponse response, Iterable<RecommendedItem> items) throws IOException {
response.setContentType("text/plain");
response.setCharacterEncoding("UTF-8");
response.setHeader("Cache-Control", "no-cache");
Modified: lucene/mahout/trunk/core/src/test/java/org/apache/mahout/cf/taste/impl/LoadTest.java
URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/core/src/test/java/org/apache/mahout/cf/taste/impl/LoadTest.java?rev=668007&r1=668006&r2=668007&view=diff
==============================================================================
--- lucene/mahout/trunk/core/src/test/java/org/apache/mahout/cf/taste/impl/LoadTest.java (original)
+++ lucene/mahout/trunk/core/src/test/java/org/apache/mahout/cf/taste/impl/LoadTest.java Sun Jun 15 13:03:19 2008
@@ -65,11 +65,6 @@
private final Random random = RandomUtils.getRandom();
- @Override
- public void setUp() throws Exception {
- super.setUp();
- }
-
public void testSlopeOneLoad() throws Exception {
DataModel model = createModel();
Recommender recommender = new CachingRecommender(new SlopeOneRecommender(model));