Author: srowen
Date: Fri Oct 26 15:52:02 2012
New Revision: 1402554
URL: http://svn.apache.org/viewvc?rev=1402554&view=rev
Log:
nDCG formula is ever so slightly non-standard -- fix it to match canonical
formula in literature
Modified:
mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/eval/GenericRecommenderIRStatsEvaluator.java
Modified:
mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/eval/GenericRecommenderIRStatsEvaluator.java
URL:
http://svn.apache.org/viewvc/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/eval/GenericRecommenderIRStatsEvaluator.java?rev=1402554&r1=1402553&r2=1402554&view=diff
==============================================================================
---
mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/eval/GenericRecommenderIRStatsEvaluator.java
(original)
+++
mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/eval/GenericRecommenderIRStatsEvaluator.java
Fri Oct 26 15:52:02 2012
@@ -179,7 +179,7 @@ public final class GenericRecommenderIRS
double idealizedGain = 0.0;
for (int i = 0; i < recommendedItems.size(); i++) {
RecommendedItem item = recommendedItems.get(i);
- double discount = i == 0 ? 1.0 : 1.0 / log2(i + 1);
+ double discount = 1.0 / log2(i + 2.0); // Classical formulation says
log(i+1), but i is 0-based here
if (relevantItemIDs.contains(item.getItemID())) {
cumulativeGain += discount;
}