Getting Started#

This notebook gets you started with a brief nDCG evaluation with LensKit for Python.

This notebook is also available on Google Collaboratory and nbviewer.

Setup#

We first import the LensKit components we need:

from lenskit.als import BiasedMFScorer
from lenskit.batch import recommend
from lenskit.data import ItemListCollection, UserIDKey, load_movielens
from lenskit.knn import ItemKNNScorer
from lenskit.metrics import NDCG, RBP, RecipRank, RunAnalysis
from lenskit.pipeline import topn_pipeline
from lenskit.splitting import SampleFrac, crossfold_users

And Pandas is very useful, as is Seaborn for plotting:

import matplotlib.pyplot as plt
import seaborn as sns

The pyprojroot package makes it easy to find input data:

from pyprojroot.here import here

Loading Data#

We’re going to use the ML-100K data set:

ml100k = load_movielens(here("data/ml-100k.zip"))
ml100k.interaction_log("pandas", original_ids=True).head()
user_id item_id rating timestamp
0 1 1 5.0 874965758
1 1 2 3.0 876893171
2 1 3 4.0 878542960
3 1 4 3.0 876893119
4 1 5 3.0 889751712

Defining Recommenders#

Let’s set up two scoring models:

model_ii = ItemKNNScorer(20)
model_als = BiasedMFScorer(50)

For each of these, we also need to make a :ref:pipeline <pipeline>:

pipe_ii = topn_pipeline(model_ii)
pipe_als = topn_pipeline(model_als)

Running the Evaluation#

In LensKit, our evaluation proceeds in 2 steps:

  1. Generate recommendations

  2. Measure them

If memory is a concern, we can measure while generating, but we will not do that for now.

Let’s start by creating and collecting the recommendations; we will generate 100 recommendations per user, and will collect all of them into a single ItemListCollection:

# test data is organized by user
all_test = ItemListCollection(UserIDKey)
# recommendations will be organized by model and user ID
all_recs = ItemListCollection(["model", "user_id"])

for split in crossfold_users(ml100k, 5, SampleFrac(0.2)):
    # collect the test data
    all_test.add_from(split.test)

    # train the pipeline, cloning first so a fresh pipeline for each split
    fit_als = pipe_als.clone()
    fit_als.train(split.train)
    # generate recs
    als_recs = recommend(fit_als, split.test.keys(), 100)
    all_recs.add_from(als_recs, model="ALS")

    # do the same for item-item
    fit_ii = pipe_ii.clone()
    fit_ii.train(split.train)
    ii_recs = recommend(fit_ii, split.test.keys(), 100)
    all_recs.add_from(ii_recs, model="II")
/Users/michael/Documents/LensKit/lkpy/lenskit/lenskit/als/_explicit.py:91: UserWarning: Sparse CSR tensor support is in beta state. If you miss a functionality in the sparse tensor support, please submit a feature request to https://github.com/pytorch/pytorch/issues. (Triggered internally at /Users/runner/miniforge3/conda-bld/libtorch_1732815742335/work/aten/src/ATen/SparseCsrTensorImpl.cpp:55.)
  rmat = rmat.to_sparse_csr()

epoch 1 users:   0%|                                                                                                                         | 0/943 [00:00<?, ?it/s]


                                                                                                                                                                     


epoch 1 items:   0%|                                                                                                                        | 0/1682 [00:00<?, ?it/s]


                                                                                                                                                                     

Training ALS:  10%|███████████▌                                                                                                       | 1/10 [00:00<00:01,  7.65it/s]

epoch 2 users:   0%|                                                                                                                         | 0/943 [00:00<?, ?it/s]


                                                                                                                                                                     


epoch 2 items:   0%|                                                                                                                        | 0/1682 [00:00<?, ?it/s]


                                                                                                                                                                     


epoch 3 users:   0%|                                                                                                                         | 0/943 [00:00<?, ?it/s]


                                                                                                                                                                     


epoch 3 items:   0%|                                                                                                                        | 0/1682 [00:00<?, ?it/s]


                                                                                                                                                                     

Training ALS:  30%|██████████████████████████████████▌                                                                                | 3/10 [00:00<00:00, 13.93it/s]

epoch 4 users:   0%|                                                                                                                         | 0/943 [00:00<?, ?it/s]


                                                                                                                                                                     


