@Override public RandomDataSplitStrategy get() { final int userNum = snapshot.userIndex().size(); final int itemNum = snapshot.itemIndex().size(); logger.info("Rating matrix size: {} users and {} items", userNum, itemNum); List<RatingMatrixEntry> allRatings = new ArrayList<>(snapshot.getRatings()); final int size = allRatings.size(); final int validationSize = Math.toIntExact(Math.round(size*proportion)); logger.info("validation set size: {} ratings", validationSize); Collections.shuffle(allRatings, random); List<RatingMatrixEntry> subList = allRatings.subList(0, validationSize); final List<RatingMatrixEntry> validationRatings = ImmutableList.copyOf(subList); subList.clear(); logger.info("validation rating size: {}", validationRatings.size()); final KeyIndex userIndex = snapshot.userIndex(); final KeyIndex itemIndex = snapshot.itemIndex(); return new RandomDataSplitStrategy(allRatings, validationRatings, userIndex, itemIndex); } }
Long2DoubleMap svioff = Long2DoubleSortedArrayMap.fromArray(snapshot.itemIndex(), ioff); return new LeastSquaresItemScorer(svuoff, svioff, mean);
snapshot.userIndex(), snapshot.itemIndex(), featureInfo);
KeyIndex snapshotItemIndex = snapshot.itemIndex(); for (RatingMatrixEntry re : trainingRatings) { int user = re.getUserIndex();
Long2DoubleMap svioff = Long2DoubleSortedArrayMap.fromArray(snapshot.itemIndex(), ioff); return new LeastSquaresItemScorer(svuoff, svioff, mean);
snapshot.userIndex(), snapshot.itemIndex(), featureInfo);