/** * Build a recommender from a configuration. The recommender is immediately usable. This is * mostly useful for evaluations and test programs; more sophisticated applications that need * to build multiple recommenders from the same model should use a {@linkplain LenskitRecommenderEngine * recommender engine}. * * @param config The configuration. * @param dao The data access object. * @return The recommender. * @throws RecommenderBuildException If there is an error building the recommender. * @since 2.0 */ public static LenskitRecommender build(LenskitConfiguration config, DataAccessObject dao) throws RecommenderBuildException { return LenskitRecommenderEngine.build(config, dao).createRecommender(dao); } }
/** * Build a recommender from a configuration. The recommender is immediately usable. This is * mostly useful for evaluations and test programs; more sophisticated applications that need * to build multiple recommenders from the same model should use a {@linkplain LenskitRecommenderEngine * recommender engine}. * * @param config The configuration. * @return The recommender. * @throws RecommenderBuildException If there is an error building the recommender. * @since 2.0 * @deprecated Use {@link #build(LenskitConfiguration, DataAccessObject)} */ @Deprecated @SuppressWarnings("deprecation") public static LenskitRecommender build(LenskitConfiguration config) throws RecommenderBuildException { return LenskitRecommenderEngine.build(config).createRecommender(); }
@Test public void testRecommendWithMinCommonUsers3() { config.set(MinCommonUsers.class).to(3); session = LenskitRecommenderEngine.build(config, data).createRecommender(data); recommender = session.getItemRecommender(); List<Long> recs = recommender.recommend(2); assertThat(recs, hasSize(0)); }
@Test public void testInject() throws RecommenderBuildException { LenskitConfiguration config = new LenskitConfiguration(); config.addComponent(EntityCollectionDAO.create()); config.bind(ItemScorer.class).to(ConstantItemScorer.class); config.set(ConstantItemScorer.Value.class).to(Math.PI); try (LenskitRecommender rec = LenskitRecommenderEngine.build(config).createRecommender()) { ItemScorer scorer = rec.getItemScorer(); assertThat(scorer, notNullValue()); assertThat(scorer, instanceOf(ConstantItemScorer.class)); Map<Long, Double> v = scorer.score(42, LongUtils.packedSet(1, 2, 3, 5, 7)); assertThat(v.keySet(), hasSize(5)); assertThat(v.keySet(), containsInAnyOrder(1L, 2L, 3L, 5L, 7L)); assertThat(v.values(), everyItem(equalTo(Math.PI))); } } }
@SuppressWarnings("deprecation") @Before public void setup() throws RecommenderBuildException { List<Rating> rs = new ArrayList<>(); rs.add(Rating.create(1, 5, 2)); rs.add(Rating.create(1, 7, 4)); rs.add(Rating.create(8, 4, 5)); rs.add(Rating.create(8, 5, 4)); StaticDataSource source = StaticDataSource.fromList(rs); LenskitConfiguration config = new LenskitConfiguration(); config.bind(DataAccessObject.class).toProvider(source); config.bind(ItemScorer.class).to(ItemItemScorer.class); config.bind(ItemBasedItemScorer.class).to(ItemItemItemBasedItemScorer.class); // this is the default // factory.setComponent(UserVectorNormalizer.class, VectorNormalizer.class, // IdentityVectorNormalizer.class); engine = LenskitRecommenderEngine.build(config); }
@SuppressWarnings("deprecation") @Before public void setup() throws RecommenderBuildException { List<Rating> rs = new ArrayList<>(); rs.add(Rating.create(1, 5, 2)); rs.add(Rating.create(1, 7, 4)); rs.add(Rating.create(8, 4, 5)); rs.add(Rating.create(8, 5, 4)); StaticDataSource source = StaticDataSource.fromList(rs); DataAccessObject dao = source.get(); LenskitConfiguration config = new LenskitConfiguration(); config.bind(DataAccessObject.class).to(dao); config.bind(ItemScorer.class).to(UserUserItemScorer.class); config.bind(NeighborFinder.class).to(LiveNeighborFinder.class); engine = LenskitRecommenderEngine.build(config); }
@SuppressWarnings("deprecation") @Before public void setup() throws RecommenderBuildException { List<Rating> rs = new ArrayList<>(); rs.add(Rating.create(1, 5, 2)); rs.add(Rating.create(1, 7, 4)); rs.add(Rating.create(8, 4, 5)); rs.add(Rating.create(8, 5, 4)); StaticDataSource source = StaticDataSource.fromList(rs); dao = source.get(); LenskitConfiguration config = new LenskitConfiguration(); config.bind(ItemItemModel.class).toProvider(NormalizingItemItemModelProvider.class); config.bind(ItemScorer.class).to(ItemItemScorer.class); config.bind(ItemBasedItemScorer.class).to(ItemItemItemBasedItemScorer.class); // this is the default // factory.setComponent(UserVectorNormalizer.class, VectorNormalizer.class, // IdentityVectorNormalizer.class); engine = LenskitRecommenderEngine.build(config, dao); }
@SuppressWarnings("deprecation") @Before public void setup() throws RecommenderBuildException { List<Rating> rs = new ArrayList<>(); rs.add(Rating.create(1, 6, 4)); rs.add(Rating.create(2, 6, 2)); rs.add(Rating.create(1, 7, 3)); rs.add(Rating.create(2, 7, 2)); rs.add(Rating.create(3, 7, 5)); rs.add(Rating.create(4, 7, 2)); rs.add(Rating.create(1, 8, 3)); rs.add(Rating.create(2, 8, 4)); rs.add(Rating.create(3, 8, 3)); rs.add(Rating.create(4, 8, 2)); rs.add(Rating.create(5, 8, 3)); rs.add(Rating.create(6, 8, 2)); rs.add(Rating.create(1, 9, 3)); rs.add(Rating.create(3, 9, 4)); data = StaticDataSource.fromList(rs).get(); config = new LenskitConfiguration(); config.bind(ItemScorer.class).to(ItemItemScorer.class); // this is the default config.bind(UserVectorNormalizer.class) .to(DefaultUserVectorNormalizer.class); config.bind(VectorNormalizer.class) .to(IdentityVectorNormalizer.class); LenskitRecommenderEngine engine = LenskitRecommenderEngine.build(config, data); session = engine.createRecommender(data); recommender = session.getItemRecommender(); }
@SuppressWarnings("deprecation") @Before public void setup() throws RecommenderBuildException { List<Rating> rs = new ArrayList<>(); rs.add(Rating.create(1, 1, 1)); rs.add(Rating.create(1, 5, 1)); rs.add(Rating.create(2, 1, 1)); rs.add(Rating.create(2, 7, 1)); rs.add(Rating.create(3, 7, 1)); rs.add(Rating.create(4, 1, 1)); rs.add(Rating.create(4, 5, 1)); rs.add(Rating.create(4, 7, 1)); rs.add(Rating.create(4, 10, 1)); StaticDataSource source = StaticDataSource.fromList(rs); DataAccessObject dao = source.get(); LenskitConfiguration config = new LenskitConfiguration(); config.bind(ItemBasedItemScorer.class).to(ItemItemItemBasedItemScorer.class); // this is the default config.bind(UserVectorNormalizer.class) .to(DefaultUserVectorNormalizer.class); config.bind(VectorNormalizer.class) .to(IdentityVectorNormalizer.class); LenskitRecommenderEngine engine = LenskitRecommenderEngine.build(config, dao); session = engine.createRecommender(dao); gRecommender = session.getItemBasedItemRecommender(); }
@Test public void testRecommendWithMinCommonUsers() { config.set(MinCommonUsers.class).to(1); session = LenskitRecommenderEngine.build(config, data).createRecommender(data); recommender = session.getItemRecommender(); List<Long> recs = recommender.recommend(1); assertThat(recs, hasSize(0)); recs = recommender.recommend(2); assertThat(recs, contains(9L)); }
@SuppressWarnings("deprecation") @Before public void setup() throws RecommenderBuildException { List<Rating> rs = new ArrayList<>(); rs.add(Rating.create(1, 5, 2)); rs.add(Rating.create(1, 7, 4)); rs.add(Rating.create(8, 4, 5)); rs.add(Rating.create(8, 5, 4)); StaticDataSource source = StaticDataSource.fromList(rs); dao = source.get(); LenskitConfiguration config = new LenskitConfiguration(); config.bind(ItemScorer.class).to(SlopeOneItemScorer.class); config.bind(PreferenceDomain.class).to(new PreferenceDomain(1, 5)); // factory.setComponent(UserVectorNormalizer.class, IdentityVectorNormalizer.class); config.bind(BaselineScorer.class, ItemScorer.class) .to(UserMeanItemScorer.class); config.bind(UserMeanBaseline.class, ItemScorer.class) .to(ItemMeanRatingItemScorer.class); engine = LenskitRecommenderEngine.build(config, dao); }
@Test public void testSnapshot() throws RecommenderBuildException { List<Rating> rs = new ArrayList<>(); rs.add(Rating.create(1, 5, 2)); rs.add(Rating.create(1, 7, 4)); rs.add(Rating.create(8, 4, 5)); rs.add(Rating.create(8, 5, 4)); StaticDataSource source = StaticDataSource.fromList(rs); DataAccessObject dao = source.get(); LenskitConfiguration config = new LenskitConfiguration(); config.bind(ItemScorer.class).to(UserUserItemScorer.class); config.bind(NeighborFinder.class).to(SnapshotNeighborFinder.class); LenskitRecommenderEngine engine = LenskitRecommenderEngine.build(config, dao); try (Recommender rec = engine.createRecommender(dao)) { assertThat(rec.getItemScorer(), instanceOf(UserUserItemScorer.class)); assertThat(rec.getItemRecommender(), instanceOf(TopNItemRecommender.class)); RatingPredictor pred = rec.getRatingPredictor(); assertThat(pred, instanceOf(SimpleRatingPredictor.class)); try (Recommender rec2 = engine.createRecommender(dao)) { assertThat(rec2.getItemScorer(), not(sameInstance(rec.getItemScorer()))); } } } }
/** * Build a recommender from a configuration. The recommender is immediately usable. This is * mostly useful for evaluations and test programs; more sophisticated applications that need * to build multiple recommenders from the same model should use a {@linkplain LenskitRecommenderEngine * recommender engine}. * * @param config The configuration. * @param dao The data access object. * @return The recommender. * @throws RecommenderBuildException If there is an error building the recommender. * @since 2.0 */ public static LenskitRecommender build(LenskitConfiguration config, DataAccessObject dao) throws RecommenderBuildException { return LenskitRecommenderEngine.build(config, dao).createRecommender(dao); } }
/** * Build a recommender from a configuration. The recommender is immediately usable. This is * mostly useful for evaluations and test programs; more sophisticated applications that need * to build multiple recommenders from the same model should use a {@linkplain LenskitRecommenderEngine * recommender engine}. * * @param config The configuration. * @return The recommender. * @throws RecommenderBuildException If there is an error building the recommender. * @since 2.0 * @deprecated Use {@link #build(LenskitConfiguration, DataAccessObject)} */ @Deprecated @SuppressWarnings("deprecation") public static LenskitRecommender build(LenskitConfiguration config) throws RecommenderBuildException { return LenskitRecommenderEngine.build(config).createRecommender(); }
@SuppressWarnings({"deprecation", "unchecked"}) private LenskitRecommenderEngine makeEngine() throws RecommenderBuildException { LenskitConfiguration config = new LenskitConfiguration(); config.bind(RatingMatrix.class) .to(PackedRatingMatrix.class); config.bind(ItemScorer.class) .to(FunkSVDItemScorer.class); config.bind(BiasModel.class).to(UserItemBiasModel.class); config.set(IterationCount.class) .to(10); config.set(FeatureCount.class) .to(20); return LenskitRecommenderEngine.build(config, dao); }
config.bind(BiasModel.class).to(LiveUserItemBiasModel.class); LenskitRecommenderEngine engine = LenskitRecommenderEngine.build(config, EntityCollectionDAO.create(ratings));
private LenskitRecommenderEngine makeEngine() throws RecommenderBuildException { LenskitConfiguration config = new LenskitConfiguration(); config.bind(RatingMatrix.class) .to(PackedRatingMatrix.class); config.bind(ItemScorer.class) .to(HPFItemScorer.class); config.bind(HPFModel.class) .toProvider(HPFModelProvider.class); config.set(ConvergenceCheckFrequency.class) .to(2); config.set(StoppingThreshold.class) .to(0.000001); config.set(FeatureCount.class) .to(5); config.set(SplitProportion.class) .to(0.1); // config.set(RandomSeed.class) // .to(System.currentTimeMillis()); config.set(IterationCount.class) .to(1000); config.set(IsProbabilityPrediction.class) .to(false); return LenskitRecommenderEngine.build(config, dao); }
LenskitRecommenderEngine engine = LenskitRecommenderEngine.build(config, dao); logger.info("built recommender engine");
LenskitRecommender rec = null; try { LenskitRecommenderEngine engine = LenskitRecommenderEngine.build(config, trainingModel); rec = engine.createRecommender(trainingModel); } catch (RecommenderBuildException e) {