epoch 4 items:   0%|                                                                                                                        | 0/1682 [00:00<?, ?it/s]


                                                                                                                                                                     


epoch 5 users:   0%|                                                                                                                         | 0/943 [00:00<?, ?it/s]


                                                                                                                                                                     


epoch 5 items:   0%|                                                                                                                        | 0/1682 [00:00<?, ?it/s]


                                                                                                                                                                     


epoch 6 users:   0%|                                                                                                                         | 0/943 [00:00<?, ?it/s]


                                                                                                                                                                     


epoch 6 items:   0%|                                                                                                                        | 0/1682 [00:00<?, ?it/s]


                                                                                                                                                                     

Training ALS:  60%|█████████████████████████████████████████████████████████████████████                                              | 6/10 [00:00<00:00, 17.22it/s]

epoch 7 users:   0%|                                                                                                                         | 0/943 [00:00<?, ?it/s]


                                                                                                                                                                     


epoch 7 items:   0%|                                                                                                                        | 0/1682 [00:00<?, ?it/s]


                                                                                                                                                                     


epoch 8 users:   0%|                                                                                                                         | 0/943 [00:00<?, ?it/s]


                                                                                                                                                                     


epoch 8 items:   0%|                                                                                                                        | 0/1682 [00:00<?, ?it/s]


                                                                                                                                                                     


epoch 9 users:   0%|                                                                                                                         | 0/943 [00:00<?, ?it/s]


                                                                                                                                                                     


epoch 9 items:   0%|                                                                                                                        | 0/1682 [00:00<?, ?it/s]


                                                                                                                                                                     

Training ALS:  90%|███████████████████████████████████████████████████████████████████████████████████████████████████████▌           | 9/10 [00:00<00:00, 18.70it/s]

epoch 10 users:   0%|                                                                                                                        | 0/943 [00:00<?, ?it/s]


                                                                                                                                                                     


epoch 10 items:   0%|                                                                                                                       | 0/1682 [00:00<?, ?it/s]


                                                                                                                                                                     

                                                                                                                                                                     

Recommending:   0%|                                                                                                                          | 0/189 [00:00<?, ?it/s]
Recommending:   1%|▌                                                                                                                 | 1/189 [00:07<24:36,  7.85s/it]
                                                                                                                                                                     

items:   0%|                                                                                                                                | 0/1682 [00:00<?, ?it/s]
items:  39%|████████████████████████████████████████████▋                                                                       | 648/1682 [00:00<00:00, 6479.30it/s]
items:  39%|████████████████████████████████████████████▉                                                                       | 652/1682 [00:00<00:00, 6466.72it/s]
items:  39%|█████████████████████████████████████████████                                                                       | 654/1682 [00:00<00:00, 6466.72it/s]
items:  39%|█████████████████████████████████████████████▍                                                                      | 659/1682 [00:00<00:00, 6466.72it/s]
items:  78%|██████████████████████████████████████████████████████████████████████████████████████████▏                        | 1320/1682 [00:00<00:00, 6510.64it/s]
items:  79%|██████████████████████████████████████████████████████████████████████████████████████████▌                        | 1325/1682 [00:00<00:00, 6571.18it/s]
items:  79%|██████████████████████████████████████████████████████████████████████████████████████████▌                        | 1325/1682 [00:00<00:00, 6571.18it/s]
items:  79%|██████████████████████████████████████████████████████████████████████████████████████████▋                        | 1327/1682 [00:00<00:00, 6571.18it/s]
items:  79%|██████████████████████████████████████████████████████████████████████████████████████████▊                        | 1328/1682 [00:00<00:00, 6571.18it/s]
items:  79%|███████████████████████████████████████████████████████████████████████████████████████████                        | 1332/1682 [00:00<00:00, 6571.18it/s]
                                                                                                                                                                     

