Comment construire un système de recommandation (RS)

(Concept du système de recommandation)

Systèmes de recommandation

introduction

Ce blog explique comment créer un système de recommandation à partir de zéro.

Il se concentre sur la technique et les détails conceptuels approfondis de la création d'un système de recommandation à partir de zéro. Cela donne une idée claire de ce que sont les algorithmes utilisés pour construire un système de recommandation efficace. Ici, nous avons également discuté de la solution du concours du prix Netflix.

1. Qu'est-ce qu'un système de recommandation?

Un système de recommandation est un système de filtrage d'informations qui cherche à prédire la note attribuée par un utilisateur à un élément. Cette estimation prévue était ensuite utilisée pour recommander des éléments à l'utilisateur. L'élément pour lequel l'estimation prévue est élevée sera recommandé à l'utilisateur. Ce système de recommandation est utilisé dans la recommandation d’un large éventail d’articles. Par exemple, il peut être utilisé pour recommander des films, des produits, des vidéos, de la musique, des livres, des actualités, des amis Facebook, des vêtements, des pages Twitter, des applications Android / iOS, des hôtels, des restaurants, des itinéraires, etc. entreprises pour améliorer leurs activités et enrichir l'expérience utilisateur comme YouTube pour recommander des vidéos, Amazon et Ebay pour recommander des produits, Netflix pour recommander des films, Airbnb pour recommander des chambres et des hôtels, Facebook pour recommander des amis, etc.

2. À propos de la matrice USER-ITEM

Matrice UTILISATEUR-ARTICLE

Dans la matrice USER-ITEM ci-dessus, chaque ligne représente un utilisateur et chaque colonne représente un élément et chaque cellule représente l'évaluation attribuée par un utilisateur à un élément. Il y a un total «n» utilisateurs et «m». Ici, Aij est la note attribuée par un utilisateur Ui à l'article Ij. Aij peut aller de 1 à 5. Parfois, Aij peut aussi être binaire, si une matrice indique si un utilisateur Ui a regardé un élément Ij ou non. Ici, Aij serait 0 ou 1. Dans notre cas, nous considérons Aij comme une note de 1 à 5.

Cette matrice USER-ITEM est une matrice très rare, ce qui signifie que de nombreuses cellules de cette matrice sont vides. Depuis, il y a beaucoup d'éléments, et un seul utilisateur ne peut pas évaluer tous les éléments. Dans le monde réel, un seul utilisateur ne donne aucune note, même à 1% du total des éléments. Par conséquent, environ 99% des cellules de cette matrice sont vides. Ces cellules vides peuvent être représentées par «NaN» signifie pas un nombre. Par exemple, disons que «n» vaut 1 million et que «m» vaut 10k. Maintenant, n * m est 10 ^ 10, ce qui est un très grand nombre. Supposons maintenant qu'un utilisateur moyen attribue une note à 5 éléments. Le nombre total de notations attribuées en moyenne sera donc de 5 * 1 Million = 5 * 10⁶ notations. Il existe maintenant une métrique appelée Sparsity d'une matrice.

Sparsité de la matrice = Nombre de cellules vides / Nombre total de cellules.

Ici, la densité de la matrice = (10¹⁰ - 5 * 10⁶) / 10¹⁰ = 0,9995

Cela signifie que 99,95% des cellules sont vides. C'est la rareté extrême en fait.

Tâche du système de recommandation (RS): Mettons, par exemple, s’il ya un utilisateur UI qui aime l’article I1, I5, I7. Ensuite, nous devons recommander à l'utilisateur Ui un élément tel que Ij qu'il / elle aimera probablement.

3. Types de systèmes de recommandation

Types de systèmes de recommandation
Comme illustré dans l'image ci-dessus, nous allons discuter de 4 types de systèmes de recommandation:
1. Filtrage collaboratif
2. Filtrage basé sur le contenu
3. Filtrage basé sur la similarité
4. Factorisation matricielle

4. Filtrage collaboratif

Filtrage collaboratif-1

Le filtrage collaboratif RS fonctionne avec la collaboration des utilisateurs. Si de nombreux utilisateurs ont aimé un élément, cet élément peut être recommandé à l'utilisateur qui ne l'a pas encore vu.

Voyons cela avec un exemple:

Filtrage collaboratif-2

Disons qu'il y a quatre utilisateurs et quatre éléments tels que décrits dans l'image ci-dessus. Les quatre utilisateurs ont acheté les articles 1 et 2. USER-1, USER -2 et USER -3 ont également acheté l’article-3, mais l’utilisateur-4 n’a pas encore vu l’article-3. Donc, Item-3 peut être recommandé à USER -4. Maintenant, seulement USER-3 a acheté l’article 4, nous ne pouvons donc pas recommander l’article 4 à l’utilisateur -4, car seul l’utilisateur-4 a acheté l’article 4 et aucun des autres utilisateurs n’a acheté cet article. C'EST COMMENT FONCTIONNE LE FILTRAGE COLLABORATIF.

L'idée de base / hypothèse est ici que les utilisateurs qui ont accepté par le passé ont tendance à être également d'accord à l'avenir.
Ici, les trois utilisateurs, à savoir USER-1, USER-2 et USER-3, ont convenu dans le passé que l'article-3 valait la peine d'être acheté. Par conséquent, à l'avenir, USER-4 pourrait ressembler à l'article-3, qui est quelque chose d'utilisateur -2 et USER-3 ont convenu d'acheter par le passé.

Si l'hypothèse ci-dessus n'est pas vérifiée, le filtrage RS collaboratif ne peut pas être créé.

5. Filtrage basé sur le contenu

Filtrage basé sur le contenu

Le filtrage basé sur le contenu est similaire dans son approche aux techniques classiques d’apprentissage automatique. Il a besoin d'un moyen de représenter un élément Ij et un utilisateur Ui. Ici, nous devons collecter des informations sur un élément Ij et un utilisateur Ui, puis nous devons enfin créer des fonctionnalités pour les utilisateurs Ui et Ij. Ensuite, nous combinons ces fonctionnalités et les transmettons à un modèle d’apprentissage automatique. Ici, l'étiquette sera Aij, qui est la note correspondante donnée par un utilisateur Ui sur l'article Ij.

Prenons un exemple pour comprendre cela plus en détail:

Disons que l'élément dans notre ensemble de données est un film. Maintenant, nous pouvons créer sa fonctionnalité comme ceci:

· Genre de film

· Année de sortie

· Acteur principal

· Réalisateur

· Collection Box Office

· Budget

De même, des fonctionnalités pour l'utilisateur peuvent également être créées:

· Aime et n'aime pas les utilisateurs

· Sexe d'un utilisateur

· Âge de l'utilisateur

· Où habite l'utilisateur

Dès que nous avons les informations susmentionnées sur les éléments et les utilisateurs, nous pouvons créer un vecteur d’article qui doit contenir des informations sur l’article mentionné ci-dessus. Ensuite, nous pouvons créer de la même manière un vecteur d’utilisateur contenant des informations sur l’utilisateur mentionnées ci-dessus. Nous pouvons générer des fonctionnalités pour chaque utilisateur Ui et un élément Ij. Enfin, nous pouvons combiner ces fonctionnalités et créer un ensemble de données volumineuses pouvant convenir au modèle d’apprentissage automatique.

Ici, ci-dessus, je viens d’expliquer un moyen approximatif de créer des fonctionnalités pour le filtrage basé sur le contenu. Ces fonctions doivent être soigneusement conçues de manière à avoir un impact direct sur la notation / l’étiquette sans être dépendantes les unes des autres. Il est toujours préférable de créer des fonctionnalités aussi indépendantes que possible et, dans le même temps, elles devraient être très dépendantes de la notation / de l’étiquette, ce qui signifie qu’elles devraient affecter directement la notation / l’étiquette.

