Skip to content

Instantly share code, notes, and snippets.

@jacekwasilewski
Created September 20, 2017 12:49
Show Gist options
  • Save jacekwasilewski/1f63e7703c910f0ef984840cc51eb50b to your computer and use it in GitHub Desktop.
Save jacekwasilewski/1f63e7703c910f0ef984840cc51eb50b to your computer and use it in GitHub Desktop.
FastUserIndex<Long> userIndex = SimpleFastUserIndex.load(userPath, lp);
FastItemIndex<Long> itemIndex = SimpleFastItemIndex.load(itemPath, lp);
FastPreferenceData<Long, Long> trainData = SimpleFastPreferenceData.load(trainDataPath, lp, lp, ddp, userIndex, itemIndex);
FastPreferenceData<Long, Long> testData = SimpleFastPreferenceData.load(testDataPath, lp, lp, ddp, userIndex, itemIndex);
FeatureData<Long, String, Double> featureData = SimpleFeatureData.load(featurePath, lp, sp, v -> 1.0);
int k = 20;
int numIter = 20;
double lambdaD = 0.5;
ItemDistanceModel<Long> dist = new CachedItemDistanceModel<>(new CosineFeatureItemDistanceModel<>(featureData), itemIndex);
Factorization<Long, Long> factorization = new DivRankALSFactorizer<Long, Long>(lambdaD, dist, numIter).factorize(k, trainData);
Recommender<Long, Long> recommender = new MFRecommender<>(userIndex, itemIndex, factorization);
Set<Long> targetUsers = testData.getUsersWithPreferences().collect(Collectors.toSet());
RecommendationFormat<Long, Long> format = new SimpleRecommendationFormat<>(lp, lp);
Function<Long, IntPredicate> filter = FastFilters.notInTrain(trainData);
int maxLength = 20;
RecommenderRunner<Long, Long> runner = new FastFilterRecommenderRunner<>(userIndex, itemIndex, targetUsers, format, filter, maxLength);
System.out.println("Running");
runner.run(recommender, "divrankals");
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment