Une plongée approfondie dans les algorithmes de recommandation avec une étude de cas de Netflix et la technologie de deep learning d’NVIDIA

Qu’est-ce que les algorithmes de recommandation?

Les moteurs de recommandation sont le secret derrière chaque transaction sur Internet, que ce soit Amazon, Netflix, Flipkart, YouTube, TikTok, même LinkedIn, Facebook, X(Twitter), Snapchat, Medium, Substack, HackerNoon… Tous ces sites et presque tous les sites de contenu curatif ou les marchés de produits sur Internet tirent leurs importants revenus des algorithmes de recommandation.

En termes simples, un algorithme de recommandation construit un modèle de vos goûts, dégoûts, favoris, choses que vous préférez, genres que vous préférez et articles que vous préférez, et lorsque une transaction est effectuée sur le site, ils pratiquement lisent dans votre esprit et prédit le produit que vous êtes le plus susceptible d’acheter. Certains algorithmes de recommandation sur YouTube et TikTok sont si précis qu’ils peuvent retenir les utilisateurs pendant des heures. Je serais surpris si même un lecteur ne signalait pas une séance de visionnage de YouTube qui nait d’un simple défilement et des clics/touches pendant environ dix minutes.

Cela conduit à une meilleure engagement client, une meilleure expérience client, un revenu accru et plus d’argent pour la plateforme elle-même. La dépendance est construite sur l’exactitude et les performances effrayantes de ces algorithmes ultra-optimisés.

C’est ainsi que ces géants construisent leur audience.

Les visiteurs mensuels sur YouTube, TikTok, Instagram et Facebook sont (source):

  • Facebook: 2,9 milliards
  • YouTube: 2,2 milliards
  • Instagram : 1,4 milliard
  • TikTok : 1 milliard

Et la clé de leur succès : des algorithmes de recommandation fantastiques.

Types d’algorithmes de recommandation

Filtrage Collaboratif (Basé sur les Utilisateurs)

Le filtrage collaboratif basé sur les utilisateurs est une technique de recommandation qui postule que les utilisateurs avec des préférences similaires auront des goûts similaires. Elle utilise les données des interactions utilisateur-article pour identifier les similitudes entre les utilisateurs, souvent en employant des mesures telles que la similarité cosinus ou la corrélation de Pearson. La méthode prédit les notes ou préférences d’un utilisateur en fonction des notes données par des utilisateurs semblables.

Cependant, il peut rencontrer des difficultés, telles que le problème du démarrage froid pour les nouveaux utilisateurs qui n’ont pas encore interagi avec le système, et des problèmes de scalabilité peuvent survenir lors de la gestion d’un grand nombre d’utilisateurs.

Python

 

import numpy as np
from sklearn.metrics.pairwise import cosine_similarity

def user_based_cf(ratings_matrix, user_id, k=5):
    similarities = cosine_similarity(ratings_matrix)
    user_similarities = similarities[user_id]
    similar_users = np.argsort(user_similarities)[::-1][1:k+1]
    
    recommendations = np.zeros(ratings_matrix.shape[1])
    for similar_user in similar_users:
        recommendations += ratings_matrix[similar_user]
    
    return recommendations / k

  • Utilise la similarité cosinus pour calculer les similitudes entre utilisateurs
  • Trouve les k utilisateurs les plus semblables à l’utilisateur cible
  • Aggrège les notes des utilisateurs semblables pour générer des recommandations
  • Retourne la moyenne des notes pour chaque article auprès des utilisateurs semblables
  • Implémentation simple qui peut être facilement modifiée ou étendue

Filtrage Collaboratif (Basé sur les Articles)

Le filtrage collaboratif basé sur les éléments suppose que les utilisateurs préfèreront les éléments semblables à ceux qu’ils ont aimés dans le passé. Il calcule la similarité entre les éléments en se basant sur les notes des utilisateurs ou les interactions. Cette approche est souvent plus scalable que le filtrage collaboratif basé sur les utilisateurs, en particulier lorsqu’il y a beaucoup d’utilisateurs et de moins d’éléments. Elle permet la pré-calculation de la similarité entre les éléments, ce qui peut rendre les recommandations en temps réel plus rapides.

Elle traite mieux les nouveaux utilisateurs que les méthodes basées sur les utilisateurs, mais elle peut avoir du mal avec les nouveaux éléments qui n’ont pas suffisamment de notes. De plus, elle est moins affectée par les changements dans les préférences des utilisateurs au fil du temps.

Python

 

import numpy as np
from sklearn.metrics.pairwise import cosine_similarity

def item_based_cf(ratings_matrix, item_id, k=5):
    similarities = cosine_similarity(ratings_matrix.T)
    item_similarities = similarities[item_id]
    similar_items = np.argsort(item_similarities)[::-1][1:k+1]
    
    recommendations = np.zeros(ratings_matrix.shape[0])
    for similar_item in similar_items:
        recommendations += ratings_matrix[:, similar_item]
    
    return recommendations / k

  • Transpose la matrice de notes pour calculer les similarités entre éléments
  • Trouve les k éléments les plus semblables à l’élément cible
  • Aggregue les notes utilisateur pour les éléments semblables
  • Retourne la moyenne des notes pour chaque utilisateur en fonction d’éléments semblables
  • Efficace pour les systèmes avec plus d’utilisateurs que d’éléments

Factorisation de matrices

La factorisation de matrices decompose la matrice d’interactions utilisateur-élément en matrices de dimensions inférieures, en supposant que les préférences des utilisateurs et les caractéristiques des éléments peuvent être représentées par des facteurs latents. Des techniques telles que la Décomposition en Valeurs Singulieres (SVD) ou l’Algorithme des Moindres Carrés Alternants (ALS) sont communément utilisées à cette fin.

Cette approche peut traiter efficacement de grandes données sparses et fournit souvent une meilleure précision que les méthodes de filtrage collaboratif basées sur la mémoire. De plus, elle peut incorporer des techniques de régularisation pour éviter l’overfitting, améliorant la généralisation du modèle aux données non vues.

Python

 

import numpy as np

def matrix_factorization(R, P, Q, K, steps=5000, alpha=0.0002, beta=0.02):
    Q = Q.T
    for step in range(steps):
        for i in range(len(R)):
            for j in range(len(R[i])):
                if R[i][j] > 0:
                    eij = R[i][j] - np.dot(P[i,:], Q[:,j])
                    for k in range(K):
                        P[i][k] += alpha * (2 * eij * Q[k][j] - beta * P[i][k])
                        Q[k][j] += alpha * (2 * eij * P[i][k] - beta * Q[k][j])
        
        e = 0
        for i in range(len(R)):
            for j in range(len(R[i])):
                if R[i][j] > 0:
                    e += pow(R[i][j] - np.dot(P[i,:], Q[:,j]), 2)
                    for k in range(K):
                        e += (beta/2) * (pow(P[i][k], 2) + pow(Q[k][j], 2))
        if e < 0.001:
            break
    return P, Q.T

  • Met en œuvre un algorithme de factorisation matricielle de base
  • Utilise la descente de gradient pour minimiser l’erreur entre les évaluations prédites et réelles
  • Incorpore la régularisation pour empêcher l’ajustement excessif
  • Met à jour de manière itérative les facteurs latents de l’utilisateur et de l’élément
  • S’arrête lorsque l’erreur tombe en dessous d’un seuil ou que les étapes maximales sont atteintes

Contenu-Filtrage basé sur le contenu

Le filtrage basé sur le contenu recommande des éléments en fonction de leurs caractéristiques et des préférences de l’utilisateur. Il établit un profil pour chaque utilisateur et chaque article en fonction de leurs caractéristiques.

Des techniques telles que TF-IDF (Term Frequency-Inverse Document Frequency) pour l’analyse de texte et la similarité cosinus pour l’appariement sont couramment employées. Cette approche permet de résoudre efficacement le problème des nouveaux éléments, car elle ne repose pas sur les interactions antérieures de l’utilisateur.

Cependant, elle peut souffrir d’une spécialisation excessive, ce qui entraîne un manque de diversité dans les recommandations. En outre, une mise en œuvre efficace nécessite une bonne ingénierie des caractéristiques afin de s’assurer que les caractéristiques pertinentes des articles sont correctement capturées.

Python

 

import numpy as np
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import cosine_similarity

def content_based_filtering(item_descriptions, user_profile, k=5):
    vectorizer = TfidfVectorizer()
    item_vectors = vectorizer.fit_transform(item_descriptions)
    user_vector = vectorizer.transform([user_profile])
    
    similarities = cosine_similarity(user_vector, item_vectors)
    top_items = np.argsort(similarities[0])[::-1][:k]
    
    return top_items

  • Utilise TF-IDF pour convertir les descriptions textuelles en vecteurs numériques
  • Calcule la similarité cosinus entre le profil de l’utilisateur et les descriptions des articles
  • Retourne les articles les k plus similaires au profil de l’utilisateur
  • Efficace pour les systèmes avec des caractéristiques d’articles bien définies
  • Peut être facilement étendu pour inclure des types de caractéristiques multiples

Système de recommandation hybride

Les systèmes de recommandation hybrides combinent deux ou plusieurs techniques de recommandation pour exploiter leurs forces respectives. En intégrant plusieurs approches, les systèmes hybrides peuvent atténuer les faiblesses des méthodes individuelles, telles que le problème du démarrage froid. Les combinaisons courantes incluent le filtrage collaborative et le filtrage basé sur le contenu. Plusieurs méthodes sont utilisées pour combiner ces techniques, telles que pondéré, commutant, mélangé ou approche de niveau meta.

Les systèmes hybrides offrent souvent des recommandations plus robustes et plus précises que les systèmes à approche unique. Cependant, une mise en œuvre efficace exige un ajustement soigné pour balancer les différents composants et assurer une performance optimale.

Python

 

import numpy as np
from sklearn.metrics.pairwise import cosine_similarity

def hybrid_recommender(ratings_matrix, content_matrix, user_id, alpha=0.5, k=5):
    cf_similarities = cosine_similarity(ratings_matrix)
    content_similarities = cosine_similarity(content_matrix)
    
    hybrid_similarities = alpha * cf_similarities + (1 - alpha) * content_similarities
    user_similarities = hybrid_similarities[user_id]
    
    similar_users = np.argsort(user_similarities)[::-1][1:k+1]
    
    recommendations = np.zeros(ratings_matrix.shape[1])
    for similar_user in similar_users:
        recommendations += ratings_matrix[similar_user]
    
    return recommendations / k

  • Combine le filtrage collaborative et les similarités basées sur le contenu
  • Utilise une somme pondérée avec le paramètre alpha
  • Trouve des utilisateurs semblables sur la base de la similarité hybride
  • Génère des recommandations à partir des notes des utilisateurs semblables
  • Permet un ajustement simple du rapport entre le FC et les approches basées sur le contenu

Décomposition en valeurs singulières (SVD)

La décomposition en valeurs singulières (SVD) est une technique de factorisation de matrices qui decompose une matrice en trois composantes : U, Σ et V^T. Dans cette décomposition, U et V représentent les vecteurs singuliers gauche et droit respectivement, tandis que Σ contient les valeurs singulières.

La SVD réduit la dimension en conservant seulement les k valeurs singulières les plus importantes, ce qui aide à découvrir les facteurs latents dans les interactions utilisateur-item.

Cette méthode est efficace pour le traitement de grandes matrices creuses, couramment rencontrées dans les systèmes de recommandation. De plus, la DSV (Décomposition en Valeurs Singulières) offre un bon équilibre entre la précision et l’efficacité computationnelle, en faisant une option populaire pour la génération de recommandations.

Python

 

import numpy as np
from scipy.sparse.linalg import svds

def svd_recommender(ratings_matrix, k=5):
    U, s, Vt = svds(ratings_matrix, k=k)
    
    sigma = np.diag(s)
    predicted_ratings = np.dot(np.dot(U, sigma), Vt)
    
    return predicted_ratings

  • Utilise la fonction svd de scipy pour effectuer une DSV tronquée
  • Reconstitue la matrice des notes en utilisant seulement les k premières valeurs singulières
  • Renvoie une matrice dense de notes prédites pour toutes les paires utilisateur-produit
  • Efficace pour les grandes matrices de notes creuses
  • Peut être facilement intégré dans un plus grand système de recommandation

Factorisation de Tenseurs

La technique de factorisation de tenseurs étend la factorisation de matrices traditionnelle à des données multidimensionnelles, permettant d’intégrer des informations contextuelles telles que le temps et l’emplacement dans les recommandations. Elle utilise des méthodes telles que la décomposition CP, qui décompose un tenseur en une somme de tenseurs composants, en captant les interactions complexes entre plusieurs facteurs. Cette approche nécessite plus de données et de ressources computationnelles par rapport aux méthodes bidimensionnelles, car elle traite des tableaux de dimensions supérieures.

