Как сделать рекомендацию с KNN - PullRequest
0 голосов
/ 19 февраля 2020

Я строю простой рекомендатель книг, в котором у меня есть только определенная информация о книге (цена, название, автор, жанр, дата публикации) и вообще нет информации о пользователе вообще (без рейтингов, без демографии), только их история покупок .

Итак, я хочу дать рекомендации на основе только этой истории покупок, например: пользователь A купил book1, book2 и book3, а пользователь B купил book1, book3 и book4, если я хочу получить рекомендации для пользователя AI, я могу предположить, что book4 будет хорошим вариантом, учитывая, что у них общие интересы в зависимости от их истории покупок.

Я пытаюсь реализовать KNN с косинусным сходством, но не я действительно знаю, как давать рекомендации на основе пользователя, я имею в виду, что я построил матрицу и выбрал параметры, но я не знаю, как использовать результаты, чтобы получить список рекомендованных книг для данного пользователя.

Вот как выглядит моя матрица (упрощенно):

product    63767    76863    84325    86217    86833    130365   537077   830166   997165   1023897
username                                                                                           
45michael      0.0      1.0      0.0      0.0      1.0      1.0      0.0      0.0      0.0      0.0
7762hc         0.0      0.0      0.0      0.0      0.0      0.0      0.0      0.0      0.0      0.0
adrian12       0.0      0.0      0.0      0.0      0.0      0.0      0.0      0.0      0.0      0.0
alicia7        0.0      0.0      0.0      0.0      0.0      1.0      0.0      0.0      0.0      0.0
angel8         0.0      0.0      0.0      1.0      0.0      0.0      0.0      0.0      0.0      0.0

Где 1 представляет, если пользователь купил книгу, и 0, если он / она не.

И вот что я сделал до сих пор:

# Matrix with users as rows, products as columns and count as content
df_matrix = pd.pivot_table(order_df, values='count', index='username', columns='product')
# Replace all NaN contents with 0
df_matrix_dummy = df_matrix.fillna(0)

# Convert dataframe of books features to scipy sparse matrix
product_matrix = csr_matrix(df_matrix_dummy.values)

model_knn = NearestNeighbors(metric='cosine', algorithm='brute', n_neighbors=20, n_jobs=-1)

Может ли кто-нибудь помочь мне или указать мне хороший урок?

...