Recommending:   0%|                                                                                                                          | 0/189 [00:00<?, ?it/s]
Recommending:   1%|▌                                                                                                                 | 1/189 [00:03<10:39,  3.40s/it]
Recommending:  13%|██████████████▉                                                                                                  | 25/189 [00:03<00:16,  9.95it/s]
Recommending:  21%|███████████████████████▉                                                                                         | 40/189 [00:03<00:08, 17.08it/s]
Recommending:  28%|███████████████████████████████▋                                                                                 | 53/189 [00:03<00:05, 23.61it/s]
Recommending:  37%|█████████████████████████████████████████▎                                                                       | 69/189 [00:03<00:03, 35.34it/s]
Recommending:  51%|█████████████████████████████████████████████████████████▉                                                       | 97/189 [00:04<00:01, 60.98it/s]
Recommending:  62%|█████████████████████████████████████████████████████████████████████▉                                          | 118/189 [00:04<00:00, 80.23it/s]
Recommending:  75%|██████████████████████████████████████████████████████████████████████████████████▊                            | 141/189 [00:04<00:00, 100.46it/s]
Recommending:  92%|██████████████████████████████████████████████████████████████████████████████████████████████████████▏        | 174/189 [00:04<00:00, 137.07it/s]
                                                                                                                                                                     

Training ALS:   0%|                                                                                                                           | 0/10 [00:00<?, ?it/s]

epoch 1 users:   0%|                                                                                                                         | 0/943 [00:00<?, ?it/s]


                                                                                                                                                                     


epoch 1 items:   0%|                                                                                                                        | 0/1682 [00:00<?, ?it/s]


                                                                                                                                                                     


epoch 2 users:   0%|                                                                                                                         | 0/943 [00:00<?, ?it/s]


                                                                                                                                                                     


epoch 2 items:   0%|                                                                                                                        | 0/1682 [00:00<?, ?it/s]


                                                                                                                                                                     


epoch 3 users:   0%|                                                                                                                         | 0/943 [00:00<?, ?it/s]


                                                                                                                                                                     


epoch 3 items:   0%|                                                                                                                        | 0/1682 [00:00<?, ?it/s]


                                                                                                                                                                     

Training ALS:  30%|██████████████████████████████████▌                                                                                | 3/10 [00:00<00:00, 20.82it/s]

epoch 4 users:   0%|                                                                                                                         | 0/943 [00:00<?, ?it/s]


                                                                                                                                                                     


epoch 4 items:   0%|                                                                                                                        | 0/1682 [00:00<?, ?it/s]


                                                                                                                                                                     


epoch 5 users:   0%|                                                                                                                         | 0/943 [00:00<?, ?it/s]


                                                                                                                                                                     


epoch 5 items:   0%|                                                                                                                        | 0/1682 [00:00<?, ?it/s]


                                                                                                                                                                     


epoch 6 users:   0%|                                                                                                                         | 0/943 [00:00<?, ?it/s]


                                                                                                                                                                     


epoch 6 items:   0%|                                                                                                                        | 0/1682 [00:00<?, ?it/s]


                                                                                                                                                                     

Training ALS:  60%|█████████████████████████████████████████████████████████████████████                                              | 6/10 [00:00<00:00, 20.86it/s]

epoch 7 users:   0%|                                                                                                                         | 0/943 [00:00<?, ?it/s]


                                                                                                                                                                     


epoch 7 items:   0%|                                                                                                                        | 0/1682 [00:00<?, ?it/s]


                                                                                                                                                                     


epoch 8 users:   0%|                                                                                                                         | 0/943 [00:00<?, ?it/s]


                                                                                                                                                                     


epoch 8 items:   0%|                                                                                                                        | 0/1682 [00:00<?, ?it/s]


                                                                                                                                                                     


epoch 9 users:   0%|                                                                                                                         | 0/943 [00:00<?, ?it/s]


                                                                                                                                                                     


epoch 9 items:   0%|                                                                                                                        | 0/1682 [00:00<?, ?it/s]


                                                                                                                                                                     

Training ALS:  90%|███████████████████████████████████████████████████████████████████████████████████████████████████████▌           | 9/10 [00:00<00:00, 20.64it/s]

epoch 10 users:   0%|                                                                                                                        | 0/943 [00:00<?, ?it/s]


                                                                                                                                                                     


epoch 10 items:   0%|                                                                                                                       | 0/1682 [00:00<?, ?it/s]


                                                                                                                                                                     

                                                                                                                                                                     

Recommending:   0%|                                                                                                                          | 0/189 [00:00<?, ?it/s]
Recommending:   1%|▌                                                                                                                 | 1/189 [00:03<10:32,  3.37s/it]
                                                                                                                                                                     

items:   0%|                                                                                                                                | 0/1682 [00:00<?, ?it/s]
items:  38%|████████████████████████████████████████████▌                                                                       | 646/1682 [00:00<00:00, 6455.30it/s]
items:  39%|████████████████████████████████████████████▊                                                                       | 649/1682 [00:00<00:00, 6440.73it/s]
items:  39%|████████████████████████████████████████████▉                                                                       | 651/1682 [00:00<00:00, 6440.73it/s]
items:  80%|████████████████████████████████████████████████████████████████████████████████████████████▍                      | 1352/1682 [00:00<00:00, 6649.20it/s]
items:  81%|████████████████████████████████████████████████████████████████████████████████████████████▋                      | 1356/1682 [00:00<00:00, 6816.17it/s]
items:  81%|████████████████████████████████████████████████████████████████████████████████████████████▉                      | 1359/1682 [00:00<00:00, 6816.17it/s]
                                                                                                                                                                     

Recommending:   0%|                                                                                                                          | 0/189 [00:00<?, ?it/s]
Recommending:   1%|▌                                                                                                                 | 1/189 [00:03<10:44,  3.43s/it]
Recommending:  14%|███████████████▌                                                                                                 | 26/189 [00:03<00:15, 10.24it/s]
Recommending:  24%|██████████████████████████▉                                                                                      | 45/189 [00:03<00:07, 19.64it/s]
Recommending:  32%|████████████████████████████████████▍                                                                            | 61/189 [00:03<00:04, 29.52it/s]
Recommending:  40%|█████████████████████████████████████████████▍                                                                   | 76/189 [00:03<00:02, 39.93it/s]
Recommending:  48%|██████████████████████████████████████████████████████▍                                                          | 91/189 [00:04<00:01, 51.27it/s]
Recommending:  57%|████████████████████████████████████████████████████████████████                                                | 108/189 [00:04<00:01, 67.04it/s]
Recommending:  68%|███████████████████████████████████████████████████████████████████████████▊                                    | 128/189 [00:04<00:00, 87.01it/s]
Recommending:  84%|█████████████████████████████████████████████████████████████████████████████████████████████▍                 | 159/189 [00:04<00:00, 123.54it/s]
Recommending:  94%|████████████████████████████████████████████████████████████████████████████████████████████████████████▌      | 178/189 [00:04<00:00, 129.85it/s]
                                                                                                                                                                     

Training ALS:   0%|                                                                                                                           | 0/10 [00:00<?, ?it/s]

epoch 1 users:   0%|                                                                                                                         | 0/943 [00:00<?, ?it/s]


                                                                                                                                                                     


epoch 1 items:   0%|                                                                                                                        | 0/1682 [00:00<?, ?it/s]


                                                                                                                                                                     


epoch 2 users:   0%|                                                                                                                         | 0/943 [00:00<?, ?it/s]


                                                                                                                                                                     


epoch 2 items:   0%|                                                                                                                        | 0/1682 [00:00<?, ?it/s]


                                                                                                                                                                     

Training ALS:  20%|███████████████████████                                                                                            | 2/10 [00:00<00:00, 19.78it/s]

epoch 3 users:   0%|                                                                                                                         | 0/943 [00:00<?, ?it/s]


                                                                                                                                                                     


epoch 3 items:   0%|                                                                                                                        | 0/1682 [00:00<?, ?it/s]


                                                                                                                                                                     


epoch 4 users:   0%|                                                                                                                         | 0/943 [00:00<?, ?it/s]


                                                                                                                                                                     


epoch 4 items:   0%|                                                                                                                        | 0/1682 [00:00<?, ?it/s]


                                                                                                                                                                     


epoch 5 users:   0%|                                                                                                                         | 0/943 [00:00<?, ?it/s]


                                                                                                                                                                     


epoch 5 items:   0%|                                                                                                                        | 0/1682 [00:00<?, ?it/s]


                                                                                                                                                                     

Training ALS:  50%|█████████████████████████████████████████████████████████▌                                                         | 5/10 [00:00<00:00, 20.56it/s]

epoch 6 users:   0%|                                                                                                                         | 0/943 [00:00<?, ?it/s]


                                                                                                                                                                     


epoch 6 items:   0%|                                                                                                                        | 0/1682 [00:00<?, ?it/s]


                                                                                                                                                                     


epoch 7 users:   0%|                                                                                                                         | 0/943 [00:00<?, ?it/s]


                                                                                                                                                                     


epoch 7 items:   0%|                                                                                                                        | 0/1682 [00:00<?, ?it/s]


                                                                                                                                                                     


epoch 8 users:   0%|                                                                                                                         | 0/943 [00:00<?, ?it/s]


                                                                                                                                                                     


epoch 8 items:   0%|                                                                                                                        | 0/1682 [00:00<?, ?it/s]


                                                                                                                                                                     

Training ALS:  80%|████████████████████████████████████████████████████████████████████████████████████████████                       | 8/10 [00:00<00:00, 20.69it/s]

epoch 9 users:   0%|                                                                                                                         | 0/943 [00:00<?, ?it/s]


                                                                                                                                                                     


epoch 9 items:   0%|                                                                                                                        | 0/1682 [00:00<?, ?it/s]


                                                                                                                                                                     


epoch 10 users:   0%|                                                                                                                        | 0/943 [00:00<?, ?it/s]


                                                                                                                                                                     


epoch 10 items:   0%|                                                                                                                       | 0/1682 [00:00<?, ?it/s]


                                                                                                                                                                     

                                                                                                                                                                     

Recommending:   0%|                                                                                                                          | 0/189 [00:00<?, ?it/s]
Recommending:   1%|▌                                                                                                                 | 1/189 [00:03<10:29,  3.35s/it]
                                                                                                                                                                     

items:   0%|                                                                                                                                | 0/1682 [00:00<?, ?it/s]
items:  40%|██████████████████████████████████████████████▏                                                                     | 669/1682 [00:00<00:00, 6677.25it/s]
items:  40%|██████████████████████████████████████████████▍                                                                     | 674/1682 [00:00<00:00, 6658.85it/s]
items:  40%|██████████████████████████████████████████████▌                                                                     | 676/1682 [00:00<00:00, 6658.85it/s]
items:  40%|██████████████████████████████████████████████▉                                                                     | 680/1682 [00:00<00:00, 6658.85it/s]
items:  41%|███████████████████████████████████████████████                                                                     | 683/1682 [00:00<00:00, 6658.85it/s]
items:  41%|███████████████████████████████████████████████▏                                                                    | 685/1682 [00:00<00:00, 6658.85it/s]
items:  81%|█████████████████████████████████████████████████████████████████████████████████████████████                      | 1361/1682 [00:00<00:00, 6677.71it/s]
items:  81%|█████████████████████████████████████████████████████████████████████████████████████████████▍                     | 1366/1682 [00:00<00:00, 6705.74it/s]
items:  81%|█████████████████████████████████████████████████████████████████████████████████████████████▍                     | 1367/1682 [00:00<00:00, 6705.74it/s]
items:  81%|█████████████████████████████████████████████████████████████████████████████████████████████▍                     | 1367/1682 [00:00<00:00, 6705.74it/s]
items:  81%|█████████████████████████████████████████████████████████████████████████████████████████████▌                     | 1369/1682 [00:00<00:00, 6705.74it/s]
                                                                                                                                                                     

Recommending:   0%|                                                                                                                          | 0/189 [00:00<?, ?it/s]
Recommending:   1%|▌                                                                                                                 | 1/189 [00:03<10:34,  3.37s/it]
Recommending:  13%|██████████████▉                                                                                                  | 25/189 [00:03<00:16, 10.03it/s]
Recommending:  24%|███████████████████████████▌                                                                                     | 46/189 [00:03<00:06, 20.85it/s]
Recommending:  34%|██████████████████████████████████████▊                                                                          | 65/189 [00:03<00:03, 32.96it/s]
Recommending:  43%|█████████████████████████████████████████████████                                                                | 82/189 [00:03<00:02, 45.57it/s]
Recommending:  53%|███████████████████████████████████████████████████████████▎                                                    | 100/189 [00:03<00:01, 60.65it/s]
Recommending:  62%|█████████████████████████████████████████████████████████████████████▉                                          | 118/189 [00:04<00:00, 75.93it/s]
Recommending:  78%|██████████████████████████████████████████████████████████████████████████████████████▉                        | 148/189 [00:04<00:00, 108.27it/s]
Recommending:  92%|█████████████████████████████████████████████████████████████████████████████████████████████████████▌         | 173/189 [00:04<00:00, 127.76it/s]
                                                                                                                                                                     