Cependant, elle peut fournir des recommandations hautement personnalisées et adaptées au contexte en utilisant les dimensions supplémentaires des données. La complexité accrue de la structure des données permet une compréhension plus nuancée des préférences utilisateur dans différents contextes, améliorant la précision globale des recommandations.

Python

 

import numpy as np
import tensorly as tl
from tensorly.decomposition import parafac

def tensor_factorization_recommender(tensor, rank=10):
    factors = parafac(tensor, rank=rank)
    reconstructed_tensor = tl.kruskal_to_tensor(factors)
    return reconstructed_tensor

  • Utilise la bibliothèque TensorLy pour les opérations et décompositions de tenseurs
  • Applique une décomposition PARAFAC au tenseur d’entrée
  • Reconstruit le tenseur à partir des facteurs décomposés
  • Rend le tenseur reconstruit sous forme de recommandations
  • Peut traiter des données multidimensionnelles (par exemple, utilisateur-article-contexte)

Filtrage collaboratif neuronal

Les systèmes de recommandation basés sur l’apprentissage profond combinent des techniques de filtrage collaboratif avec des réseaux neuronaux. Cette approche permet d’apprendre les interactions non linéaires entre l’utilisateur et l’article, ce que les méthodes traditionnelles de factorisation de la matrice peuvent difficilement faire. Les systèmes de recommandation basés sur l’apprentissage profond utilisent généralement des couches d’intégration pour représenter les utilisateurs et les articles dans un espace dense et de faible dimension. Cela permet d’intégrer facilement des caractéristiques supplémentaires ou des informations secondaires, telles que les données démographiques de l’utilisateur ou les descriptions des articles, afin d’améliorer les performances de la recommandation.

Lorsqu’ils sont formés sur de grands ensembles de données, les systèmes basés sur l’apprentissage profond peuvent souvent surpasser les méthodes traditionnelles de factorisation matricielle en termes de précision. Toutefois, cet avantage s’accompagne d’une complexité informatique accrue et de la nécessité de disposer de grandes quantités de données.

Les recommandeurs basés sur l’apprentissage profond nécessitent également un réglage minutieux des hyperparamètres pour obtenir des résultats optimaux, ce qui les rend plus difficiles à mettre en œuvre et à maintenir par rapport aux approches de filtrage collaboratif plus simples.

Python

 

import tensorflow as tf
from tensorflow.keras.layers import Input, Embedding, Flatten, Dense, Concatenate
from tensorflow.keras.models import Model

def neural_collaborative_filtering(num_users, num_items, embedding_size=100):
    user_input = Input(shape=(1,), dtype='int32', name='user_input')
    item_input = Input(shape=(1,), dtype='int32', name='item_input')

    user_embedding = Embedding(num_users, embedding_size, name='user_embedding')(user_input)
    item_embedding = Embedding(num_items, embedding_size, name='item_embedding')(item_input)

    user_vecs = Flatten()(user_embedding)
    item_vecs = Flatten()(item_embedding)

    concat = Concatenate()([user_vecs, item_vecs])
    dense1 = Dense(128, activation='relu')(concat)
    dense2 = Dense(64, activation='relu')(dense1)
    output = Dense(1, activation='sigmoid')(dense2)

    model = Model(inputs=[user_input, item_input], outputs=output)
    model.compile(optimizer='adam', loss='binary_crossentropy')

    return model

  • Utilise TensorFlow et Keras pour construire un modèle de réseau neuronal
  • Crée des couches d’intégration pour les utilisateurs et les éléments
  • Concatène les intégrations d’utilisateurs et d’éléments
  • Ajoute des couches denses pour l’apprentissage des interactions non linéaires.
  • Retourne un modèle compilé prêt à être entraîné

L’étude de cas de Netflix

La trajectoire de l’algorithme de recommandation de Netflix a commencé en 2000 avec CineMatch, un algorithme de filtrage collaboratif utilisant les notes des membres pour estimer combien un utilisateur apprécierait un film. En 2006, le Prix Netflix de 1 million de dollars a été lancé pour défier les data scientists à créer un modèle qui battrait CineMatch de 10%. L’algorithme gagnant a ensuite été implémenté dans les données internes de Netflix.

