@Before public void setUp() throws Exception { ItemScorer scorer = PrecomputedItemScorer.newBuilder() .addScore(40, 1, 4.0) .addScore(40, 2, 5.5) .addScore(40, 3, -1) .build(); PreferenceDomain domain = new PreferenceDomain(1, 5, 1); pred = new SimpleRatingPredictor(scorer, domain); unclamped = new SimpleRatingPredictor(scorer, null); }
@Test public void testBulkPredictWithDetails() { ResultMap scores = pred.predictWithDetails(40, LongUtils.packedSet(1, 2, 3, 4)); assertThat(scores.size(), equalTo(3)); assertThat(scores.getScore(1), equalTo(4.0)); assertThat(scores.getScore(2), equalTo(5.0)); assertThat(scores.getScore(3), equalTo(1.0)); assertThat(scores.get(4L), nullValue()); } }
@SuppressWarnings("deprecation") @Test public void testSlopeOneRecommenderEngineCreate() { try (Recommender rec = engine.createRecommender(dao)) { assertThat(rec.getItemScorer(), instanceOf(SlopeOneItemScorer.class)); RatingPredictor rp = rec.getRatingPredictor(); assertThat(rp, notNullValue()); assertThat(rp, instanceOf(SimpleRatingPredictor.class)); assertThat(((SimpleRatingPredictor) rp).getItemScorer(), sameInstance(rec.getItemScorer())); assertThat(rec.getItemRecommender(), instanceOf(TopNItemRecommender.class)); } }
@SuppressWarnings("deprecation") @Test public void testUserUserRecommenderEngineCreate() { try (Recommender rec = engine.createRecommender()) { assertThat(rec.getItemScorer(), instanceOf(UserUserItemScorer.class)); assertThat(rec.getItemRecommender(), instanceOf(TopNItemRecommender.class)); RatingPredictor pred = rec.getRatingPredictor(); assertThat(pred, notNullValue()); assertThat(pred, instanceOf(SimpleRatingPredictor.class)); assertThat(((SimpleRatingPredictor) pred).getItemScorer(), sameInstance(rec.getItemScorer())); } }
@Test public void testHPFRecommenderEngineCreate() throws RecommenderBuildException { LenskitRecommenderEngine engine = makeEngine(); try (Recommender rec = engine.createRecommender(dao)) { assertThat(rec.getItemScorer(), instanceOf(HPFItemScorer.class)); assertThat(rec.getItemRecommender(), instanceOf(TopNItemRecommender.class)); RatingPredictor pred = rec.getRatingPredictor(); assertThat(pred, notNullValue()); assertThat(pred, instanceOf(SimpleRatingPredictor.class)); assertThat(((SimpleRatingPredictor) pred).getItemScorer(), sameInstance(rec.getItemScorer())); } }
@Test public void testBasicPredictHigh() { assertThat(pred.predict(40, 2).getScore(), closeTo(5.0, EPSILON)); }
@SuppressWarnings("deprecation") @Test public void testFunkSVDRecommenderEngineCreate() throws RecommenderBuildException { LenskitRecommenderEngine engine = makeEngine(); try (Recommender rec = engine.createRecommender(dao)) { assertThat(rec.getItemScorer(), instanceOf(FunkSVDItemScorer.class)); assertThat(rec.getItemRecommender(), instanceOf(TopNItemRecommender.class)); RatingPredictor pred = rec.getRatingPredictor(); assertThat(pred, notNullValue()); assertThat(pred, instanceOf(SimpleRatingPredictor.class)); assertThat(((SimpleRatingPredictor) pred).getItemScorer(), sameInstance(rec.getItemScorer())); } }
@Test public void testUnclampedPredictHigh() { assertThat(unclamped.predict(40, 2).getScore(), closeTo(5.5, EPSILON)); }
@Test public void testUnclampedPredictLow() { assertThat(unclamped.predict(40, 3).getScore(), closeTo(-1, EPSILON)); }
@Test public void testBasicPredictLow() { assertThat(pred.predict(40, 3).getScore(), closeTo(1.0, EPSILON)); }
@Test public void testUnclampedPredict() { assertThat(unclamped.predict(40, 1).getScore(), closeTo(4.0, EPSILON)); }
@Test public void testBulkPredict() { Map<Long,Double> scores = pred.predict(40, LongUtils.packedSet(1, 2, 3, 4)); assertThat(scores.size(), equalTo(3)); assertThat(scores, hasEntry(1L, 4.0)); assertThat(scores, hasEntry(2L, 5.0)); assertThat(scores, hasEntry(3L, 1.0)); }
@Test public void testBulkUnclampedPredict() { Map<Long,Double> scores = unclamped.predict(40, LongUtils.packedSet(1, 2, 3, 4)); assertThat(scores.size(), equalTo(3)); assertThat(scores, hasEntry(1L, 4.0)); assertThat(scores, hasEntry(2L, 5.5)); assertThat(scores, hasEntry(3L, -1.0)); }