6. Basé sur la similarité

Il existe généralement deux types d'approches basées sur la similarité que nous pouvons déployer.
· SIMILARITÉ UTILISATEUR-UTILISATEUR
· SIMILARITÉ ARTICLE-ARTICLE

6.1 BASE DE SIMILARITÉ UTILISATEUR-UTILISATEUR RS

USER-USER Similarité

Ceci est fondamentalement très simple. Vous devez avoir deviné juste en regardant l'image ci-dessus.

Laissez-nous plonger au plus profond.

Étape 1: Construire une matrice de similarité entre utilisateurs

Matrice UTILISATEUR-ARTICLE

Maintenant, dans la matrice USER-ITEM ci-dessus, chaque ligne représente un utilisateur qui contient les évaluations attribuées par un utilisateur à tous les éléments. Par exemple, la ligne correspondant à l'utilisateur Ui est un vecteur de taille «m». Par conséquent, chaque ligne de la matrice ci-dessus n’est autre qu’un vecteur de colonne (Chaque vecteur est un vecteur de colonne par défaut) de taille «m». Nous pouvons maintenant construire une matrice de similarité USER-USER qui sera une matrice à symétrie carrée de taille n * n. Ici, nous pouvons calculer la similarité entre deux utilisateurs en utilisant la similarité en cosinus.

Similitude cosinusUSER-USER Similarité

Ici, deux utilisateurs seront similaires sur la base des évaluations similaires données par les deux. Si deux utilisateurs sont similaires, cela signifie que les deux utilisateurs ont attribué des évaluations très similaires aux éléments, car ici, le vecteur utilisateur n’est autre que la rangée de la matrice USER-ITEM qui, à son tour, contient les évaluations attribuées par l’utilisateur aux éléments. Maintenant, comme la similarité cosinus peut aller de «0» à «1» et que «1» signifie la plus grande similarité, tous les éléments diagonaux seront donc «1» car la similarité de l’utilisateur avec lui-même est la plus grande. Ici, «Sim12» est un score de similarité de l'utilisateur U1 et de l'utilisateur U2. De même, “Simij” est un score de similarité de l'utilisateur Ui et Uj.

Étape 2: Trouver des utilisateurs similaires

Une fois, nous avons une matrice de similarité USER-USER, nous devons maintenant trouver les utilisateurs similaires. Disons, de la matrice de similarité USER-USER, les trois utilisateurs les plus similaires à l'utilisateur U10 → U1, U7, U15.

Étape 3: Choisissez des éléments aimés par des utilisateurs similaires

Nous devons maintenant sélectionner tous les éléments appréciés par les utilisateurs U1, U7 et U15 qui ne sont pas encore vus par l'utilisateur U10.

Étape 4: Recommander des articles

Maintenant, nous avons les éléments préférés des utilisateurs qui sont les plus similaires à l'utilisateur U10. Nous pouvons donc maintenant recommander ces articles à U10.

Voici comment fonctionne la similarité USER-USER.

Mais il y a un problème avec la similarité USER-USER. Les préférences de l'utilisateur et le goût changent avec le temps. Si un utilisateur a aimé un article il y a un an, il n'est pas nécessaire qu'il aime le même article, même aujourd'hui.

Une solution pourrait être d'utiliser les évaluations récentes. Disons que nous ne pouvons utiliser les notations que 90 jours au plus tôt, ce qui équivaut à 3 mois de données. Mais utiliser uniquement des données récentes rendrait la matrice USER-ITEM plus clairsemée.

Un autre problème avec la similarité USER-USER est que le calcul de la similarité USER-USER prend beaucoup de temps. Comme certains des sites Web populaires tels que YouTube, Amazon, Netflix compte des millions d’utilisateurs enregistrés. Donc, il pourrait y avoir des milliards de calculs à faire pour construire une matrice de similarité USER-USER car la similarité de chaque utilisateur doit être calculée avec des millions d'autres utilisateurs.