Netflix a rapidement accumulé des utilisateurs et a commencé à passer à la streaming en 2007. Les téléspectateurs ont été exposés aux algorithmes d’apprentissage par renforcement et aux algorithmes de clustering qui génèrent des suggestions en temps réel. Comme l’algorithme a amélioré, de plus en plus d’utilisateurs ont commencé à passer à Netflix, simplement en raison de l’efficacité de l’algorithme de recommandation. Près de 80% du contenu consulté sur Netflix est suggéré par l’algorithme de recommandation.

La société estime qu’elle économise 1 milliard par an grâce à l’efficacité de l’algorithme de recommandation, en évitant la perte d’utilisateurs.

Netflix utilise des techniques d’apprentissage automatique avancées et des algorithmes de clustering avec un système de plus de 1300 clusters basé sur les métadonnées des films que les utilisateurs regardent. Cela leur permet de fournir des suggestions optimisées à leurs utilisateurs. Cependant, Netflix a bientôt rencontré un problème : l’échelle. Lorsque le nombre de utilisateurs mensuels a atteint des centaines de millions et le nombre total d’utilisateurs a dépassé 200 millions, Netflix s’est engagé totalement dans le cloud computing.

En简单的 termes, ils ont migré toutes les données vers Amazon Web Services (AWS), commençant en 2008. Le processus de transition complète a pris plusieurs années à être achevé et s’est terminé en 2015. Netflix est réputé économiser 1 milliard d’euros par an en utilisant AWS. AWS dispose également d’un support intégré pour l’apprentissage automatique, que Netflix utilise pleinement. En 2022, Netflix était réputé utiliser plus de 100 000 serveurs AWS et 1 000 segmentations Kinesis pour son public mondial.

Depuis 2015, Netflix a également commencé à offrir ses propres productions, avec plus de milliers de films et de séries dans une variété large de formats. Les algorithmes de recommandation de Netflix sont hautement automatisés et effectuent des milliers d’essais A/B par jour pour les utilisateurs. Aujourd’hui, la base d’abonnés de Netflix dépasse 280 millions.

Bien que Netflix now face strong competition, especially from Disney+, which has acquired the Marvel and the Star Wars franchise, the company aims to hit 500 million subscribers by 2025.

Last year, Netflix a généré une somme colossale de 31 milliards de dollars en revenu.

The major parts of its current recommendation systems involve:

  1. Reinforcement learning: Depending upon user behavior, Netflix changes the content on the screen in real-time. Thus, the system is in a state of constant flux and changes depending upon the user’s interactions.
  2. Réseaux neuronaux profonds: En raison de l’ampleur des données (plus de 15 000 spectacles et près de 300 millions d’utilisateurs), les techniques ML standard ne sont pas faciles à appliquer. Le Deep Learning est utilisé de manière intensive, en utilisant la technologie de NVIDIA. (Voir à la fin de cet article un programme qui utilise la dernière technologie d’apprentissage profond Merlin de NVIDIA).
  3. Factorisation de matrices : En effectuant efficacement la décomposition en valeurs singulières (SVD) sur des matrices très éparses et très vastes, Netflix estime l’importance et l’attrait de chaque utilisateur pour certains genres et certaines émissions.
  4. Apprentissage par assemblage: D’astucieuses combinaisons des algorithmes énumérés ci-dessus ajustent les recommandations à la volée, de sorte que deux utilisateurs ne voient pas le même écran. Cette personnalisation est ce qui permet à Netflix de gagner beaucoup d’argent et de rester en tête de toutes les plateformes OTT.

Et tous ces modèles et optimisations sont exécutés des centaines de milliers de fois par jour pour des centaines de milliers d’utilisateurs.

Technologie moderne d’apprentissage profond

Avec de telles échelles, aucun ordinateur ne peut exécuter seul ces modèles d’apprentissage profond. C’est pourquoi AWS exécute les algorithmes de ML de manière distribuée sur des milliers de machines.

NVIDIA a récemment lancé plusieurs produits pour permettre la mise en place de systèmes de recommandation à grande échelle. Les clusters de GPU de NVIDIA jouent également un rôle important dans l’exécution des algorithmes de ML. NVIDIA a récemment lancé Merlin, un algorithme de recommandation haute performance optimisé pour fonctionner sur des milliers de machines et fournir des résultats supérieurs. Ce n’était peut-être qu’une question de temps, car la taille des ensembles de données dépassait de loin ce qu’un seul ordinateur pouvait traiter.

