Skip to content

All Items methodology

AllItemsMethodology(items_list=None)

Bases: Methodology

Class which, given a train set and a test set, has the task to calculate which items must be used in order to generate a recommendation list

With AllItemsMethodology, given a user \(u\), items to recommend for \(u\) are all items that appear in items_list parameter excluding those items that appear in the train set of \(u\)

If items_list is None, then the union of items that appear in the train and test set will be considered

PARAMETER DESCRIPTION
items_list

Items set that must appear in the recommendation list of every user. If None, all items that appear in the train and test set will be considered

TYPE: Union[Sequence[str], Sequence[int]] DEFAULT: None

Source code in clayrs/recsys/methodology.py
320
321
322
323
324
325
def __init__(self, items_list: Union[Sequence[str], Sequence[int]] = None):
    self.items_list = items_list
    if items_list is not None:
        self.items_list = np.array(items_list)

    super(AllItemsMethodology, self).__init__(None)

filter_single(user_idx, train_set, test_set)

Method that returns items that needs to be part of the recommendation list of a single user. Since it's the AllItems Methodology, all items that appear in the items_list parameter of the constructor will be returned, except for those that appear in the train set of the user passed as parameter

PARAMETER DESCRIPTION
user_idx

User idx (meaning its mapped integer) of which we want to calculate items that must appear in its recommendation list

TYPE: int

train_set

Ratings object which contains the train set of every user

TYPE: Ratings

test_set

Ratings object which contains the test set of every user

TYPE: Ratings

Source code in clayrs/recsys/methodology.py
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
def filter_single(self, user_idx: int, train_set: Ratings, test_set: Ratings) -> np.ndarray:
    """
    Method that returns items that needs to be part of the recommendation list of a single user.
    Since it's the AllItems Methodology, all items that appear in the `items_list` parameter of the constructor
    will be returned, except for those that appear in the *train set* of the user passed as parameter

    Args:
        user_idx: User idx (meaning its mapped integer) of which we want to calculate items that must appear in its
            recommendation list
        train_set: `Ratings` object which contains the train set of every user
        test_set: `Ratings` object which contains the test set of every user
    """
    already_seen_items_it = pd.unique(train_set.get_user_interactions(user_idx)[:, 1].astype(int))

    self._query_vector[already_seen_items_it] = False
    result = self._items_arr[self._query_vector]
    self._query_vector[self.items_list] = True

    return result.astype(int)