Donc, l'approche alternative sera la similarité item-item. Nous allons en discuter

6.2 BASE SUR LA SIMILARITÉ D'OBJET-ARTICLE RS

ITEM-ITEM Similarité

Ceci est également très simple et très similaire dans son idée avec USER-USER Similarity. Vous devez avoir deviné juste en regardant l'image ci-dessus.

Laissez-nous plonger au plus profond.

Étape 1: Construire une matrice de similarité ITEM-ITEM

Matrice UTILISATEUR-ARTICLE

Désormais, dans la matrice USER-ITEM ci-dessus, chaque colonne représente un élément contenant les notes attribuées à cet élément par tous les utilisateurs. Par exemple, la colonne correspondant à l’item Ij est un vecteur de taille «n». Par conséquent, chaque colonne de la matrice ci-dessus n’est autre qu’un vecteur d’items de taille «n». Nous pouvons maintenant construire une matrice de similarité ITEM-ITEM qui sera une matrice symétrique carrée de taille «m * m». Ici aussi, nous pouvons calculer la similarité entre deux éléments en utilisant la similarité en cosinus, tout comme nous avons calculé la similarité entre utilisateurs.

ITEM-ITEM Similarité

Ici, deux éléments seront similaires sur la base des évaluations similaires données aux deux éléments par tous les utilisateurs. Si deux éléments sont similaires, cela signifie que tous les utilisateurs ont attribué des évaluations très similaires car ici, le vecteur d’élément n’est autre que la colonne de la matrice USER-ITEM qui, à son tour, contient les évaluations attribuées par l’utilisateur aux éléments. Maintenant, comme la similarité cosinus peut aller de «0» à «1» et «1» signifie la plus grande similarité, tous les éléments diagonaux seront donc «1» car la similarité d’un élément avec le même élément est la plus grande. Ici, «Sim12» est un score de similarité de l'utilisateur I1 et de l'utilisateur I2. De même, «Simij» est un score de similarité de l'utilisateur Ii et Ij.

Étape 2: trouvez des articles similaires, puis recommandez-les

Disons qu'un utilisateur U10 aime I1, I7 et I15. Maintenant, dans la matrice de similarité ITEM-ITEM, nous avons trouvé des articles similaires à I1 → {I4, I5, I6}. Nous avons également trouvé des produits similaires à I7 → {I4, I8, I9} et I15 → {I10, I11, I12}. Maintenant, le I4 est l'élément commun qui est similaire à I1 et I7. Par conséquent, nous pouvons recommander I4 à l'utilisateur U10.

C'est ainsi que fonctionne la similarité ITEM-ITEM.

L'un des principaux avantages de la similarité ITEM-ITEM est que les notations d'un article donné ne changent pas de manière significative après la période initiale. Prenons l’exemple du film «Titanic». Au début, de nombreuses personnes ont attribué une cote au film «Titanic» et la moyenne de Titanic était de 4 étoiles sur 5. Après la période initiale, les gens se sont rendus compte que Titanic était un bon film. Par conséquent, les cotes d’audience ne changeraient pas de manière aussi significative après la période initiale.
En règle générale, lorsque nous avons plus d'utilisateurs que d'éléments et que les notations d'éléments ne changent pas beaucoup avec le temps après la période initiale, la RS basée sur la similarité ITEM-ITEM est préférable à la RS basée sur USER-USER.

7. Factorisation matricielle

Factorisation Matricielle

Ici, dans l'image ci-dessus, la matrice «A» n'est rien d'autre qu'une matrice USER-ITEM où chaque cellule de la matrice est une note attribuée par l'utilisateur à l'élément. Nous devons nous rappeler que cette matrice USER-ITEM est une matrice très clairsemée.

La matrice «A» a été décomposée en deux matrices «B» et «C». Les matrices «B» et «C» ne sont plus que des facteurs de la matrice «A». Son concept est similaire lorsqu'un nombre est factorisé en deux nombres plus petits, tels que 6 = 2 * 3.

Maintenant, Aij est un produit de Bi_Transpose * Cj. Puisque chaque vecteur est un vecteur colonne par défaut, «Bi» n’est rien mais la rangée de «B» qui est de taille «d * 1» et «Cj» n’est rien la rangée de «C» qui est également de taille » d * 1 '. Maintenant, Aij est une note donnée par un utilisateur «i» à un élément «j» qui est un nombre scalaire. Donc, pour tenir compte de la multiplication, nous devons transposer le vecteur «Bi». Donc Aij = Bi_Transpose * Cj. Aij est de taille (1 * 1).

Maintenant, il y a beaucoup de cellules vides dans la matrice «A» pour lesquelles nous parlerons plus tard. Posons maintenant ce problème comme un problème d’optimisation. Nous savons déjà que tout problème d'optimisation peut être résolu à l'aide de l'algorithme SGD (Stochastic Gradient Descent).

Notre objectif est de trouver les matrices «B» et «C». Initialement, nous initialisons les matrices «B» et «C» de manière aléatoire. Ensuite, nous allons résoudre le problème d’optimisation et trouver «B» et «C». Nous devons maintenant trouver les matrices ‘B’ & ‘C’ telles que la condition suivante soit vérifiée par rapport au problème d’optimisation.

Lisons l’équation ci-dessus en clair.

{Je veux trouver les matrices ‘B’ et ‘C’ partout où j’ai Aij signifie où Aij n’est pas vide - de sorte que ∑ (Aij - Bi_Transpose * Cj) ^ 2 soit réduit au minimum}

Si vous pensez intuitivement, alors {Aij - Bi_Transpose * Cj} n’est rien d’autre qu’une erreur que nous devons minimiser.

C'est donc un problème d'optimisation. Ce n'est rien d'autre qu'une perte au carré qui peut être minimisée par l'algorithme SGD. Cela ressemble à un problème de régression. Dans le cas idéal (Aij - Bi_Transpose * Cj) deviendra 0.

Après avoir résolu ce problème avec SGD, nous obtiendrons les matrices «B» et «C». «B» sera de taille «N * d» et «C» sera de taille «M * d». Une fois que nous aurons les matrices «B» et «C», ce problème deviendra un problème d’achèvement de la matrice. Maintenant, pour toute cellule vide Aij dans la matrice ‘A’, nous pouvons calculer {Bi_Transpose * Cj}. Disons que A_10,5 est vide. Nous pouvons maintenant remplir A_10,5 sous la forme «B_10_Transpose * C_5». Ainsi, nous pouvons remplir toutes les cellules vides de la matrice «A». Ces cotes que nous avons obtenues pour les cellules vides ne sont rien d'autre que les cotes prédites.

Réitérons toutes les étapes:

Étape 1: résolvez le problème d'optimisation. Rappelez-vous ici que nous avons utilisé uniquement Aij non vide.

Étape 2: Recherchez les matrices «B» et «C».

Étape 3: remplissez la matrice «A» en résolvant «A = B * C_Transpose». Rappelez-vous que cette nouvelle matrice obtenue après avoir multiplié B * C_Transpose n’est plus une matrice clairsemée.

Lorsque nous avons trouvé les matrices «B» et «C», nous devons nous assurer que les cellules non vides de la matrice initiale «A» et de la nouvelle matrice «A» soient très proches.

Il est maintenant trivial de recommander un nouvel élément à l'utilisateur. Ce n’est rien d’autre qu’un simple regard sur notre nouvelle matrice ‘A’ qui est non vide et non clairsemée. Supposons qu'un utilisateur U_50 n'ait pas vu un élément I_70, alors évidemment le classement de cet élément n'était pas présent auparavant. Or, dans notre nouvelle matrice ‘A’, cette notation est présente et n’est rien d’autre qu’une notation prédite. Si cette estimation prévue est élevée, nous recommandons l’article I_70 à l’utilisateur U_50.

Voici comment recommander le système peut être construit en utilisant la factorisation matricielle.

Ques: Maintenant la question se pose, il y avait beaucoup de cellules vides dans la matrice ‘A’ pour commencer. Alors, comment sont-ils approximés?
Ans: Ici, l’hypothèse fondamentale de la factorisation matricielle est que si vous construisez vos matrices 'B' & 'C' en utilisant les cellules non vides de la matrice 'A' et si vous reconstruisez les valeurs dans des cellules vides de 'A' en utilisant les matrices 'B' & 'C', puis les matrices 'B' & 'C' peuvent également se rapprocher des valeurs présentes dans les cellules vides. C'est une hypothèse fondamentale que nous posons lorsque nous construisons une factorisation matricielle à l'aide de cellules non vides. Dans le monde réel, cette hypothèse est valable dans la plupart des cas, en particulier dans le cas des systèmes de recommandation. Comme dans le problème d'optimisation, nous essayons d'approcher le plus possible les cellules non vides afin qu'elles s'approchent aussi des cellules vides.

8. Solution du prix Netflix

Le prix Netflix était un concours ouvert visant le meilleur algorithme de filtrage collaboratif permettant de prédire le classement des utilisateurs par les films, sur la base des classements précédents, sans aucune autre information sur les utilisateurs ou les films.

Netflix a fourni un ensemble de données de formation de 100 480 507 notes attribuées par 480 189 utilisateurs à 17 770 films. Chaque classement de formation est un quadruplet de la forme . Les champs utilisateur et film sont des ID entiers, tandis que les notes vont de 1 à 5 étoiles (intégrales).

Netflix a défini l’erreur principale moyenne (RMSE) comme indicateur de performance clé (KPI). En utilisant ces données, si une équipe ou un individu peut créer un algorithme permettant de réduire le RMSE du rating réel (fourni par Netflix) et le rating prédit (prévu par l'algorithme du concurrent) de plus de 10% du RMSE - ce que Netflix avait déjà a - va gagner le concours.

Racine Moyenne Erreur Carré

Passons à la solution elle-même:

Permettez-moi de vous présenter quelques notations avant de poursuivre.
r_ui = note attribuée par l'utilisateur 'u' à l'item 'i'
qi = item-vector
pu = utilisateur-vecteur

L'équation ci-dessus est similaire à notre équation suivante:

La solution:

Ici, dans l'équation ci-dessus, la première partie est une perte au carré et la seconde partie est un régularisateur L2 qui est appliqué pour éviter un surajustement. Ici, est un hyper-paramètre.

Afin de résoudre ce problème, il existe des méthodes:

1. Descente de gradient stochastique (SGD): Ici, nous pouvons calculer la dérivée de l'équation ci-dessus par rapport à qi et par rapport à pu.

2. Moindres carrés en alternance (ALS): Ici, tout d'abord, nous corrigeons pu et appliquons une descente de gradient sur l'équation ci-dessus par rapport à qi. Ensuite, nous fixons le qi et appliquons la descente de gradient sur l’équation ci-dessus par rapport à pu. Il alterne entre pu et qi jusqu'au moment où il converge.

La méthode 2 est généralement suivie car elle est plus rapide.
La formulation ci-dessus est bonne mais elle ne peut pas garantir le RMSE le plus bas. Les gagnants du concours ont donc ajouté trois nouveaux termes: bu, bi, µ.

Lisons l’équation complète ci-dessous puis je présenterai le sens des trois termes ci-dessus:

Ici, bu et bi sont des termes de biais et µ est un terme moyen. Tous trois sont des scalaires et non des vecteurs.
Il existe un terme de biais bu pour chaque utilisateur.
Il existe un terme de biais bi pour chaque élément.

µ → ‘µ’ est la note moyenne attribuée à tous les utilisateurs et éléments. C'est fondamentalement la moyenne de toutes les notes que nous avons dans nos données. C'est une moyenne globale de toutes les notes.

bu, bi → ‘bu’ est un biais utilisateur et ‘bi’ est un biais d’article. Il existe maintenant un terme de biais pour chaque utilisateur et un terme de biais pour chaque élément. Vous vous demandez peut-être quels sont ces termes de partialité.

Prenons un exemple pour comprendre cela. Disons qu’il existe un utilisateur ‘John’ qui est un utilisateur très critique qui attribue une note de 3,9 au film ‘Titanic’ qui était un film très réussi.

Ici, r_ui = 3.9 (note attribuée par un utilisateur à un élément)

Maintenant, comme ‘John’ est un utilisateur très critique, nous devons donc rendre compte de son biais ‘bu’ dans la notation.

Donc pour ‘John’ bu = -0,3 (étant donné que ‘Jean’ est un utilisateur critique, son biais sera donc négatif)

Maintenant, "Titanic" était un film très réussi, nous devons donc prendre en compte le biais "bi" dans la notation.

Donc pour "Titanic" bi = 0,5 (puisque "Titanic" était un film très réussi, son biais sera donc positif)

Maintenant, «µ» n’est autre que la moyenne mondiale.

Disons ici µ = 3.0

Disons que pu_Transpose * qi = 0.7

Maintenant, r_ui-µ-bu-bi-pu_Transpose * qi = 3,9 -3,0 + 0,3–0,5–0,7 = 0

En un mot, nous devons trouver que bu, bi, p et q qui peuvent minimiser l’équation ci-dessus. En fin de compte, nous aurons un biais utilisateur pour chaque utilisateur, un élément par article et les matrices «q» et «p».

Equation -1:

Équation 2

Nous passons maintenant de l'équation 1 à l'équation 2 en une étape. Nous venons de penser au biais utilisateur et à l'élément et nous avons incorporé les deux dans notre formulation. C'est l'avantage de l'optimisation sur la factorisation matricielle. Ce ne serait pas possible sur la similarité utilisateur-utilisateur et article-article.
Dans le document de recherche rédigé par les lauréats du prix Netflix, ils étendent ce point et commentaient que «les évaluations par les utilisateurs et les éléments dépendent du temps». Par conséquent, ils ont attribué une notation au temps, au biais utilisateur et au biais article r_ui (t), bu (t) et bi (t) respectivement.

9. Notre étude de cas

Nous avons codé une étude de cas à part entière sur «Netflix-Movie-Recommandation-System». Découvrez le code ici. Nous n’avons pas expliqué ce code complet ici parce que nous voulons nous concentrer davantage sur le concept de construction d’un système de recommandation. Si vous êtes capable de comprendre le concept que nous avons expliqué ci-dessus, vous pouvez facilement créer un système de recommandation et, bien entendu, notre lien de code sera un point de référence pour vous.

Nous avons appliqué toutes les techniques que nous avons expliquées ci-dessus dans ce blog. Le lien de données a également été fourni dans le lien de code. Vous pouvez télécharger les données à partir de la source de données fournie et simplement suivre le code ligne par ligne.

Un point important que je veux mentionner ici à propos de la mise en œuvre de la solution Netflix-Prize-Solution. Nous avons mis en œuvre tous les concepts expliqués dans Netflix-Prize-Solution. Pour la mise en œuvre, nous avons utilisé une bibliothèque appelée “Surprise”. Nous avons fourni le lien dans la section de référence ci-dessous. Cette bibliothèque contient tous les codes mis en œuvre qui sont expliqués dans Netflix-Prize-Solution.

Téléchargez cette bibliothèque en tant que:

pip installer surprise

10. Références

1. https://www.appliedaicourse.com/

2. https://datajobs.com/data-science-repo/Recommender-Systems-[Netflix].pdf

3. http://surpriselib.com/

Nous avons fait de notre mieux pour expliquer chaque concept de construction d'un système de recommandation de la manière la plus simple possible. J'espère que vous aimez mon blog.