Les systèmes de recommandation modernes utilisent largement l’apprentissage en profondeur. Dans le cadre de l’apprentissage en profondeur, les systèmes informatiques GPU/TPU sont largement utilisés pour accélérer le calcul.

Certaines des offres récentes de NVIDIA pour Merlin comprennent :

NVIDIA Recommender Systems

(De Announcing NVIDIA Merlin : Un cadre d’application pour les systèmes de recommandation profonds)

Disponibles en tant que projets open-source :

NVTabular.

NVTabular est une bibliothèque d’ingénierie des caractéristiques et de prétraitement, conçue pour manipuler rapidement et facilement des ensembles de données d’une taille de l’ordre du téraoctet. Elle est particulièrement adaptée aux systèmes de recommandation, qui nécessitent un moyen évolutif de traiter des informations supplémentaires, telles que les métadonnées de l’utilisateur et de l’article et les informations contextuelles. Il fournit une abstraction de haut niveau pour simplifier le code et accélère le calcul sur le GPU à l’aide de la bibliothèque RAPIDS cuDF. En utilisant NVTabular, avec seulement 10 à 20 lignes de code API de haut niveau, vous pouvez mettre en place un pipeline d’ingénierie des données et obtenir une accélération jusqu’à 10X par rapport aux approches optimisées basées sur le CPU tout en ne subissant aucune limitation de la taille des ensembles de données, quelle que soit la capacité de mémoire du GPU/CPU.

HugeCTR

HugeCTR est un cadre GPU très efficace conçu pour la formation de modèles de recommandation, qui vise à la fois des performances élevées et une grande facilité d’utilisation. Il supporte à la fois les modèles profonds simples et les modèles hybrides de pointe tels que W&D, Deep Cross Network, et DeepFM. Nous travaillons également sur l’activation de DLRM avec HugeCTR. Les détails du modèle et les hyperparamètres peuvent être spécifiés facilement au format JSON, ce qui permet une sélection rapide à partir d’une gamme de modèles courants.

TensorRT et Triton Server pour l’inférence

NVIDIA TensorRT est un SDK pour l’inférence DL haute performance. Il comprend un optimiseur d’inférence DL et un moteur d’exécution qui offre une faible latence et un débit élevé pour les applications d’inférence. TensorRT peut accepter des réseaux neuronaux formés à partir de tous les cadres DL à l’aide d’une interface commune, le format d’échange de réseau neuronal ouvert (ONNX).

NVIDIA Triton Inference Server fournit une solution d’inférence dans le nuage optimisée pour les GPU NVIDIA. Le serveur fournit un service d’inférence via un point d’extrémité HTTP ou gRPC, permettant aux clients distants de demander une inférence pour n’importe quel modèle géré par le serveur. Le serveur Triton peut servir des modèles de recommandation DL à l’aide de plusieurs backends, notamment TensorFlow, PyTorch (TorchScript), ONNX runtime et TensorRT runtime.

Exemple de code

L’exemple de code suivant montre un flux de travail de prétraitement réel nécessaire pour transformer l’ensemble de données Criteo Ads de 1 To, mis en œuvre avec seulement une douzaine de lignes de code à l’aide de NVTabular. En bref, les colonnes numériques et catégorielles sont spécifiées. Ensuite, nous définissons un flux de travail NVTabular et fournissons un ensemble de fichiers de formation et de validation. Ensuite, des opérations de prétraitement sont ajoutées au flux de travail et les données sont persistées sur le disque. En comparaison, les codes de traitement personnalisés, tels que data util basé sur NumPy dans l’implémentation DLRM de Facebook, peuvent avoir 500-1000 lignes de code pour le même pipeline.

Python

 

import nvtabular as nvt
import glob
 
cont_names = ["I"+str(x) for x in range(1, 14)] # specify continuous feature names
cat_names = ["C"+str(x) for x in range(1, 27)] # specify categorical feature names
label_names = ["label"] # specify target feature
columns = label_names + cat_names + cont_names # all feature names
 
# initialiser le Workflow
proc = nvt.Worfklow(cat_names=cat_names, cont_names=cont_names, label_name=label_names)
 
# créer des datsets à partir de fichiers d'entrée
train_files = glob.glob("./dataset/train/*.parquet")
valid_files = glob.glob("./dataset/valid/*.parquet")
 
train_dataset = nvt.dataset(train_files, gpu_memory_frac=0.1)
valid_dataset = nvt.dataset(valid_files, gpu_memory_frac=0.1)
 
