Content based filtering
La recommandation basée sur le contenu est une méthode pour recommander des éléments en se basant sur les caractéristiques des utilisateurs et des éléments. Pour y parvenir, nous commençons par définir des vecteurs de caractéristiques pour chaque utilisateur et chaque élément. Par exemple, supposons que nous avons n utilisateurs et m éléments. Alors, le vecteur de caractéristiques pour l'utilisateur j serait un vecteur de dimension d :
x_u_j = [x_1j, x_2j, ..., x_dj]
De même, le vecteur de caractéristiques pour l'élément i serait un vecteur de dimension d :
x_m_i = [x_1i, x_2i, ..., x_di]
Ici, d est le nombre de caractéristiques que nous avons pour chaque utilisateur et élément. Le but est de trouver une fonction qui prend en entrée les vecteurs de caractéristiques d'un utilisateur et d'un élément et qui donne en sortie la note prédite. Nous pouvons représenter cette fonction comme suit :
y_hat_ij = f(x_u_j, x_m_i)
Nous voulons que cette fonction puisse prédire la note qu'un utilisateur j donnerait à un élément i, en se basant sur les caractéristiques de l'utilisateur et de l'élément.
Une façon de définir la fonction f est d'utiliser un modèle linéaire, où nous prenons le produit scalaire des vecteurs de caractéristiques de l'utilisateur et de l'élément :
y_hat_ij = w_j^T x_m_i
Ici, w_j est un vecteur de poids de dimension d qui représente les préférences de l'utilisateur j pour chaque caractéristique. Nous pouvons apprendre le vecteur de poids w_j en minimisant l'erreur quadratique entre la note prédite et la note réelle :
minimiser_w_j ∑(i,j) (y_ij - y_hat_ij)^2
Nous pouvons résoudre ce problème d'optimisation en utilisant la descente de gradient, qui implique de prendre la dérivée de la fonction objective par rapport aux poids w_j et de les mettre à jour itérativement.
Une autre façon de définir la fonction f est d'utiliser un modèle non linéaire, tel qu'un réseau de neurones. Dans ce cas, nous alimenterions les vecteurs de caractéristiques de l'utilisateur et de l'élément dans un réseau de neurones, qui apprendrait à prédire la note. Le réseau de neurones aurait un ensemble de paramètres qui seraient appris pendant le processus d'entraînement.
Par exemple, supposons que nous avons un utilisateur qui aime les films romantiques et n'aime pas les films d'action. Nous pouvons représenter cela en utilisant le vecteur de caractéristiques :
x_u_j = [1, 0, ..., 1, 0]
Ici, la première caractéristique correspond aux films romantiques et la deuxième caractéristique correspond aux films d'action. La valeur de 1 indique que l'utilisateur aime les films romantiques et n'aime pas les films d'action, tandis que la valeur de 0 indique le contraire.
Maintenant, supposons que nous avons un film romantique avec le vecteur de caractéristiques suivant :
x_m_i = [1, 0, ..., 0.5, 0]
Ici, la première caractéristique correspond aux films romantiques, et la dernière caractéristique correspond à la note moyenne du film. La valeur de 1 indique que le film est un film romantique, tandis que la valeur de 0,5 indique que la note moyenne pour le film est de 0,5 sur 5.
En utilisant le modèle linéaire, nous pouvons prédire la note que l'utilisateur donnerait au film comme suit :
y_hat_ij = w_j^T x_m_i = w_romance - 0,5
Ici, w_romance est le poids qui correspond à la caractéristique de film romantique dans le vecteur de poids de l'utilisateur w_j.
En utilisant le modèle non linéaire, nous alimenterions les vecteurs de caractéristiques pour l'utilisateur et le film dans un réseau neuronal, qui apprendrait à prédire la note en fonction des interactions entre les caractéristiques.
La recommandation basée sur le contenu peut être utile lorsque la recommandation collaborative n'est pas possible, comme dans les cas où les utilisateurs n'ont pas évalué suffisamment d'articles ou lorsqu'il n'y a pas suffisamment de données pour calculer les similarités entre les utilisateurs. Dans ces cas, la recommandation basée sur le contenu peut recommander des articles en fonction de la similarité de leurs caractéristiques avec des articles que l'utilisateur a aimés dans le passé.
L'apprentissage par réenforcement
Le deep learning est une technique utile pour développer des algorithmes de filtrage basés sur le contenu. Cette approche consiste à calculer des vecteurs de caractéristiques pour l'utilisateur et le film, qui sont ensuite combinés pour prédire la note du film par cet utilisateur. Pour calculer le vecteur de caractéristiques de l'utilisateur, un réseau neuronal appelé réseau utilisateur est utilisé. Ce réseau prend en entrée des caractéristiques de l'utilisateur telles que l'âge, le genre et le pays, et produit en sortie un vecteur qui décrit l'utilisateur. De même, un réseau de films est utilisé pour calculer le vecteur de caractéristiques du film, qui inclut des caractéristiques telles que l'année de sortie et les acteurs du film. Les vecteurs de caractéristiques de l'utilisateur et du film sont ensuite combinés par un produit scalaire pour faire une prédiction de note.
Les réseaux d'utilisateurs et de films peuvent avoir des nombres différents de couches cachées et de neurones par couche cachée. Cependant, la couche de sortie des deux réseaux doit avoir la même taille. Le modèle peut être entraîné en construisant une fonction de coût qui mesure la différence entre les notes prédites et les notes réelles. Supposons que nous disposons d'un ensemble de données d'entraînement où nous connaissons les notes réelles que les utilisateurs ont données aux films. Nous pouvons représenter la note réelle donnée par l'utilisateur u au film m par y_{u,m}.
Nous pouvons définir la fonction de coût comme l'erreur quadratique moyenne entre les notes prédites et les notes réelles :
J = (1 / 2n) * somme[(r_{u,m} - y_{u,m})^2]
Ici, n est le nombre total d'exemples d'entraînement, et la somme est sur tous les exemples d'entraînement. Le but est de minimiser la fonction de coût J en ajustant les poids et les biais des réseaux de neurones.
Pour ce faire, nous pouvons utiliser un algorithme d'optimisation tel que la descente de gradient stochastique. L'algorithme ajuste de manière itérative les poids et les biais des réseaux de neurones pour réduire la fonction de coût J.
Enfin, un avantage de l'utilisation des réseaux de neurones est qu'il est facile de les combiner pour construire des systèmes plus grands et plus complexes. Les développeurs peuvent devoir passer du temps à concevoir soigneusement les caractéristiques à utiliser pour alimenter ces algorithmes de filtrage basés sur le contenu. Cependant, une limitation de cette approche est qu'elle peut être coûteuse en termes de calculs si le catalogue de films à recommander est grand.
Grand catalogue de données
La gestion efficace de grands catalogues d'articles est cruciale pour de nombreux systèmes tels que la diffusion de films, la diffusion de musique, les achats en ligne et le ciblage publicitaire. Pour ce faire, de nombreux systèmes de recommandation utilisent une approche en deux étapes : la récupération et le classement. Pendant l'étape de récupération, une grande liste de candidats plausibles est générée pour couvrir de nombreuses choses possibles qui pourraient être recommandées à l'utilisateur. Cela se fait rapidement et peut inclure des éléments que l'utilisateur n'aimera pas du tout, mais cela garantit une large couverture. Pendant l'étape de classement, la liste des éléments récupérés est classée à l'aide d'un modèle appris, et les éléments que l'utilisateur est le plus susceptible de noter positivement sont sélectionnés.
Par exemple, pendant l'étape de récupération, nous pourrions trouver les 10 films les plus similaires pour chacun des 10 derniers films que l'utilisateur a regardés. Nous pouvons également ajouter à la liste des candidats plausibles les 10 meilleurs films dans les trois genres les plus regardés par l'utilisateur et les 20 meilleurs films dans le pays de l'utilisateur. Après l'étape de récupération, nous combinons tous les éléments récupérés en une liste et supprimons les doublons et les éléments que l'utilisateur a déjà regardés ou achetés.
Pendant l'étape de classement, nous alimentons le vecteur de caractéristiques de l'utilisateur et le vecteur de caractéristiques de l'élément dans un réseau neuronal pour calculer la note prévue pour chaque paire utilisateur-élément. Sur cette base, nous classons la liste d'éléments récupérés et affichons la liste classée à l'utilisateur. Pour optimiser ce processus, nous pouvons précalculer les vecteurs de caractéristiques pour tous les éléments à l'avance et calculer le produit intérieur entre le vecteur de caractéristiques de l'utilisateur et le vecteur de caractéristiques de l'élément pendant l'étape de classement.
Une décision importante dans ce processus est le nombre d'éléments à récupérer pendant l'étape de récupération. Récupérer plus d'éléments tend à donner de meilleures performances, mais ralentit l'algorithme. Une approche éthique de la construction de systèmes de recommandation est également cruciale pour s'assurer qu'aucun préjudice n'est causé aux utilisateurs. Par conséquent, nous devrions utiliser les systèmes de recommandation pour servir les utilisateurs et la société dans son ensemble, pas seulement pour un gain commercial.
Ethique
Les systèmes de recommandation ont été fructueux pour les entreprises, mais certains cas d'utilisation ont eu des effets négatifs sur la société. Lors de la conception d'un système de recommandation, il y a de nombreux choix à faire, tels que le but du système et ce qu'il faut recommander aux utilisateurs. Par exemple, un système de recommandation peut être utilisé pour recommander des films, des produits ou des publicités. Bien que certains cas d'utilisation semblent anodins, d'autres pourraient être problématiques. Explorons certains de ces cas d'utilisation problématiques et leurs solutions potentielles.
Un exemple est l'industrie de la publicité, qui peut amplifier à la fois les entreprises nuisibles et fructueuses. Par exemple, une bonne entreprise de voyage qui offre d'excellentes expériences de voyage peut enchérir plus haut pour les annonces et attirer plus de trafic. D'un autre côté, une entreprise de prêt sur salaire qui facture des taux d'intérêt élevés aux personnes à faible revenu peut également enchérir plus haut pour les annonces et exploiter davantage de clients. Une solution potentielle consiste à refuser les annonces des entreprises exploitantes, mais c'est un problème difficile à résoudre.
Un autre exemple est la maximisation de l'engagement des utilisateurs, qui peut conduire à l'amplification de théories du complot et de discours de haine. Une solution potentielle consiste à filtrer les contenus problématiques, mais définir ce qui doit être filtré est difficile.
Lors de la recommandation d'éléments médiatiques aux utilisateurs, de nombreuses applications et sites Web essaient de maximiser leurs profits plutôt que le plaisir de l'utilisateur. Pour augmenter la confiance et améliorer la société, il est important d'être transparent avec les utilisateurs sur les critères utilisés pour faire des recommandations.
En conclusion, bien que les systèmes de recommandation soient puissants et rentables, il est crucial de considérer leur potentiel de nuire et d'inviter des perspectives diverses pour construire des systèmes qui rendent la société meilleure.