Training ALS:   0%|                                                                                                                           | 0/10 [00:00<?, ?it/s]

epoch 1 users:   0%|                                                                                                                         | 0/943 [00:00<?, ?it/s]


                                                                                                                                                                     


epoch 1 items:   0%|                                                                                                                        | 0/1682 [00:00<?, ?it/s]


                                                                                                                                                                     


epoch 2 users:   0%|                                                                                                                         | 0/943 [00:00<?, ?it/s]


                                                                                                                                                                     


epoch 2 items:   0%|                                                                                                                        | 0/1682 [00:00<?, ?it/s]


                                                                                                                                                                     


epoch 3 users:   0%|                                                                                                                         | 0/943 [00:00<?, ?it/s]


                                                                                                                                                                     


epoch 3 items:   0%|                                                                                                                        | 0/1682 [00:00<?, ?it/s]


                                                                                                                                                                     

Training ALS:  30%|██████████████████████████████████▌                                                                                | 3/10 [00:00<00:00, 20.52it/s]

epoch 4 users:   0%|                                                                                                                         | 0/943 [00:00<?, ?it/s]


                                                                                                                                                                     


epoch 4 items:   0%|                                                                                                                        | 0/1682 [00:00<?, ?it/s]


                                                                                                                                                                     


epoch 5 users:   0%|                                                                                                                         | 0/943 [00:00<?, ?it/s]


                                                                                                                                                                     


epoch 5 items:   0%|                                                                                                                        | 0/1682 [00:00<?, ?it/s]


                                                                                                                                                                     


epoch 6 users:   0%|                                                                                                                         | 0/943 [00:00<?, ?it/s]


                                                                                                                                                                     


epoch 6 items:   0%|                                                                                                                        | 0/1682 [00:00<?, ?it/s]


                                                                                                                                                                     

Training ALS:  60%|█████████████████████████████████████████████████████████████████████                                              | 6/10 [00:00<00:00, 20.65it/s]

epoch 7 users:   0%|                                                                                                                         | 0/943 [00:00<?, ?it/s]


                                                                                                                                                                     


epoch 7 items:   0%|                                                                                                                        | 0/1682 [00:00<?, ?it/s]


                                                                                                                                                                     


epoch 8 users:   0%|                                                                                                                         | 0/943 [00:00<?, ?it/s]


                                                                                                                                                                     


epoch 8 items:   0%|                                                                                                                        | 0/1682 [00:00<?, ?it/s]


                                                                                                                                                                     


epoch 9 users:   0%|                                                                                                                         | 0/943 [00:00<?, ?it/s]


                                                                                                                                                                     


epoch 9 items:   0%|                                                                                                                        | 0/1682 [00:00<?, ?it/s]


                                                                                                                                                                     

Training ALS:  90%|███████████████████████████████████████████████████████████████████████████████████████████████████████▌           | 9/10 [00:00<00:00, 20.62it/s]

epoch 10 users:   0%|                                                                                                                        | 0/943 [00:00<?, ?it/s]


                                                                                                                                                                     


epoch 10 items:   0%|                                                                                                                       | 0/1682 [00:00<?, ?it/s]


                                                                                                                                                                     

                                                                                                                                                                     

Recommending:   0%|                                                                                                                          | 0/188 [00:00<?, ?it/s]
Recommending:   1%|▌                                                                                                                 | 1/188 [00:03<10:24,  3.34s/it]
                                                                                                                                                                     

