Maison  >  Article  >  développement back-end  >  Système de recommandation en Python

Système de recommandation en Python

WBOY
WBOYavant
2023-09-19 22:45:04755parcourir

Système de recommandation en Python

Un système de recommandation est un outil en Python qui recommande des éléments ou du contenu aux utilisateurs en fonction de leurs préférences et de leur comportement passé. La technologie utilise des algorithmes pour prédire les préférences futures des utilisateurs afin de leur proposer le contenu le plus pertinent.

La portée de ce système est très large et il est largement utilisé dans divers secteurs tels que le commerce électronique, les services de streaming et les médias sociaux. Des produits, des films, de la musique, des livres, etc. peuvent tous être recommandés via ces systèmes. Fournir des recommandations personnalisées contribue non seulement à accroître l’engagement et la fidélité des clients, mais peut également stimuler les ventes.

Types de systèmes de recommandation

Système de recommandation basé sur le contenu

L'idée derrière ces opérations est que les utilisateurs peuvent obtenir des recommandations comparables aux éléments auxquels ils ont été exposés auparavant. Ce système utilise des algorithmes pour identifier les éléments très similaires aux préférences d'un utilisateur, dans le but de créer une liste de suggestions adaptées à l'utilisateur. Dans ce paramètre, l'algorithme analyse les données liées à un élément, telles que sa qualité et les évaluations des utilisateurs, pour déterminer les recommandations à faire.

Algorithme

  • Étape 1 − Importer les bibliothèques nécessaires

  • Étape 2 - Charger l'ensemble de données

  • Étape 3 - Prétraiter les données

  • Étape 4 - Calculer la matrice de similarité

  • Étape 5 − Pour chaque utilisateur −

    • Sélectionnez les éléments avec lesquels ils ont interagi

    • Pour chaque élément sélectionné à l'étape 5a -

      • Récupérer les scores de similarité avec tous les autres éléments

      • Calculez une moyenne pondérée des scores de similarité en utilisant les notes de l'utilisateur comme pondération

    • Trier les éléments par ordre décroissant en fonction des scores de similarité pondérés

    • Recommander les N meilleurs éléments aux utilisateurs

  • Étape 6 - Renvoyez les recommandations de tous les utilisateurs.

Exemple

import pandas as pd
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import cosine_similarity

# Load data
data = pd.read_csv('movies.csv')

# Compute TF-IDF vectors for each movie
tfidf = TfidfVectorizer(stop_words='english')
tfidf_matrix = tfidf.fit_transform(data['description'])

# Compute cosine similarity between all movies
cosine_sim = cosine_similarity(tfidf_matrix, tfidf_matrix)

# Function to get top 10 similar movies based on input movie
def get_recommendations(title):
   idx = data[data['title'] == title].index[0]
   sim_scores = list(enumerate(cosine_sim[idx]))
   sim_scores = sorted(sim_scores, key=lambda x: x[1], reverse=True)
   sim_scores = sim_scores[1:11]
   movie_indices = [i[0] for i in sim_scores]
   return data.iloc[movie_indices]

# Example usage: get top 10 movies similar to 'The Godfather'
get_recommendations('The Godfather')

Nous chargeons les données du film à partir d'un fichier CSV local dans une trame de données. Nous convertissons la description du film en matrice en utilisant la fonction fit_transform() et calculons la matrice de similarité cosinus.

Ensuite, nous définissons une fonction qui prend un titre de film comme paramètre et récupère l'index du titre du film dans la dataframe s'il existe.

Nous créons ensuite une liste de tuples contenant les scores de similarité entre le titre du film transmis et tous les autres titres de film. Chaque tuple est constitué d'un index et d'un score de similarité. Nous affichons ensuite la liste des titres de films en indexant la trame de données.

Sortie

                                title  \
783                 The Godfather   
1512          The Godfather: Part II   
1103                       Casino   
3509  Things to Do in Denver When   
1246                       Snatch   
3094             Road to Perdition   
2494                     Scarface   
1244                    Following   
2164                       Dancer   
2445        The Day of the Jackal   

Système de recommandation de filtrage collaboratif

Au lieu de cela, ceux-ci s’appuient sur les données d’autres utilisateurs pour générer des recommandations. Un tel système compare les préférences et les comportements de différents utilisateurs, puis suggère des éléments susceptibles d'intéresser d'autres utilisateurs ayant des goûts similaires. Le filtrage collaboratif est généralement plus précis que les systèmes basés sur le contenu, car il prend en compte les opinions de nombreux utilisateurs lors de la génération de recommandations.

Algorithme

  • Étape 1 − Importez les bibliothèques nécessaires.

  • Étape 2 - Chargez le fichier "ratings.csv" qui fournit les évaluations des utilisateurs.

  • Étape 3 - Créez "user_item_matrix" pour convertir les données d'évaluation des utilisateurs en matrice

  • Étape 4 - Calculez la similarité des évaluations des utilisateurs en utilisant la similarité cosinus.

  • Étape 5 - Identifiez les utilisateurs similaires

  • Étape 6 - Calculez la note moyenne.

  • Étape 7 - Sélectionnez l'ID utilisateur cible.

  • Étape 8 - Imprimez l'identifiant et la note du film.

Exemple

import pandas as pd
from sklearn.metrics.pairwise import cosine_similarity

# Load data
ratings_data = pd.read_csv('ratings.csv')

# Create user-item matrix
user_item_matrix = pd.pivot_table(ratings_data, values='rating', index='userId', columns='movieId')

# Calculate cosine similarity between users
user_similarity = cosine_similarity(user_item_matrix)

# Get top n similar users for each user
def get_top_similar_users(similarity_matrix, user_index, n=10):
    similar_users = similarity_matrix[user_index].argsort()[::-1]
    return similar_users[1:n+1]

# Get recommended items for a user based on similar users
def get_recommendations(user_id, user_similarity, user_item_matrix, n=10):
   similar_users = get_top_similar_users(user_similarity, user_id, n)
   recommendations = user_item_matrix.iloc[similar_users].mean(axis=0).sort_values(ascending=False).head(n)
   return recommendations

# Example usage
user_id = 1
recommendations = get_recommendations(user_id, user_similarity, user_item_matrix)
print("Top 10 recommended movies for user", user_id)
print(recommendations)

Sortie

Top 10 recommended movies for user 1
movieId
1196        5.000000
50            5.000000
1210        5.000000
260          5.000000
1198        5.000000
2571        5.000000
527          5.000000
1197        5.000000
2762        5.000000
858          4.961538

Conclusion

La tâche de création d'un système de recommandation peut apporter une grande complexité au programmeur, mais il s'agit d'un outil précieux qui peut apporter d'énormes avantages. La création d'un système de recommandation avec Python offre une variété d'options qui simplifient le processus de création et de personnalisation. Cependant, comme pour toute entreprise de codage, des problèmes potentiels peuvent survenir lors du développement de systèmes de recommandation. Être conscient de ces complications typiques et prendre des mesures pour y remédier est essentiel pour garantir le succès d’un système de recommandation.

En fin de compte, il est important de se rappeler qu’un système de recommandation peut être un atout très puissant, il vaut donc la peine d’investir le temps et les efforts nécessaires pour s’assurer qu’il est correctement construit et fonctionne de manière optimale.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer