Контентная фильтрация в машинном обучении
Большинство систем рекомендаций используют фильтрацию на основе контента и совместную фильтрацию, чтобы показывать рекомендации пользователю, и чтобы обеспечить лучший пользовательский опыт. Фильтрация на основе контента генерирует рекомендации, основанные на поведении пользователя. В этой статье я расскажу, что такое контентная фильтрация в машинном обучении и как ее реализовать с помощью Python.
Что такое система рекомендаций?
Система рекомендаций используется для выработки персонализированных рекомендаций путем оценки предпочтений пользователя с использованием таких данных, как история пользователя, время просмотра или чтения и т. д. Существует множество приложений, основанных на системах рекомендаций. Вот основные категории этих приложений:
- Интернет-магазины (Amazon, Zomato и т. д.)
- Аудио (песни, аудиокниги, подкасты и т. д.)
- Рекомендации по видео (YouTube, Netflix, Amazon Prime и т. д.)
Итак, существует два типа рекомендательных систем:
- Совместная фильтрация
- Контентная фильтрация
Совместная фильтрация использует поведение других пользователей, у которых есть такие же интересы, как и вас, и на основе действий этих пользователей показывает вам идеальные рекомендации. Система рекомендаций, основанная на методе, основанном на контенте, покажет вам рекомендации, основанные на вашем поведении. В следующем разделе я подробно расскажу, как работает контентная фильтрация в машинном обучении, а затем мы посмотрим, как реализовать ее с помощью Python.
Контентная фильтрация
Система рекомендаций, основанная на фильтрации на основе контента, предоставляет рекомендации пользователю путем анализа описания контента, которое было оценено пользователем. В этом методе алгоритм обучается понимать контекст контента и находить сходства в другом контенте, чтобы рекомендовать тот же класс контента конкретному пользователю.
Давайте разберемся в процессе фильтрации по контенту, посмотрев на все этапы этого метода для выработки рекомендаций для пользователя:
- Все начинается с определения ключевых слов, чтобы понять контекст. На этом этапе он игнорирует ненужные слова, такие как стоп-слова.
- Затем он находит такой же контекст в другом контенте, чтобы найти сходства. Чтобы определить сходство между двумя или более текстами, метод, основанный на контенте, использует косинусное сходство.
- Он находит сходство, анализируя корреляцию между двумя или более пользователями.
- Затем он генерирует рекомендации, вычисляя средневзвешенное значение всех пользовательских оценок для активных пользователей.
Надеюсь, вы теперь понимаете, как работает контентная фильтрация. В следующем разделе я расскажу, как реализовать это с помощью языка программирования Python.
Контентная фильтрация с помощью Python
Надеюсь, что теперь вы поняли, что такое системы рекомендаций и как контентный метод используется для выработки рекомендаций для пользователя. Теперь давайте посмотрим, как реализовать метод, основанный на контенте, с помощью Python. Для этой задачи я буду использовать набор данных, предоставленный MovieLens, для создания системы рекомендаций фильмов с использованием фильтрации на основе содержимого с помощью Python.
Давайте начнем решать эту задачу с импорта необходимых библиотек Python и набора данных:
import numpy as np
import pandas as pd
from sklearn.metrics.pairwise import cosine_similarity
from sklearn.metrics import mean_squared_error
from sklearn.model_selection import train_test_split
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import linear_kernel
movies = pd.read_csv('movies_metadata.csv')
print(movies.head())
adult belongs_to_collection budget ... video vote_average vote_count
0 False {'id': 10194, 'name': 'Toy Story Collection', ... 30000000 ... False 7.7 5415.0
1 False NaN 65000000 ... False 6.9 2413.0
2 False {'id': 119050, 'name': 'Grumpy Old Men Collect... 0 ... False 6.5 92.0
3 False NaN 16000000 ... False 6.1 34.0
4 False {'id': 96871, 'name': 'Father of the Bride Col... 0 ... False 5.7 173.0
Теперь я собираюсь реализовать все шаги, о которых я говорил, в упомянутом выше процессе фильтрации на основе содержимого с использованием Python. Здесь я сначала подготовлю данные, затем выберу столбцы, которые мы будем использовать для понимания контекста контента, затем мы удалим стоп-слова и, наконец, найдем косинусное сходство для выработки рекомендаций:
tfidf = TfidfVectorizer(stop_words='english')
movies['overview'] = movies['overview'].fillna('')
overview_matrix = tfidf.fit_transform(movies['overview'])
similarity_matrix = linear_kernel(overview_matrix,overview_matrix)
mapping = pd.Series(movies.index,index = movies['title'])
print(mapping)
Результат:
|
title |
|
|
Toy Story |
0 |
|
Jumanji |
1 |
|
Grumpier Old Men |
2 |
|
Waiting to Exhale |
3 |
|
Father of the Bride Part II |
4 |
|
... |
|
|
Subdue |
45461 |
|
Century of Birthing |
45462 |
|
Betrayal |
45463 |
|
Satan Triumphant |
45464 |
|
Queerama |
45465 |
|
Length: 45466, dtype: int64 |
|
Теперь давайте создадим функцию и посмотрим, как работает система рекомендаций:
def recommend_movies(movie_input):
movie_index = mapping[movie_input]
similarity_score = list(enumerate(similarity_matrix[movie_index]))
similarity_score = sorted(similarity_score, key=lambda x: x[1], reverse=True)
similarity_score = similarity_score[1:15]
movie_indices = [i[0] for i in similarity_score]
return (movies['title'].iloc[movie_indices])
print(recommend_movies('Life Begins for Andy Hardy'))
Результат:
|
23530 |
Andy Hardy Meets Debutante |
|
21422 |
A Family Affair |
|
26304 |
You're Only Young Once |
|
10301 |
The 40 Year Old Virgin |
|
29369 |
Andy Hardy's Private Secretary |
|
23843 |
Andy Hardy's Blonde Trouble |
|
15348 |
Toy Story 3 |
|
43427 |
Andy Kaufman Plays Carnegie Hall |
|
38476 |
Superstar: The Life and Times of Andy Warhol |
|
42721 |
Andy Peters: Exclamation Mark Question Point |
|
8327 |
The Champ |
|
28128 |
The Mayor of Casterbridge |
|
21359 |
Andy Hardy's Double Life |
|
32086 |
Brother's Keeper |
|
Name: title, dtype: object |
|
Итак, я надеюсь, вам понравилась эта статья о том, что такое контентный метод в машинном обучении и его реализация с использованием Python.



