@Override public Long2DoubleMap unapply(Long2DoubleMap input) { Long2DoubleMap biases = model.getUserBiases(input.keySet()); return Vectors.combine(input, biases, 1.0, itemBias); }
@Override public Long2DoubleMap apply(Long2DoubleMap input) { Long2DoubleMap biases = model.getUserBiases(input.keySet()); return Vectors.combine(input, biases, -1.0, -itemBias); } }
@Test public void testManyUsers() { Generator<Double> globals = doubles(); for (Map<Long,Double> map: someMaps(positiveLongs(), doubles())) { double bias = globals.next(); Long2DoubleMap userBiases = Long2DoubleSortedArrayMap.create(map); BiasModel model = new UserItemBiasModel(bias, userBiases, Long2DoubleMaps.EMPTY_MAP); assertThat(model.getIntercept(), equalTo(bias)); assertThat(model.getUserBiases(userBiases.keySet()), equalTo(userBiases)); for (Set<Long> users : someSets(positiveLongs())) { Long2DoubleMap biases = model.getUserBiases(LongUtils.packedSet(users)); for (long user: users) { if (userBiases.containsKey(user)) { assertThat(biases.get(user), equalTo(userBiases.get(user))); } else { assertThat(biases.get(user), equalTo(0.0)); } } } } }
@Override public Long2DoubleMap unapply(Long2DoubleMap input) { Long2DoubleMap biases = model.getUserBiases(input.keySet()); return Vectors.combine(input, biases, 1.0, itemBias); }
@Override public Long2DoubleMap apply(Long2DoubleMap input) { Long2DoubleMap biases = model.getUserBiases(input.keySet()); return Vectors.combine(input, biases, -1.0, -itemBias); } }