Author: srowen
Date: Tue May 22 09:09:56 2012
New Revision: 1341364
URL: http://svn.apache.org/viewvc?rev=1341364&view=rev
Log:
Fn measure implementation isn't consistent with convention -- n is beta, not
beta^2
Modified:
mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/eval/IRStatisticsImpl.java
mahout/trunk/core/src/test/java/org/apache/mahout/cf/taste/impl/eval/GenericRecommenderIRStatsEvaluatorImplTest.java
Modified:
mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/eval/IRStatisticsImpl.java
URL:
http://svn.apache.org/viewvc/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/eval/IRStatisticsImpl.java?rev=1341364&r1=1341363&r2=1341364&view=diff
==============================================================================
---
mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/eval/IRStatisticsImpl.java
(original)
+++
mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/eval/IRStatisticsImpl.java
Tue May 22 09:09:56 2012
@@ -65,9 +65,10 @@ public final class IRStatisticsImpl impl
}
@Override
- public double getFNMeasure(double n) {
- double sum = n * precision + recall;
- return sum == 0.0 ? Double.NaN : (1.0 + n) * precision * recall / sum;
+ public double getFNMeasure(double b) {
+ double b2 = b * b;
+ double sum = b2 * precision + recall;
+ return sum == 0.0 ? Double.NaN : (1.0 + b2) * precision * recall / sum;
}
@Override
Modified:
mahout/trunk/core/src/test/java/org/apache/mahout/cf/taste/impl/eval/GenericRecommenderIRStatsEvaluatorImplTest.java
URL:
http://svn.apache.org/viewvc/mahout/trunk/core/src/test/java/org/apache/mahout/cf/taste/impl/eval/GenericRecommenderIRStatsEvaluatorImplTest.java?rev=1341364&r1=1341363&r2=1341364&view=diff
==============================================================================
---
mahout/trunk/core/src/test/java/org/apache/mahout/cf/taste/impl/eval/GenericRecommenderIRStatsEvaluatorImplTest.java
(original)
+++
mahout/trunk/core/src/test/java/org/apache/mahout/cf/taste/impl/eval/GenericRecommenderIRStatsEvaluatorImplTest.java
Tue May 22 09:09:56 2012
@@ -44,7 +44,18 @@ public final class GenericRecommenderIRS
assertEquals(0.75, stats.getPrecision(), EPSILON);
assertEquals(0.75, stats.getRecall(), EPSILON);
assertEquals(0.75, stats.getF1Measure(), EPSILON);
+ assertEquals(0.75, stats.getFNMeasure(2.0), EPSILON);
assertEquals(0.75, stats.getNormalizedDiscountedCumulativeGain(), EPSILON);
}
+ @Test
+ public void testIRStats() {
+ IRStatistics stats = new IRStatisticsImpl(0.3, 0.1, 0.2, 0.05, 0.15);
+ assertEquals(0.3, stats.getPrecision(), EPSILON);
+ assertEquals(0.1, stats.getRecall(), EPSILON);
+ assertEquals(0.15, stats.getF1Measure(), EPSILON);
+ assertEquals(0.11538461538462, stats.getFNMeasure(2.0), EPSILON);
+ assertEquals(0.05, stats.getNormalizedDiscountedCumulativeGain(), EPSILON);
+ }
+
}
\ No newline at end of file