This is probably the simplest method and it's based only on the products, modeled as feature vectors:
Just like the users, the features can also be categorical (indeed, for products it's easier), for example, the genre of a book or a movie, and they can be used together with numerical values (like price, length, number of positive reviews, and so on) after encoding them.
Then a clustering strategy is adopted, even if the most used is k-nearest neighbors as it allows controlling the size of each neighborhood to determine, given a sample product, the quality and the number of suggestions.
Using scikit-learn, first of all we create a dummy product dataset:
>>> nb_items = 1000 >>> items = np.zeros(shape=(nb_items, 4)) >>> for i in range(nb_items): >>> items[i, 0] = np.random.randint(0, 100) >>> items[i, 1] = np.random.randint(0, 100) >>> items[i, 2] = np.random.randint(0, 100) >>> items[i, 3] = np.random...