t_tune | t_test | |
---|---|---|
0 | 2015-01-22 16:54:38.200 | 2017-03-24 01:52:26.050 |
ML25M Data Splitting
This page describes the analysis done to select the cutoffs for temporally-splitting the ML25M data set.
Split Windows
Following (Meng et al. 2020), we are going to prepare a global temporal split of the rating data. We will target a 70/15/15 train/tune/test split, but round the timestamps so our test splits are at clean calendar dates. Searching for quantiles will get us this.
This suggests that Jan. 2015 is a reasonable tuning set cutoff, and March/April 2017 a reasonable test set cutoff.
part | n_ratings | n_users | n_items | |
---|---|---|---|---|
0 | test | 3713624 | 24324 | 53058 |
1 | tune | 3850116 | 27077 | 36820 |
2 | train | 17436172 | 121672 | 22316 |
How many test users have at least 5 training ratings?
n_users | n_ratings | |
---|---|---|
0 | 6481 | 642289 |
And for tuning?
n_users | n_ratings | |
---|---|---|
0 | 4534 | 720161 |
This give us enough data to work with, even if we might like more test users. For more thoroughness, let’s look at how many test users we have by training rating count:
/home/mde48/lenskit/lenskit-codex/.pixi/envs/cuda-dev/lib/python3.12/site-packages/pandas/core/arraylike.py:399: RuntimeWarning: divide by zero encountered in log10
/tmp/ipykernel_517403/4033342475.py:1: DeprecationWarning: DataFrameGroupBy.apply operated on the grouping columns. This behavior is deprecated, and in a future version of pandas the grouping columns will be excluded from the operation. Either pass `include_groups=False` to exclude the groupings or explicitly select the grouping columns after groupby to silence this warning.
Since we have very small loss up through 10–11 ratings, we will use all users who appear at least once in training as our test users.