items:   0%|                                                                                                                                | 0/1682 [00:00<?, ?it/s]
items:  41%|███████████████████████████████████████████████                                                                     | 682/1682 [00:00<00:00, 6818.79it/s]
items:  41%|███████████████████████████████████████████████▍                                                                    | 688/1682 [00:00<00:00, 6795.39it/s]
items:  41%|███████████████████████████████████████████████▌                                                                    | 689/1682 [00:00<00:00, 6795.39it/s]
items:  41%|███████████████████████████████████████████████▌                                                                    | 690/1682 [00:00<00:00, 6795.39it/s]
items:  41%|███████████████████████████████████████████████▋                                                                    | 691/1682 [00:00<00:00, 6795.39it/s]
items:  41%|███████████████████████████████████████████████▊                                                                    | 694/1682 [00:00<00:00, 6795.39it/s]
items:  41%|████████████████████████████████████████████████                                                                    | 696/1682 [00:00<00:00, 6795.39it/s]
items:  82%|██████████████████████████████████████████████████████████████████████████████████████████████▏                    | 1377/1682 [00:00<00:00, 6755.14it/s]
items:  82%|██████████████████████████████████████████████████████████████████████████████████████████████▍                    | 1382/1682 [00:00<00:00, 6690.06it/s]
items:  82%|██████████████████████████████████████████████████████████████████████████████████████████████▋                    | 1384/1682 [00:00<00:00, 6690.06it/s]
items:  82%|██████████████████████████████████████████████████████████████████████████████████████████████▋                    | 1384/1682 [00:00<00:00, 6690.06it/s]
items:  82%|██████████████████████████████████████████████████████████████████████████████████████████████▊                    | 1387/1682 [00:00<00:00, 6690.06it/s]
                                                                                                                                                                     

Recommending:   0%|                                                                                                                          | 0/188 [00:00<?, ?it/s]
Recommending:   1%|▌                                                                                                                 | 1/188 [00:03<10:26,  3.35s/it]
Recommending:  16%|██████████████████▋                                                                                              | 31/188 [00:03<00:12, 12.44it/s]
Recommending:  24%|███████████████████████████▋                                                                                     | 46/188 [00:03<00:07, 19.91it/s]
Recommending:  32%|████████████████████████████████████▋                                                                            | 61/188 [00:03<00:04, 28.67it/s]
Recommending:  44%|█████████████████████████████████████████████████▎                                                               | 82/188 [00:03<00:02, 43.34it/s]
Recommending:  56%|██████████████████████████████████████████████████████████████▌                                                 | 105/188 [00:03<00:01, 63.17it/s]
Recommending:  64%|████████████████████████████████████████████████████████████████████████                                        | 121/188 [00:04<00:00, 74.62it/s]
Recommending:  78%|██████████████████████████████████████████████████████████████████████████████████████▏                        | 146/188 [00:04<00:00, 101.33it/s]
Recommending:  91%|█████████████████████████████████████████████████████████████████████████████████████████████████████▌         | 172/188 [00:04<00:00, 129.84it/s]
                                                                                                                                                                     

Training ALS:   0%|                                                                                                                           | 0/10 [00:00<?, ?it/s]

epoch 1 users:   0%|                                                                                                                         | 0/943 [00:00<?, ?it/s]


                                                                                                                                                                     


epoch 1 items:   0%|                                                                                                                        | 0/1682 [00:00<?, ?it/s]


                                                                                                                                                                     


epoch 2 users:   0%|                                                                                                                         | 0/943 [00:00<?, ?it/s]


                                                                                                                                                                     


epoch 2 items:   0%|                                                                                                                        | 0/1682 [00:00<?, ?it/s]


                                                                                                                                                                     


epoch 3 users:   0%|                                                                                                                         | 0/943 [00:00<?, ?it/s]


                                                                                                                                                                     


epoch 3 items:   0%|                                                                                                                        | 0/1682 [00:00<?, ?it/s]


                                                                                                                                                                     

Training ALS:  30%|██████████████████████████████████▌                                                                                | 3/10 [00:00<00:00, 20.58it/s]

epoch 4 users:   0%|                                                                                                                         | 0/943 [00:00<?, ?it/s]


                                                                                                                                                                     


epoch 4 items:   0%|                                                                                                                        | 0/1682 [00:00<?, ?it/s]


                                                                                                                                                                     


epoch 5 users:   0%|                                                                                                                         | 0/943 [00:00<?, ?it/s]


                                                                                                                                                                     


epoch 5 items:   0%|                                                                                                                        | 0/1682 [00:00<?, ?it/s]


                                                                                                                                                                     


epoch 6 users:   0%|                                                                                                                         | 0/943 [00:00<?, ?it/s]


                                                                                                                                                                     


epoch 6 items:   0%|                                                                                                                        | 0/1682 [00:00<?, ?it/s]


                                                                                                                                                                     

Training ALS:  60%|█████████████████████████████████████████████████████████████████████                                              | 6/10 [00:00<00:00, 20.77it/s]

epoch 7 users:   0%|                                                                                                                         | 0/943 [00:00<?, ?it/s]


                                                                                                                                                                     


epoch 7 items:   0%|                                                                                                                        | 0/1682 [00:00<?, ?it/s]


                                                                                                                                                                     


epoch 8 users:   0%|                                                                                                                         | 0/943 [00:00<?, ?it/s]


                                                                                                                                                                     


epoch 8 items:   0%|                                                                                                                        | 0/1682 [00:00<?, ?it/s]


                                                                                                                                                                     


epoch 9 users:   0%|                                                                                                                         | 0/943 [00:00<?, ?it/s]


                                                                                                                                                                     


epoch 9 items:   0%|                                                                                                                        | 0/1682 [00:00<?, ?it/s]


                                                                                                                                                                     

Training ALS:  90%|███████████████████████████████████████████████████████████████████████████████████████████████████████▌           | 9/10 [00:00<00:00, 20.49it/s]

epoch 10 users:   0%|                                                                                                                        | 0/943 [00:00<?, ?it/s]


                                                                                                                                                                     


epoch 10 items:   0%|                                                                                                                       | 0/1682 [00:00<?, ?it/s]


                                                                                                                                                                     

                                                                                                                                                                     

Recommending:   0%|                                                                                                                          | 0/188 [00:00<?, ?it/s]
Recommending:   1%|▌                                                                                                                 | 1/188 [00:03<10:24,  3.34s/it]
                                                                                                                                                                     

items:   0%|                                                                                                                                | 0/1682 [00:00<?, ?it/s]
items:  39%|█████████████████████████████████████████████▌                                                                      | 661/1682 [00:00<00:00, 6591.54it/s]
items:  40%|█████████████████████████████████████████████▉                                                                      | 666/1682 [00:00<00:00, 6588.82it/s]
items:  40%|██████████████████████████████████████████████▏                                                                     | 669/1682 [00:00<00:00, 6588.82it/s]
items:  40%|██████████████████████████████████████████████▏                                                                     | 669/1682 [00:00<00:00, 6588.82it/s]
items:  84%|████████████████████████████████████████████████████████████████████████████████████████████████                   | 1405/1682 [00:00<00:00, 6843.10it/s]
                                                                                                                                                                     

Recommending:   0%|                                                                                                                          | 0/188 [00:00<?, ?it/s]
Recommending:   1%|▌                                                                                                                 | 1/188 [00:03<10:56,  3.51s/it]
Recommending:  11%|████████████                                                                                                     | 20/188 [00:03<00:21,  7.69it/s]
Recommending:  20%|██████████████████████▏                                                                                          | 37/188 [00:03<00:09, 16.16it/s]
Recommending:  27%|██████████████████████████████▋                                                                                  | 51/188 [00:03<00:05, 24.43it/s]
Recommending:  41%|██████████████████████████████████████████████▎                                                                  | 77/188 [00:03<00:02, 44.86it/s]
Recommending:  52%|██████████████████████████████████████████████████████████▎                                                      | 97/188 [00:04<00:01, 60.09it/s]
Recommending:  60%|███████████████████████████████████████████████████████████████████▎                                            | 113/188 [00:04<00:01, 72.82it/s]
Recommending:  72%|████████████████████████████████████████████████████████████████████████████████▍                               | 135/188 [00:04<00:00, 94.10it/s]
Recommending:  90%|███████████████████████████████████████████████████████████████████████████████████████████████████▊           | 169/188 [00:04<00:00, 133.14it/s]
                                                                                                                                                                     

Measuring Recommendations#

We analyze our recommendation lists with a RunAnalysis and some metrics.

ran = RunAnalysis()
ran.add_metric(NDCG())
ran.add_metric(RBP())
ran.add_metric(RecipRank())
results = ran.compute(all_recs, all_test)
lists:  99%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎| 1874/1886 [00:00<00:00, 8649.59it/s]
                                                                                                                                                                     

Now we have nDCG values, along with some other metrics! We can start computing and plotting.

results.list_metrics().groupby("model").mean()
NDCG RBP RecipRank
model
ALS 0.080082 0.021305 0.082607
II 0.059951 0.005444 0.039962
sns.catplot(results.list_metrics().reset_index(), x="model", y="NDCG", kind="bar")
plt.show()
../_images/a49c750e29041ead8ee0bc66146f9272058c2e2efe7a0c1bc13cb2861903f7e3.png