# ajouter l'ingénierie des caractéristiques et les opérations de prétraitement au Workflow
proc.add_cont_feature([nvt.ops.ZeroFill(), nvt.ops.LogOp()])
proc.add_cont_preprocess(nvt.ops.Normalize())
proc.add_cat_preprocess(nvt.ops.Categorify(use_frequency=True, freq_threshold=15))
 
# calculer les statistiques, transformer les données, exporter vers le disque
proc.apply(train_dataset, shuffle=True, output_path="./processed_data/train", num_out_files=len(train_files))
proc.apply(valid_dataset, shuffle=False, output_path="./processed_data/valid", num_out_files=len(valid_files))

L’ensemble de la pile technologique peut être trouvé sur le dépôt GitHub suivant:

Conclusion

Les systèmes de recommandation ont beaucoup évolué.

De la simple modélisation statistique, du filtrage basé sur le contenu et du filtrage collaboratif, nous avons maintenant des réseaux neuronaux d’apprentissage profond, des nœuds HPC, la factorisation matricielle et son extension à de plus grandes dimensions, la factorisation tensorielle.

Le système de recommandation le plus rentable pour le streaming est NVIDIA, et ils exécutent l’ensemble de leurs algorithmes d’apprentissage automatique sur le cloud avec AWS.

Les systèmes de recommandation sont utilisés partout, de Google à Microsoft, en passant par Amazon et Flipkart. Il s’agit d’un élément essentiel de l’entreprise moderne, et il n’existe aucune entreprise en ligne qui ne l’utilise pas sous une forme ou une autre.

Il existe aujourd’hui de nombreuses entreprises qui proposent des systèmes de recommandation personnalisés en ligne.

Parmi les plus importants, citons :

  1. Netflix: Connu pour son moteur de recommandation sophistiqué qui analyse les habitudes de visionnage des utilisateurs pour suggérer des films et des émissions de télévision
  2. Amazon: Utilise un puissant moteur de recommandation qui suggère des produits en fonction de l’historique d’achat des utilisateurs et de leur comportement de navigation.
  3. Spotify : Utilise un système de recommandation pour créer des playlists de musique et des suggestions de chansons en fonction de l’histoire d’écoute de l’utilisateur
  4. YouTube : Utilise un moteur de recommandation pour suggérer des vidéos en fonction des habitudes et des préférences de visualisation des utilisateurs
  5. LinkedIn : Recommande des emplois, des connexions et du contenu en fonction des profils utilisateur et de l’histoire professionnelle
  6. Zillow : Suggère des biens immobiliers adaptés aux préférences et à l’histoire de recherche de l’utilisateur
  7. Airbnb : Propose des recommandations de logements en fonction de l’histoire de voyage et des préférences de l’utilisateur
  8. Uber : Recommande des options de course en fonction des préférences et des trajets précédents de l’utilisateur
  9. IBM Corporation : Un leader sur le marché des moteurs de recommandation, offrant diverses solutions pilotées par l’IA
  10. Google LLC (Alphabet Inc.) : Fournit des systèmes de recommandation sur ses plateformes, en tirant parti de vastes analyses de données

Un jour, j’espère que votre entreprise sera parmi cette liste de choix. Et toutes les meilleures chances pour votre entreprise.

Quelle que soit la branche dans laquelle vous opérez, si vous avez une présence en ligne, vous devez utiliser des systèmes de recommandation d’une façon ou d’une autre. Continuez à explorer ce segment, et si vous avez une excellente expertise, soyez assuré que vous serez très demandé.

Ne cessez jamais d’apprendre. Gardez votre énergie. Croiez toujours en votre potentiel infini de croissance. Votre avenir est entre vos mains. Faites-en un hors du commun!

References

  1. Système de recommandation – Wikipedia
  2. Qu’est-ce qu’un système de recommandation ? – GeeksforGeeks
  3. Types de systèmes de recommandation : Comment ils fonctionnent et cas d’utilisation (almabetter.com)
  4. Systèmes de recommandation et apprentissage automatique (itransition.com)
  5. Systèmes de recommandation en Python 101 (kaggle.com)
  6. Algorithmes pour les systèmes de recommandation : Un aperçu – KDnuggets

Source:
https://dzone.com/articles/a-deep-dive-into-recommendation-algorithms-with-ne