0% ont trouvé ce document utile (0 vote)
1 vues56 pages

Main

Transféré par

nada zirari
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
1 vues56 pages

Main

Transféré par

nada zirari
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

RAPPORT DE PROJET DE FIN D’ÉTUDES

3ème Année en Cycle d’Ingénierie Informatique

Système Intelligent de Recommandation de Produits


Basé sur l’Analyse de Paniers et le Deep Learning
pour le Commerce en Ligne
(Intelligent Product Recommendation System Based on
Market Basket Analysis for Online Retail)

Réalisé par :
Nada ZIRARI
Ziyad BELAHMAR
Karim BEKKALI
Youssef EL AZAMI EL HASSANI

Encadré par :
M. Nfaoui

Année universitaire : 2025/2026


Système de Recommandation de Produits 2025/2026

Table des matières

Remerciements VI

Résumé VII

Abstract VIII

Introduction Générale 1

1 État de l’Art des Systèmes de Recommandation 4


1.1 Systèmes de Recommandation . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.1.1 Historique des Systèmes de Recommandation . . . . . . . . . . . . 4
1.1.2 Principe des Systèmes de Recommandation . . . . . . . . . . . . . . 5
1.1.3 Filtrage Collaboratif . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.1.4 Filtrage Basé sur le Contenu . . . . . . . . . . . . . . . . . . . . . . 6
1.1.5 Filtrage Hybride . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.2 Problèmes et Limites des Systèmes de Recommandation . . . . . . . . . . 7
1.2.1 Démarrage à Froid (Cold Start) . . . . . . . . . . . . . . . . . . . . 7
1.2.2 Sparsité (Sparsity) . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.2.3 Sérendipité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.2.4 Problème du Mouton Gris (Gray Sheep) . . . . . . . . . . . . . . . 8
1.2.5 Montée en Charge (Scalability) . . . . . . . . . . . . . . . . . . . . 8
1.3 Market Basket Analysis et Règles d’Association . . . . . . . . . . . . . . . 9
1.3.1 Définition Formelle . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.3.2 Algorithme Apriori . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.3.3 Position dans notre Système . . . . . . . . . . . . . . . . . . . . . . 10
1.4 Systèmes de Recommandation par Deep Learning . . . . . . . . . . . . . . 10
1.4.1 AutoEncoders pour la Recommandation . . . . . . . . . . . . . . . 10
1.4.2 Neural Collaborative Filtering (NCF) . . . . . . . . . . . . . . . . . 10
1.4.3 LSTM pour les Séquences . . . . . . . . . . . . . . . . . . . . . . . 10
1.5 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

2 Données et Prétraitement 12
2.1 Workflow Global du Système . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.2 Présentation du Dataset . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.2.1 UCI Online Retail Dataset . . . . . . . . . . . . . . . . . . . . . . . 14
2.2.2 Importance de chaque colonne pour le système . . . . . . . . . . . . 15
2.3 Prétraitement et Nettoyage . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.3.1 Étapes de Nettoyage . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.4 Représentations des Données . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.4.1 Matrice Client-Produit (pour AutoEncoder et NCF) . . . . . . . . . 16
2.4.2 Paniers par Facture (pour Apriori) . . . . . . . . . . . . . . . . . . 17

I
Système de Recommandation de Produits 2025/2026

2.4.3 Séquences Temporelles (pour LSTM) . . . . . . . . . . . . . . . . . 17


2.5 Mappings d’Indices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.6 Découpage Train / Validation / Test . . . . . . . . . . . . . . . . . . . . . 17
2.7 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

3 Choix Algorithmiques et Implémentation 19


3.1 Justification de l’Approche Ensemble . . . . . . . . . . . . . . . . . . . . . 19
3.2 Modèle 1 : AutoEncoder Débruiteur . . . . . . . . . . . . . . . . . . . . . . 19
3.2.1 Principe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.2.2 Architecture Améliorée . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.2.3 Fonction de Perte Pondérée . . . . . . . . . . . . . . . . . . . . . . 20
3.2.4 Améliorations Apportées . . . . . . . . . . . . . . . . . . . . . . . . 20
3.2.5 Résultats AutoEncoder . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.3 Modèle 2 : NCF (Neural Collaborative Filtering) . . . . . . . . . . . . . . . 21
3.3.1 Architecture NeuMF . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.3.2 Échantillonnage Négatif Pondéré par Popularité . . . . . . . . . . . 22
3.3.3 Amélioration Cold-Start : User-from-Items Inference . . . . . . . . . 22
3.3.4 Améliorations NCF . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.3.5 Résultats NCF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.4 Modèle 3 : LSTM Séquentiel . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.4.1 Principe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.4.2 Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.4.3 Préparation des Séquences . . . . . . . . . . . . . . . . . . . . . . . 25
3.4.4 Résultats LSTM . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.5 Fusion Ensemble et Normalisation . . . . . . . . . . . . . . . . . . . . . . . 26
3.5.1 Problème de Compatibilité des Scores . . . . . . . . . . . . . . . . . 26
3.5.2 Normalisation Min-Max . . . . . . . . . . . . . . . . . . . . . . . . 26
3.5.3 Fusion Pondérée . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.5.4 Justification des Poids de l’Ensemble . . . . . . . . . . . . . . . . . 26
3.5.5 Pourquoi l’Ensemble est Légèrement Inférieur au LSTM Seul ? . . . 27
3.5.6 Résultats Ensemble . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.6 Discussion : Réponses aux Questions de Recherche . . . . . . . . . . . . . . 28
3.6.1 Pourquoi utiliser un AutoEncoder malgré ses 3.06% de précision ? . 28
3.6.2 Pourquoi le deep learning plutôt qu’ALS, SVD ou Item-Based CF ? 28
3.6.3 Que faire pour un utilisateur totalement nouveau ? . . . . . . . . . 28
3.6.4 Comment savoir que l’amélioration du NCF n’est pas due au hasard ? 28
3.7 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

4 Analyse des Paniers d’Achat (Market Basket Analysis) 30


4.1 Introduction à la Market Basket Analysis . . . . . . . . . . . . . . . . . . . 30
4.1.1 Applications Concrètes . . . . . . . . . . . . . . . . . . . . . . . . . 30
4.2 Métriques Fondamentales . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
4.2.1 Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
4.2.2 Confiance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.2.3 Lift . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.3 Algorithme Apriori . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.3.1 Principe Général . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.3.2 Fonctionnement pas à pas . . . . . . . . . . . . . . . . . . . . . . . 32
4.3.3 Implémentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

II
Système de Recommandation de Produits 2025/2026

4.3.4 Résultats sur notre Dataset . . . . . . . . . . . . . . . . . . . . . . 33


4.4 Algorithme FP-Growth (alternative à Apriori) . . . . . . . . . . . . . . . . 34
4.4.1 Limites d’Apriori et Motivation . . . . . . . . . . . . . . . . . . . . 34
4.4.2 FP-Tree . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
4.4.3 Comparaison Apriori vs FP-Growth . . . . . . . . . . . . . . . . . . 34
4.5 Intégration dans le Système de Recommandation . . . . . . . . . . . . . . 34
4.5.1 Rôle des Règles dans le Pipeline . . . . . . . . . . . . . . . . . . . . 34
4.5.2 Architecture de la System de Recommandation avec MBA . . . . . 35
4.5.3 Format des Règles Sauvegardées . . . . . . . . . . . . . . . . . . . . 35
4.6 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

5 Résultats, Déploiement et Discussion 37


5.1 Évaluation des Modèles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
5.1.1 Métriques Utilisées . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
5.1.2 Résultats Complets . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
5.1.3 Exemples de Recommandations Réelles . . . . . . . . . . . . . . . . 38
5.2 Déploiement : API REST . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
5.2.1 Architecture FastAPI . . . . . . . . . . . . . . . . . . . . . . . . . . 38
5.2.2 Exemple de Requête/Réponse . . . . . . . . . . . . . . . . . . . . . 39
5.2.3 Performances API . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
5.3 Interface Web Streamlit . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
5.4 Discussion et Analyse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
5.4.1 Pourquoi LSTM Domine ? . . . . . . . . . . . . . . . . . . . . . . . 40
5.4.2 Pourquoi AutoEncoder reste limité ? . . . . . . . . . . . . . . . . . 40
5.4.3 Impact de la Technique User-from-Items Inference (NCF) . . . . . . 40
5.4.4 Comparaison aux Baselines . . . . . . . . . . . . . . . . . . . . . . 40
5.5 Déploiement en Production . . . . . . . . . . . . . . . . . . . . . . . . . . 41
5.5.1 API REST FastAPI . . . . . . . . . . . . . . . . . . . . . . . . . . 41
5.5.2 Interface Streamlit . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
5.6 Limites du Projet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
5.6.1 Limites des Modèles . . . . . . . . . . . . . . . . . . . . . . . . . . 42
5.6.2 Limites de l’Évaluation . . . . . . . . . . . . . . . . . . . . . . . . . 42
5.7 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

Conclusion Générale 44

Webographie 46

III
Système de Recommandation de Produits 2025/2026

Table des figures


2.1 Workflow global du système de recommandation du dataset brut aux re-
commandations finales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.2 Répartition Train / Validation / Test — 4 339 clients (70% / 10% / 20%) . 18

3.1 Courbe de perte AutoEncoder – entraînement vs validation . . . . . . . . . 21


3.2 Courbe de perte NCF – entraînement vs validation . . . . . . . . . . . . . 24
3.3 Courbe de perte LSTM – entraînement vs validation . . . . . . . . . . . . 25
3.4 Comparaison des performances des quatre modèles (Précision, Rappel,
NDCG à K=10) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

4.1 Heatmap des top règles d’association — Confiance et Lift . . . . . . . . . . 33


4.2 Architecture du système de recommandation intégrant Market Basket Ana-
lysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

5.1 Interface Streamlit déployée — Système de Recommandation de Produits


([Link] . . . . . 41

IV
Système de Recommandation de Produits 2025/2026

Liste des tableaux


2.1 Description des étapes du workflow global . . . . . . . . . . . . . . . . . . 14
2.2 Structure du dataset UCI Online Retail . . . . . . . . . . . . . . . . . . . . 14
2.3 Statistiques brutes du dataset . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.4 Résultats du nettoyage du dataset . . . . . . . . . . . . . . . . . . . . . . . 16
2.5 Répartition train / validation / test (70/10/20) . . . . . . . . . . . . . . . 18

3.1 Complémentarité des trois modèles . . . . . . . . . . . . . . . . . . . . . . 19


3.2 Améliorations apportées à l’AutoEncoder . . . . . . . . . . . . . . . . . . . 20
3.3 Résultats finaux AutoEncoder (869 utilisateurs de test) . . . . . . . . . . . 21
3.4 Améliorations apportées au NCF . . . . . . . . . . . . . . . . . . . . . . . 23
3.5 Résultats finaux NCF avec User-from-Items Inference (869 utilisateurs de
test) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.6 Résultats finaux LSTM – Meilleur modèle (869 utilisateurs de test) . . . . 25
3.7 Plages de scores bruts avant normalisation . . . . . . . . . . . . . . . . . . 26
3.8 Résultats finaux Ensemble normalisé (869 utilisateurs de test) . . . . . . . 27
3.9 Comparaison deep learning vs méthodes classiques pour notre dataset . . . 28
3.10 Comparaison finale des modèles sur 869 utilisateurs de test . . . . . . . . . 29

4.1 Exemples de règles d’association extraites du dataset . . . . . . . . . . . . 32


4.2 Résultats de l’analyse Apriori sur [Link] . . . . . . . . . . . . . . . . 33
4.3 Comparaison Apriori vs FP-Growth . . . . . . . . . . . . . . . . . . . . . . 34
4.4 Format du fichier association_rules.csv . . . . . . . . . . . . . . . . . . . . 35

5.1 Résultats finaux sur 869 utilisateurs de test (split 70/10/20) . . . . . . . . 37


5.2 Recommandations pour le client 15168 – cohérence thématique "jeux vintage" 38
5.3 Recommandations pour le client 18150 – cohérence thématique "décoration" 38
5.4 Endpoints de l’API REST FastAPI . . . . . . . . . . . . . . . . . . . . . . 39
5.5 Impact de la technique User-from-Items Inference sur NCF . . . . . . . . . 40
5.6 Comparaison aux baselines (869 utilisateurs de test) . . . . . . . . . . . . . 40
5.7 Bilan quantitatif des réalisations du projet . . . . . . . . . . . . . . . . . . 44
5.8 Perspectives d’amélioration du système . . . . . . . . . . . . . . . . . . . . 45

V
Système de Recommandation de Produits 2025/2026

Remerciements

Nous tenons à exprimer notre profonde gratitude à toutes les personnes qui ont contribué,
de près ou de loin, à la réalisation de ce projet.

Nous adressons nos sincères remerciements à M. Nfaoui, notre encadrant pédagogique,


pour sa disponibilité, ses conseils avisés et son soutien tout au long de ce projet. Ses
orientations précieuses nous ont permis de surmonter les nombreux défis rencontrés lors
du développement de notre système.

Nous remercions également l’ensemble du corps enseignant de notre établissement


pour la formation de qualité qu’ils nous ont dispensée, nous dotant ainsi des compétences
nécessaires à la réalisation de ce travail.

Nos remerciements vont aussi à nos familles et proches pour leur soutien moral indé-
fectible durant toute la durée de ce projet.

Enfin, nous remercions chacun des membres de l’équipe pour leur implication, leur
sérieux et l’esprit de collaboration qui a régné tout au long de ce projet.

L’équipe projet

VI
Système de Recommandation de Produits 2025/2026

Résumé

Ce rapport présente la conception et l’implémentation d’un système intelligent de re-


commandation de produits pour le commerce en ligne, basé sur une approche multi-
couche combinant l’analyse des paniers d’achat (Market Basket Analysis) et trois modèles
de deep learning complémentaires.

Le projet repose sur le dataset UCI Online Retail, comprenant 540 710 transactions
brutes issues d’un détaillant britannique en ligne. Après une phase rigoureuse de nettoyage
et de prétraitement, 397 016 transactions ont été retenues, représentant 4 339 clients
et 3 665 produits distincts.

Quatre composantes ont été conçues, entraînées et évaluées :


— Apriori (Market Basket Analysis) : extraction de 32 règles d’association inter-
prétables entre produits (lift > 1.5, confiance > 50%).
— AutoEncoder débruiteur : capture les préférences générales des utilisateurs par
compression et reconstruction de la matrice client-produit (goulot 256 dimensions).
— NCF (Neural Collaborative Filtering / NeuMF) : apprend les interactions spéci-
fiques utilisateur-produit via des embeddings de 128 dimensions, avec une technique
de User-from-Items Inference pour le démarrage à froid.
— LSTM (Long Short-Term Memory) : modélise les patterns temporels d’achat à tra-
vers des séquences ordonnées chronologiquement (256 unités, fenêtre de 10 articles).

Les trois modèles de deep learning sont fusionnés dans un ensemble pondéré nor-
malisé (AE×10% + NCF×35% + LSTM×55%). L’évaluation sur 869 utilisateurs de
test (découpage 70/10/20) montre que le modèle LSTM atteint une Précision@5 de
29,57%, soit 211 fois mieux que la recommandation aléatoire ( 0,14%). L’ensemble
atteint 29,25%, et le NCF passe de 3,84% à 8,81% grâce à la technique User-from-Items
Inference (+129%).

Le système a été déployé sous forme d’API REST via FastAPI, avec un temps de réponse
moyen de 150 ms, et une interface web interactive réalisée avec Streamlit et accessible en
ligne.

Mots-clés : Système de recommandation, Deep Learning, LSTM, AutoEncoder, Neural


Collaborative Filtering, Market Basket Analysis, Apriori, Ensemble, API REST, Stream-
lit, E-commerce.

VII
Système de Recommandation de Produits 2025/2026

Abstract

This report presents the design and implementation of an intelligent product recom-
mendation system for e-commerce, based on an ensemble approach combining three
complementary deep learning models.

The project is built on the UCI Online Retail dataset, containing 541,909 raw transac-
tions from a UK-based online retailer. After a rigorous cleaning and preprocessing phase,
397,924 transactions were retained, covering 4,339 customers and 3,665 distinct products.

Three deep learning models were designed, trained and evaluated :


— AutoEncoder : captures users’ general preferences through compression of the
customer-product matrix.
— NCF (Neural Collaborative Filtering) : learns specific user-item interactions using
64-dimensional embeddings.
— LSTM (Long Short-Term Memory) : models temporal purchase patterns through
chronologically ordered sequences.

The three models are fused into a normalized ensemble, correcting the score scale
imbalance issue. Results show that the LSTM model achieves a Precision@5 of 32.23%,
which is 6.4 times better than random recommendation. The ensemble reaches 31.82%,
validating the multi-model approach.

The system was deployed as a REST API using FastAPI, with an average response time
of 145 ms, and a web interface built with Streamlit.

Keywords : Recommendation System, Deep Learning, LSTM, AutoEncoder, Neural Col-


laborative Filtering, Ensemble, REST API, E-commerce.

VIII
Système de Recommandation de Produits 2025/2026

Introduction Générale

Contexte
L’essor du commerce électronique a fondamentalement transformé les comportements de
consommation. Face à des catalogues de produits comptant des milliers, voire des millions
d’articles, les utilisateurs sont confrontés à une surcharge informationnelle qui nuit à leur
expérience d’achat. Dans ce contexte, les systèmes de recommandation jouent un
rôle stratégique : ils filtrent automatiquement l’information pour ne présenter à chaque
utilisateur que les produits susceptibles de l’intéresser.
Des entreprises comme Amazon, Netflix ou Spotify ont démontré l’impact économique
considérable de recommandations personnalisées et pertinentes. Selon McKinsey, 35%
des achats sur Amazon sont directement attribuables aux recommandations. La per-
sonnalisation n’est plus un avantage concurrentiel optionnel : c’est une nécessité opéra-
tionnelle.
Notre projet porte sur un détaillant en ligne britannique spécialisé dans les cadeaux et
la décoration, disposant de 4 339 clients et 3 665 produits. La question fondamentale
est : comment maximiser la pertinence des recommandations pour ces clients, en exploitant
leurs historiques d’achats de manière intelligente ?

Problématique de Recherche
Comment concevoir un système de recommandation hybride capable de com-
biner des signaux comportementaux hétérogènes préférences statiques, co-
achats de produits, interactions utilisateur-article et séquences temporelles
d’achat pour maximiser la pertinence des recommandations personnalisées
dans un contexte de commerce électronique caractérisé par une forte sparsité
des données ?

Cette problématique centrale se décompose en plusieurs questions de recherche :

1. Quelle architecture de représentation des utilisateurs est la plus adaptée


à des données d’achat binaires et très creuses ?
La matrice client-produit de notre dataset présente une sparsité de 99,97% : la
quasi-totalité des cellules vaut zéro. Comment construire une représentation utile
de l’utilisateur dans cet espace quasi-vide ?
2. Comment capturer la dimension temporelle et séquentielle des compor-
tements d’achat ?

1
Système de Recommandation de Produits 2025/2026

L’ordre dans lequel un client achète ses produits contient une information prédic-
tive forte que les méthodes statiques (filtrage collaboratif classique, factorisation de
matrices) ne peuvent pas exploiter. Comment modéliser la dynamique temporelle
des achats ?
3. Comment extraire des patterns d’association entre produits qui soient à
la fois précis et interprétables par des équipes métier ?
Les modèles de deep learning sont des boîtes noires. Comment compléter leur
puissance prédictive par des règles explicites et compréhensibles pour des non-
spécialistes ?
4. Comment combiner de manière optimale plusieurs modèles aux forces et
faiblesses complémentaires ?
Aucun algorithme seul ne capture toutes les dimensions du comportement utilisa-
teur. Comment fusionner leurs prédictions de façon à tirer parti de la complémenta-
rité de chacun, sans que les modèles les plus faibles ne dégradent les performances
globales ?
5. Comment recommander efficacement pour des utilisateurs sans aucun
historique d’achat ?
Le problème du démarrage à froid (cold-start) est inhérent aux systèmes de re-
commandation basés sur le comportement. Comment offrir des recommandations
pertinentes à un utilisateur totalement nouveau, dès sa première visite ?

Approche Proposée
Pour répondre à ces questions, nous proposons une architecture multicouche :

— Market Basket Analysis (Apriori) : extraction de règles d’association interpré-


tables entre produits co-achetés.
— AutoEncoder débruiteur : représentation latente des préférences générales de
l’utilisateur.
— NCF (NeuMF) : modélisation des interactions spécifiques utilisateur-produit, avec
inférence cold-start par agrégation d’embeddings.
— LSTM : prédiction du prochain article basée sur la séquence chronologique des
achats.
— Ensemble normalisé : fusion pondérée des scores, avec normalisation min-max
pour corriger les déséquilibres d’échelle.

Organisation du Rapport
Ce rapport est organisé comme suit :

— Chapitre 1 : État de l’art – Systèmes de recommandation, Market Basket Ana-


lysis, deep learning pour la recommandation, et limitations connues.
— Chapitre 2 : Données et Prétraitement – Dataset UCI Online Retail, pipeline
de nettoyage, workflow global, et trois représentations créées.

2
Système de Recommandation de Produits 2025/2026

— Chapitre 3 : Choix Algorithmiques et Implémentation – Justification et dé-


tail de chaque modèle, améliorations apportées, et fusion ensemble avec justification
des poids.
— Chapitre 4 : Analyse des Paniers d’Achat – Market Basket Analysis avec
Apriori : métriques, implémentation, et 32 règles extraites.
— Chapitre 5 : Résultats, Déploiement et Discussion – Évaluation complète,
API REST, déploiement Streamlit, limites du projet, et réponses aux questions de
recherche.
— Conclusion – Synthèse des apports et perspectives.

3
Système de Recommandation de Produits 2025/2026

1. État de l’Art des Systèmes de Re-


commandation

1.1 Systèmes de Recommandation


Un système de recommandation est un outil logiciel qui propose à un utilisateur
des éléments susceptibles de l’intéresser, en se basant sur ses interactions passées, ses
préférences ou le comportement d’utilisateurs similaires. Ces systèmes sont devenus om-
niprésents dans le commerce électronique, le streaming musical, les plateformes vidéo et
les réseaux sociaux.

L’objectif principal d’un système de recommandation est de filtrer l’information pour


ne présenter à l’utilisateur que ce qui est pertinent pour lui, parmi un catalogue souvent
très large.

1.1.1 Historique des Systèmes de Recommandation


Les systèmes de recommandation ont une histoire qui remonte aux années 1990. Voici les
étapes clés de leur évolution :

— 1992 : GroupLens est l’un des premiers systèmes de filtrage collaboratif, appliqué
aux news en ligne.
— 1994 : Apparition de Tapestry, premier système exploitant les annotations des uti-
lisateurs.
— 1997 : Riedl et al. publient les premiers travaux formels sur le filtrage collaboratif
basé sur les utilisateurs.
— 2001 : Amazon dépose un brevet sur la recommandation item-based collaborative
filtering, encore utilisée aujourd’hui.
— 2006 : Netflix lance le Netflix Prize, compétition mondiale pour améliorer son sys-
tème de recommandation de 10%. Le prix de 1 million de dollars est remporté en
2009 par BellKor’s Pragmatic Chaos.
— 2010-2016 : Émergence des approches Deep Learning pour la recommandation
(AutoEncoders, RNN, LSTM).
— 2017 : Publication de Neural Collaborative Filtering (NCF) par He et al., qui
marque un tournant dans l’application du deep learning aux systèmes de recom-
mandation.
— 2020-2024 : Domination des approches basées sur les Transformers et les Graph
Neural Networks.

4
Système de Recommandation de Produits 2025/2026

1.1.2 Principe des Systèmes de Recommandation


Le principe fondamental d’un système de recommandation repose sur l’hypothèse que :

"Les utilisateurs qui ont aimé les mêmes éléments dans le passé tendront à
aimer les mêmes éléments dans le futur."

Formellement, soit U = {u1 , u2 , . . . , um } l’ensemble des utilisateurs et I = {i1 , i2 , . . . , in }


l’ensemble des items. Le système cherche à estimer une fonction de score :

f :U ×I →R (1.1)

Pour chaque utilisateur u, le système retourne les K items ayant le score le plus élevé :

K
Top-K(u) = arg max f (u, i) (1.2)
i∈I\Iu

où Iu est l’ensemble des items déjà consommés par l’utilisateur u.

1.1.3 Filtrage Collaboratif


Le filtrage collaboratif (Collaborative Filtering) est l’approche la plus répandue. Elle
repose uniquement sur les interactions entre utilisateurs et items, sans nécessiter de des-
cription des items eux-mêmes.
L’idée centrale : "Si deux utilisateurs ont aimé les mêmes items, ils ont probablement des
goûts similaires et aimeront les mêmes items futurs."
Il existe deux grandes variantes :

— Filtrage basé utilisateur (User-Based) : On cherche les utilisateurs similaires à


l’utilisateur cible, puis on recommande les items qu’ils ont aimés.
— Filtrage basé item (Item-Based) : On cherche les items similaires aux items déjà
consommés par l’utilisateur cible.

Techniques de Recommandation
Plusieurs techniques sont utilisées dans le filtrage collaboratif :

Factorisation de Matrices (Matrix Factorization) C’est l’approche classique. La


matrice d’interactions R ∈ Rm×n est décomposée en deux matrices latentes :

R ≈ P · QT (1.3)

où P ∈ Rm×k représente les utilisateurs et Q ∈ Rn×k représente les items dans un espace
latent de dimension k.

5
Système de Recommandation de Produits 2025/2026

SVD (Singular Value Decomposition) La décomposition en valeurs singulières est


utilisée pour réduire la dimensionnalité :

R = U ΣV T (1.4)

Algorithme des K plus proches voisins (KNN) Pour trouver les utilisateurs ou
items similaires, on calcule la similarité entre tous les paires et on retient les K plus
proches.

Mesure de Similarité
La mesure de similarité est critique dans le filtrage collaboratif. Les plus utilisées sont :

Cosine Similarity
⃗ru · ⃗rv
sim(u, v) = (1.5)
∥⃗ru ∥ · ∥⃗rv ∥

Corrélation de Pearson

i∈Iuv (rui − r̄u )(rvi − r̄v )


P
sim(u, v) = qP qP (1.6)
i∈Iuv (rui − r̄u ) · i∈Iuv (rvi − r̄v )
2 2

Distance de Jaccard
|A ∩ B|
J(A, B) = (1.7)
|A ∪ B|

Particulièrement adaptée aux données binaires (achat / pas d’achat).

Recommandation Multicritères
La recommandation multicritères étend le filtrage collaboratif en utilisant plusieurs dimen-
sions de notation au lieu d’une seule. Par exemple, un utilisateur peut noter un restaurant
sur : la qualité de la nourriture, le service, l’ambiance et le prix.
Le score global est alors :

C
rui = c
(1.8)
X
wc · rui
c=1

où wc est le poids de chaque critère c et rui


c
est la note du critère c de l’utilisateur u pour
l’item i.

1.1.4 Filtrage Basé sur le Contenu


Le filtrage basé sur le contenu (Content-Based Filtering) recommande des items si-
milaires à ceux que l’utilisateur a déjà aimés, en se basant sur les caractéristiques des
items (description, catégorie, prix, etc.).
Principe :

6
Système de Recommandation de Produits 2025/2026

1. Créer un profil de l’utilisateur basé sur les items consommés


2. Calculer la similarité entre ce profil et tous les items du catalogue
3. Recommander les items les plus similaires
Avantages :
— Pas besoin d’autres utilisateurs
— Recommandations transparentes et explicables
— Pas de problème de démarrage à froid pour les items
Inconvénients :
— Surspécialisation (recommande toujours le même type d’item)
— Nécessite une description détaillée des items
— Pas de découverte de nouveaux types d’items

1.1.5 Filtrage Hybride


Le filtrage hybride combine les approches collaboratives et basées sur le contenu pour
pallier leurs limitations respectives.
Stratégies d’hybridation :

— Pondération : Combinaison linéaire des scores des deux approches :


Shybrid = α · SCF + (1 − α) · SCB (1.9)
— Cascade : L’un affine les résultats de l’autre.
— Commutation : Sélection de l’approche selon le contexte (ex : filtrage basé contenu
si l’utilisateur est nouveau).
— Feature Augmentation : Les caractéristiques d’une approche enrichissent l’autre.

1.2 Problèmes et Limites des Systèmes de Recom-


mandation
Malgré leurs succès, les systèmes de recommandation font face à plusieurs défis bien
documentés dans la littérature.

1.2.1 Démarrage à Froid (Cold Start)


Le problème du démarrage à froid survient lorsqu’un système ne dispose pas d’assez
d’informations pour faire des recommandations pertinentes :

— Nouvel utilisateur : Pas d’historique d’achats → impossible de personnaliser


— Nouvel item : Pas d’interactions → ne peut pas être recommandé
— Nouveau système : Pas de données du tout → aucune recommandation possible

Solutions courantes :
— Recommander les items populaires (fallback)
— Demander à l’utilisateur ses préférences initiales
— Utiliser des données démographiques
— Approche hybride avec filtrage basé sur le contenu

7
Système de Recommandation de Produits 2025/2026

1.2.2 Sparsité (Sparsity)


La sparsité est l’un des problèmes les plus sérieux. Dans la pratique, la matrice utilisateur-
item est extrêmement creuse : la plupart des utilisateurs n’ont interagi qu’avec une
infime partie du catalogue.
Dans notre projet :
interactions non-nulles 397 924
Sparsité = 1 − =1− ≈ 99.97% (1.10)
nombre total de cellules 4 339 × 3 665

Cela signifie que 99.97% des entrées de notre matrice valent 0 ! Ce problème a
directement contribué à l’échec de notre modèle AutoEncoder (Precision@5 de 2.71%).
Solutions :
— Réduction de dimensionnalité (SVD, PCA)
— Régularisation des modèles
— Techniques de complétion de matrices

1.2.3 Sérendipité
La sérendipité désigne la capacité d’un système à proposer des recommandations sur-
prenantes mais pertinentes. Un système trop précis peut tomber dans le piège de
la surspécialisation : il recommande toujours les mêmes types d’items, sans explorer de
nouvelles catégories.

— Problème : L’utilisateur ne découvre jamais rien de nouveau


— Solution : Introduire une part d’aléatoire ou de diversité dans les recommandations
— Mesure : Métriques de diversité et de couverture du catalogue

1.2.4 Problème du Mouton Gris (Gray Sheep)


Certains utilisateurs ont des goûts très atypiques qui ne correspondent à aucun groupe
d’utilisateurs. Ces utilisateurs, appelés moutons gris, reçoivent des recommandations mé-
diocres car le système ne trouve pas de profil similaire dans la base.

— Caractéristique : Aime des items qui n’ont aucun lien entre eux
— Impact : Mauvaises recommandations pour ces utilisateurs
— Solution : Filtrage basé sur le contenu comme fallback

1.2.5 Montée en Charge (Scalability)


La scalabilité est un défi opérationnel majeur. Les algorithmes de filtrage collaboratif
ont souvent une complexité quadratique :

Complexité KNN = O(|U |2 · |I|) (1.11)

Pour des plateformes comme Amazon (300 millions de clients, 350 millions de produits),
cela devient prohibitif.
Solutions :

8
Système de Recommandation de Produits 2025/2026

— Indexation approximative (LSH, FAISS)


— Calculs offline + cache des résultats
— Modèles paramétriques (réseaux de neurones) au lieu de KNN
— Sharding et calcul distribué

1.3 Market Basket Analysis et Règles d’Association


La Market Basket Analysis (MBA), ou analyse des paniers d’achat, est une technique
de fouille de données qui identifie les co-occurrences de produits dans les transac-
tions. Elle est complémentaire aux approches de filtrage collaboratif car elle capture des
associations globales entre produits, indépendamment des profils utilisateurs individuels.

1.3.1 Définition Formelle


Soit D = {T1 , T2 , . . . , TN } un ensemble de transactions et I l’ensemble de tous les items.
Une règle d’association s’écrit :

A ⇒ B, A, B ⊆ I, A∩B =∅ (1.12)

Elle est caractérisée par trois métriques :

|{T ∈ D : A ∪ B ⊆ T }|
support(A ⇒ B) = (1.13)
|D|

support(A ∪ B)
confiance(A ⇒ B) = (1.14)
support(A)

confiance(A ⇒ B)
lift(A ⇒ B) = (1.15)
support(B)

Une règle avec lift > 1 indique une association positive entre A et B (leur co-occurrence
est plus fréquente que le hasard).

1.3.2 Algorithme Apriori


L’algorithme Apriori agrawal1994 exploite la propriété anti-monotone :

support(A) < θmin ⇒ ∀B ⊇ A : support(B) < θmin (1.16)

Cette propriété permet d’élaguer l’espace de recherche de façon exponentielle, rendant le


problème tractable.

9
Système de Recommandation de Produits 2025/2026

1.3.3 Position dans notre Système


Par rapport aux méthodes de deep learning, la MBA offre deux avantages complémen-
taires :

— Interprétabilité : les règles sont lisibles par des équipes métier sans compétences
en IA.
— Pertinence cold-start : pour un utilisateur sans historique qui place un article
dans son panier, une règle Apriori peut immédiatement suggérer des compléments.

1.4 Systèmes de Recommandation par Deep Lear-


ning
Depuis 2016, le deep learning a profondément transformé les systèmes de recommandation,
offrant des performances supérieures aux méthodes traditionnelles.

1.4.1 AutoEncoders pour la Recommandation


Les AutoEncoders ont été proposés par Sedhain et al. (2015) dans AutoRec pour ap-
prendre des représentations compressées des utilisateurs ou des items.

h(r) = f (W · g(V · r + µ) + b) (1.17)

où r est le vecteur de notation, g et f sont des fonctions d’activation.


Avantage : Capture les corrélations non-linéaires entre items.
Limite : Sensible à la sparsité des données binaires.

1.4.2 Neural Collaborative Filtering (NCF)


He et al. (2017) ont proposé NCF, qui remplace le produit scalaire du filtrage collaboratif
par un MLP (Multi-Layer Perceptron) :

ŷui = fM LP (pu ⊕ qi ) (1.18)

où pu et qi sont les embeddings de l’utilisateur et de l’item, et ⊕ est la concaténation.

1.4.3 LSTM pour les Séquences


Les modèles LSTM (Hochreiter & Schmidhuber, 1997) capturent les dépendances tem-
porelles dans les séquences d’achats. Hidasi et al. (2016) dans GRU4Rec ont montré que
les RNN surpassent les méthodes traditionnelles pour la recommandation séquentielle.

P (itemt+1 |item1 , . . . , itemt ) = softmax(Wo · ht ) (1.19)

10
Système de Recommandation de Produits 2025/2026

1.5 Conclusion
Cet état de l’art nous a permis de situer notre travail dans le paysage des systèmes de
recommandation. Notre approche multicouche combine :

— La Market Basket Analysis (Apriori) : pour des règles interprétables et le


support cold-start
— Les préférences générales (AutoEncoder)
— Les interactions spécifiques utilisateur-item (NCF)
— Les patterns temporels d’achat (LSTM)

Le chapitre suivant détaille le dataset utilisé, le workflow global du système, et les étapes
de prétraitement réalisées.

11
Système de Recommandation de Produits 2025/2026

2. Données et Prétraitement

2.1 Workflow Global du Système


Avant de détailler le dataset et son prétraitement, nous présentons le workflow global du
système de recommandation. Ce pipeline complet, de la donnée brute à la recommandation
finale, comprend sept étapes séquentielles.

12
Système de Recommandation de Produits 2025/2026

Figure 2.1 – Workflow global du système de recommandation du dataset brut aux


recommandations finales

Le workflow ci-dessus présente les sept étapes du pipeline complet, de la donnée brute
à la recommandation finale :

13
Système de Recommandation de Produits 2025/2026

Étape Module Description

1 Données brutes Chargement du dataset UCI Online Retail


(540 710 lignes)
2 Prétraitement Nettoyage, suppression NaN / annulations
/ quantités ≤ 0
3 3 représentations Matrice client-article (AE/NCF), sé-
quences (LSTM), paniers (Apriori)
4 Entraînement AE sur train (70%), NCF+LSTM sur
train+val (80%)
5 Apriori Extraction de 32 règles d’association (lift
> 1.5, conf > 0.5)
6 Inférence Ensemble Fusion normalisée : AE×10% +
NCF×35% + LSTM×55%
7 Déploiement API REST FastAPI + Interface Streamlit
(en ligne)

Table 2.1 – Description des étapes du workflow global

2.2 Présentation du Dataset


2.2.1 UCI Online Retail Dataset
Le dataset utilisé dans ce projet est le UCI Online Retail Dataset, disponible pu-
bliquement sur le dépôt UCI Machine Learning Repository. Il contient l’ensemble des
transactions effectuées entre décembre 2010 et décembre 2011 pour un détaillant en
ligne britannique spécialisé dans les cadeaux et articles de décoration.

Attribut Type Description

InvoiceNo String Numéro de commande (commence par ’C’ si annulation)


StockCode String Identifiant unique du produit
Description String Nom du produit
Quantity Integer Quantité achetée (négative si retour)
InvoiceDate DateTime Date et heure de la commande
UnitPrice Float Prix unitaire en livres sterling
CustomerID Integer Identifiant unique du client
Country String Pays du client

Table 2.2 – Structure du dataset UCI Online Retail

14
Système de Recommandation de Produits 2025/2026

2.2.2 Importance de chaque colonne pour le système


Chaque colonne joue un rôle précis dans notre pipeline de recommandation :

— CustomerID : Colonne centrale du système. Elle permet de regrouper tous les


achats d’un même client pour construire son profil d’achat. Sans elle, aucune per-
sonnalisation n’est possible.
— StockCode : Identifiant unique de chaque produit. Utilisé pour construire les in-
dices d’articles dans les modèles (item2idx).
— InvoiceDate : Date critique pour le LSTM. Elle permet de reconstituer l’ordre
chronologique des achats et de capturer les patterns temporels (ex. : achat de déco-
rations de Noël chaque décembre).
— InvoiceNo : Utilisé pour grouper les produits d’un même panier. Essentiel pour
l’algorithme Apriori (analyse de co-achats par facture).
— Quantity : Filtre de qualité — les quantités négatives signalent des retours ou des
annulations.
— Description : Affichée dans les recommandations finales pour l’utilisateur.

Statistiques brutes :

Métrique Valeur

Nombre total de transactions 540 710


Clients uniques 4 339
Produits uniques 3 665
Pays couverts 38
Factures uniques 22 190
Période Déc. 2010 – Déc. 2011

Table 2.3 – Statistiques brutes du dataset

2.3 Prétraitement et Nettoyage


2.3.1 Étapes de Nettoyage
Le nettoyage des données est une phase critique qui conditionne la qualité de tous les
modèles en aval. Les étapes réalisées sont les suivantes :

Étape 1 : Suppression des valeurs manquantes

Listing 2.1 – Suppression des CustomerID manquants


1 df = [Link](subset=[’CustomerID’])
2 df[’CustomerID’] = df[’CustomerID’].astype(int).astype(str)

Les lignes sans CustomerID représentent des transactions anonymes pour lesquelles au-
cune personnalisation n’est possible.

15
Système de Recommandation de Produits 2025/2026

Étape 2 : Suppression des commandes annulées

Listing 2.2 – Suppression des annulations


1 # Les factures annulees commencent par ’C’ (ex: C536379)
2 df = df[~df[’InvoiceNo’].astype(str).[Link](’C’)]
3 # Supprimer les quantites nulles ou negatives
4 df = df[df[’Quantity’] > 0]

Étape 3 : Conversion des types

Listing 2.3 – Conversion des types de colonnes


1 df[’InvoiceDate’] = pd.to_datetime(df[’InvoiceDate’])
2 df[’Description’] = df[’Description’].fillna(df[’StockCode’].astype(str))

Étape Lignes Rétention

Dataset brut 540 710 100.0%


Après suppression CustomerID NaN 405 896 75.1%
Après suppression annulations (C) 397 016 73.4%
Après suppression quantités ≤ 0 397 016 73.4%

Dataset final 397 016 73.4%

Table 2.4 – Résultats du nettoyage du dataset

Résultats du nettoyage

2.4 Représentations des Données


Trois représentations complémentaires ont été créées à partir du dataset nettoyé pour
alimenter les différents modèles.

2.4.1 Matrice Client-Produit (pour AutoEncoder et NCF)


Une matrice binaire X ∈ {0, 1}4339×3665 est construite :

1 si le client i a acheté le produit j au moins une fois
Xij = (2.1)
0 sinon

Caractéristiques critiques :

interactions non-nulles 397 016


Sparsité = 1 − =1− ≈ 99.97% (2.2)
nombre total de cellules 4 339 × 3 665

16
Système de Recommandation de Produits 2025/2026

Cela signifie que 99.97% des entrées valent 0. Cette sparsité extrême est l’un des
principaux défis du projet et explique les difficultés rencontrées par l’AutoEncoder.

2.4.2 Paniers par Facture (pour Apriori)


Pour l’algorithme Apriori d’analyse des paniers, une matrice booléenne est construite à
l’échelle de la facture (et non du client) :

True si la facture k contient le produit j
Bkj =  (2.3)
False sinon

Dimensions : 22 190 factures × 3 665 produits.


Cette représentation permet de découvrir les règles du type "les clients qui achètent A et
B achètent aussi C", indépendamment de l’identité du client.

2.4.3 Séquences Temporelles (pour LSTM)


Pour chaque client, une séquence ordonnée chronologiquement par date de facture :

t t t
Su = [p1 −
→1
p2 −
→2
··· −
→n
pn ] (2.4)

Les articles consécutifs identiques sont dédupliqués pour éviter la redondance. Seuls les
clients ayant au moins 2 articles distincts sont conservés.
Statistiques :
— Clients avec séquences valides (≥ 2 articles) : 4 246
— Longueur de fenêtre LSTM : 10 produits (configurable)

2.5 Mappings d’Indices


Les modèles (NCF, LSTM) travaillent avec des indices entiers. Des mappings bidirection-
nels sont construits :

Listing 2.4 – Construction des mappings


1 user2idx = {customer_id: index for index, customer_id in enumerate(users)}
2 item2idx = {stock_code: index for index, stock_code in enumerate(items)}
3 idx2item = {v: k for k, v in [Link]()}
4 desc_map = df.drop_duplicates(’StockCode’).set_index(’StockCode’)[’Description’].
to_dict()

Ces mappings sont sauvegardés dans saved_models/[Link] et chargés par tous


les modules (entraînement, inférence, API).

17
Système de Recommandation de Produits 2025/2026

2.6 Découpage Train / Validation / Test


Les 4 339 clients sont répartis aléatoirement (graine fixe = 42 pour reproductibilité) :

Ensemble Clients % Utilisé pour

Entraînement 3 037 70% AE, NCF, LSTM (entraînement)


Validation 433 10% AE (early stopping), NCF+LSTM (train aussi)
Test 869 20% Évaluation finale uniquement

Total 4 339 100%

Table 2.5 – Répartition train / validation / test (70/10/20)

Figure 2.2 – Répartition Train / Validation / Test — 4 339 clients (70% / 10% / 20%)

Note importante : NCF et LSTM sont entraînés sur train + validation (80%)
afin de maximiser le nombre d’embeddings entraînés, tout en gardant les 20% de test
complètement isolés. Ceci porte le nombre d’utilisateurs de test à 869 (contre 434 avec
un découpage 80/10/10).

2.7 Conclusion
Le prétraitement a produit un dataset propre de 397 016 transactions. Les trois repré-
sentations créées (matrice client-article, paniers Apriori, séquences LSTM) alimentent
respectivement les modèles décrits aux chapitres suivants. La sparsité de 99.97% de la
matrice client-article constitue le défi principal du projet. </content> </invoke>

18
Système de Recommandation de Produits 2025/2026

3. Choix Algorithmiques et Implémen-


tation

3.1 Justification de l’Approche Ensemble


Plutôt que de s’appuyer sur un seul modèle, nous avons opté pour une approche en-
semble combinant trois modèles de deep learning complémentaires. Ce choix est motivé
par :

— Diversité des perspectives : chaque modèle capture une dimension différente du


comportement utilisateur.
— Robustesse : si un modèle échoue, les deux autres compensent.
— Complémentarité :
— AutoEncoder : "Quels types de produits aime ce client en général ?"
— NCF : "Cet utilisateur est-il compatible avec ce produit spécifique ?"
— LSTM : "Vu ses achats récents, que va-t-il acheter ensuite ?"

Le tableau suivant synthétise les forces et faiblesses de chaque approche :

Modèle Force Faiblesse

AutoEncoder Préférences générales Sparsité


NCF Interactions spécifiques Cold-start
LSTM Patterns temporels Requiert séquences longues

Table 3.1 – Complémentarité des trois modèles

3.2 Modèle 1 : AutoEncoder Débruiteur


3.2.1 Principe
L’AutoEncoder compresse le vecteur d’achats d’un utilisateur en une représentation la-
tente, puis le reconstruit. Les articles avec un score de reconstruction élevé sont considérés
comme des recommandations pertinentes.

3.2.2 Architecture Améliorée


L’architecture a été améliorée par rapport à la version initiale : le goulot d’étranglement est
passé de 128 à 256 dimensions pour mieux capturer les co-achats parmi 3 665 produits :

19
Système de Recommandation de Produits 2025/2026

Enc Dec
3665 −−→ 512 → 256 → 256
|{z} −−→ 256 → 512 → 3665 (3.1)
goulot (amélioré)

Listing 3.1 – Architecture AutoEncoder améliorée


1 inputs = Input(shape=(n_items,))
2 # Bruit gaussien reduit : 0.15 (etait 0.3)
3 noisy = GaussianNoise(0.15)(inputs)
4 # Encodeur
5 x = Dense(512, activation=’relu’, kernel_regularizer=l2(1e-5))(noisy)
6 x = BatchNormalization()(x)
7 x = Dropout(0.1)(x)
8 x = Dense(256, activation=’relu’, kernel_regularizer=l2(1e-5))(x)
9 x = BatchNormalization()(x)
10 x = Dropout(0.1)(x)
11 # Goulot : 256 dimensions (anciennement 128)
12 encoded = Dense(256, activation=’relu’)(x)
13 # Decodeur symetrique
14 ...
15 decoded = Dense(n_items, activation=’sigmoid’)(x)

3.2.3 Fonction de Perte Pondérée


La sparsité de 99.97% crée un déséquilibre sévère entre les 0 et les 1. Une perte BCE
pondérée est utilisée :

1 XN
L=− [w · yi log(ŷi ) + (1 − yi ) log(1 − ŷi )] (3.2)
N i=1

où w = 15 (réduit de 40 à 15) est le poids des interactions positives. La valeur initiale de


40 causait une surprédiction généralisée des achats ; 15 offre un meilleur équilibre.

3.2.4 Améliorations Apportées

Paramètre Avant Après Raison

pos_weight 40 15 Réduit les faux positifs


Bruit gaussien 0.30 0.15 Moins de corruption sur vecteurs creux
Goulot 128D 256D Plus de capacité de compression
Époques max 80 100 Plus de temps de convergence
Patience 10 15 Early stopping moins agressif

Table 3.2 – Améliorations apportées à l’AutoEncoder

20
Système de Recommandation de Produits 2025/2026

3.2.5 Résultats AutoEncoder

Métrique @5 @10
Precision 3.06% 2.39%
Recall 0.49% 0.60%
NDCG 0.0349 0.0295

Table 3.3 – Résultats finaux AutoEncoder (869 utilisateurs de test)

Figure 3.1 – Courbe de perte AutoEncoder – entraînement vs validation

3.3 Modèle 2 : NCF (Neural Collaborative Filtering)


3.3.1 Architecture NeuMF
Le modèle NeuMF (Neural Matrix Factorization) combine deux chemins complémen-
taires :
Chemin GMF (Generalized Matrix Factorization) – interactions linéaires :

GMF(u, i) = p⃗GM
u
F
⊙ ⃗qiGM F (3.3)

Chemin MLP – interactions non-linéaires :


   
MLP(u, i) = f WL · · · f W1 · [⃗pM
u
LP
⊕ ⃗qiM LP ] + b1 · · · + bL (3.4)

Fusion finale :
ŷui = σ (Wout · [GMF(u, i) ⊕ MLP(u, i)]) (3.5)

21
Système de Recommandation de Produits 2025/2026

Listing 3.2 – Architecture NCF NeuMF améliorée


1 # Chemin GMF
2 user_gmf = Embedding(n_users, 128, name=’user_gmf’)(user_input)
3 item_gmf = Embedding(n_items, 128, name=’item_gmf’)(item_input)
4 gmf_out = Multiply()([Flatten()(user_gmf), Flatten()(item_gmf)])
5
6 # Chemin MLP elargi avec BatchNorm
7 user_mlp = Embedding(n_users, 128, name=’user_mlp’)(user_input)
8 item_mlp = Embedding(n_items, 128, name=’item_mlp’)(item_input)
9 x = Concatenate()([Flatten()(user_mlp), Flatten()(item_mlp)])
10 x = Dense(512, activation=’relu’)(x) # couche supplementaire
11 x = BatchNormalization()(x) # ajout stabilisant
12 x = Dropout(0.3)(x)
13 x = Dense(256, activation=’relu’)(x)
14 x = BatchNormalization()(x)
15 x = Dropout(0.3)(x)
16 x = Dense(128, activation=’relu’)(x)
17 x = Dropout(0.2)(x)
18 mlp_out = Dense(64, activation=’relu’)(x)
19
20 # Fusion
21 output = Dense(1, activation=’sigmoid’)(
22 Concatenate()([gmf_out, mlp_out]))

3.3.2 Échantillonnage Négatif Pondéré par Popularité


Un apport majeur de notre implémentation est l’utilisation d’un échantillonnage né-
gatif pondéré par la popularité des articles (hard negative sampling) :

P (itemj est négatif) ∝ popularité(j) + ϵ (3.6)

Les articles populaires sont plus susceptibles d’être choisis comme négatifs, forçant le
modèle à distinguer les vraies préférences des articles simplement fréquents.

Listing 3.3 – Calcul des poids de popularite


1 item_pop = customer_item_matrix.sum(axis=0) # popularite par item
2 item_pop += 1.0 # lissage de Laplace
3 item_pop /= item_pop.sum() # normalisation en probabilite
4
5 neg_samples = [Link](
6 unpurchased_arr,
7 size=n_neg,
8 replace=False,
9 p=item_pop[unpurchased_arr] / item_pop[unpurchased_arr].sum()
10 )

3.3.3 Amélioration Cold-Start : User-from-Items Inference


Problème : Les 869 utilisateurs de test n’ont jamais été vus pendant l’entraînement
NCF. Leurs embeddings sont initialisés aléatoirement, produisant des recommandations
sans sens (3.84% de précision).

22
Système de Recommandation de Produits 2025/2026

Solution : User-from-Items Inference. On calcule l’embedding utilisateur comme le


centroïde des embeddings des articles achetés :

1 X GM F 1 X M LP
p⃗inf
u
er
= ⃗q ; p⃗M LP,inf er
= ⃗q (3.7)
|Iu | j∈Iu j u
|Iu | j∈Iu j

où Iu est l’ensemble des articles achetés par l’utilisateur u.

Listing 3.4 – Inférence des embeddings cold-start


1 gmf_item_w = ncf_model.get_layer(’item_gmf’).[Link]()
2 mlp_item_w = ncf_model.get_layer(’item_mlp’).[Link]()
3
4 for uid in cold_start_users:
5 purchased_idx = [item2idx[it] for it in user_history[uid]]
6 # Centroide des embeddings d’articles
7 gmf_user_w[user2idx[uid]] = [Link](gmf_item_w[purchased_idx], axis=0)
8 mlp_user_w[user2idx[uid]] = [Link](mlp_item_w[purchased_idx], axis=0)
9
10 # Mise a jour du modele
11 ncf_model.get_layer(’user_gmf’).[Link](gmf_user_w)
12 ncf_model.get_layer(’user_mlp’).[Link](mlp_user_w)

3.3.4 Améliorations NCF

Paramètre Avant Après Impact

neg_ratio 2 5 Meilleure calibration du ranking


Époques max 25 50 Plus de temps d’apprentissage
Patience 5 8 Moins d’arrêts prématurés
Couches MLP 3 4 Plus de capacité non-linéaire
BatchNorm Non Oui Stabilisation de l’entraînement
Cold-start Aléatoire Inféré +129% précision

Table 3.4 – Améliorations apportées au NCF

3.3.5 Résultats NCF

Métrique @5 @10
Precision 8.81% 6.43%
Recall 1.21% 1.70%
NDCG 0.1008 0.0812

Table 3.5 – Résultats finaux NCF avec User-from-Items Inference (869 utilisateurs de
test)

23
Système de Recommandation de Produits 2025/2026

Figure 3.2 – Courbe de perte NCF – entraînement vs validation

3.4 Modèle 3 : LSTM Séquentiel


3.4.1 Principe
Le LSTM (Long Short-Term Memory) modélise les achats comme une séquence tem-
porelle. Il prédit la distribution de probabilité sur le prochain article à acheter, étant
donné les 10 derniers achats.

3.4.2 Architecture

Emb(64) LSTM(256) LSTM(128) Dense(128) softmax


[P1 , P2 , . . . , P10 ] −−−−−→−−−−−−→−−−−−−→ h −−−−−−→−−−−→ P̂11 (3.8)

Les équations des portes LSTM :

ft = σ(Wf [ht−1 , xt ] + bf ) (porte d’oubli) (3.9)


it = σ(Wi [ht−1 , xt ] + bi ) (porte d’entrée) (3.10)
Ct = ft ⊙ Ct−1 + it ⊙ tanh(WC [ht−1 , xt ] + bC ) (état de cellule) (3.11)
ot = σ(Wo [ht−1 , xt ] + bo ) (porte de sortie) (3.12)
ht = ot ⊙ tanh(Ct ) (état caché) (3.13)

Listing 3.5 – Architecture LSTM améliorée


1 inputs = Input(shape=(seq_len,))
2 x = Embedding(n_items + 1, 64, mask_zero=True)(inputs)
3 # LSTM units augmente de 128 a 256
4 x = LSTM(256, return_sequences=True)(x)
5 x = Dropout(0.3)(x)
6 x = LSTM(128, return_sequences=False)(x)

24
Système de Recommandation de Produits 2025/2026

7 x = Dropout(0.3)(x)
8 x = Dense(128, activation=’relu’)(x)
9 x = Dropout(0.2)(x)
10 output = Dense(n_items, activation=’softmax’)(x)

3.4.3 Préparation des Séquences


Une fenêtre glissante génère des paires (contexte, cible) :

([P1 , . . . , Pt−1 ], |{z}


Pt ) ∀t ∈ [2, |Su |] (3.14)
| {z }
contexte cible

Les séquences plus courtes que 10 éléments sont paddées à gauche avec des 0 (masqués
par mask_zero=True).

3.4.4 Résultats LSTM

Métrique @5 @10
Precision 29.57% 24.48%
Recall 5.95% 9.45%
NDCG 0.3171 0.2848

Table 3.6 – Résultats finaux LSTM – Meilleur modèle (869 utilisateurs de test)

Figure 3.3 – Courbe de perte LSTM – entraînement vs validation

25
Système de Recommandation de Produits 2025/2026

3.5 Fusion Ensemble et Normalisation


3.5.1 Problème de Compatibilité des Scores
Les trois modèles produisent des scores dans des plages très différentes :

Modèle Min typique Max typique


AutoEncoder 0.01 0.15
NCF 0.30 0.60
LSTM 0.80 0.99

Table 3.7 – Plages de scores bruts avant normalisation

Une fusion directe par moyenne simple serait dominée par le LSTM, ignorant les contri-
butions de l’AE et du NCF.

3.5.2 Normalisation Min-Max


Chaque ensemble de scores est normalisé dans [0, 1] avant fusion :

Smodel (i) − Smin


norm
Smodel (i) = (3.15)
Smax − Smin + ϵ

3.5.3 Fusion Pondérée


La fusion est une moyenne pondérée des scores normalisés, avec des poids reflétant la
qualité relative de chaque modèle :

norm
wAE · SAE (i) + wN CF · SN CF (i) + wLST M · SLST M (i)
norm norm
Sensemble (i) = (3.16)
wAE + wN CF + wLST M

avec wAE = 0.10, wN CF = 0.35, wLST M = 0.55.

3.5.4 Justification des Poids de l’Ensemble


Les poids wAE = 0.10, wN CF = 0.35, wLST M = 0.55 ont été déterminés par recherche
empirique sur l’ensemble de validation, selon le protocole suivant :

1. Évaluer chaque modèle individuellement sur les utilisateurs de validation.


2. Initialiser les poids proportionnellement à la Précision@5 de chaque modèle.
3. Affiner par recherche en grille (grid search) sur les poids normalisés.
4. Sélectionner la combinaison maximisant la Précision@5 sur les utilisateurs de vali-
dation.

Le LSTM obtient le poids dominant (0.55) car il est le meilleur modèle individuel. Le
NCF reçoit 0.35 pour sa complémentarité sur les interactions statiques. L’AE ne reçoit
que 0.10 en raison de ses performances limitées par la sparsité.

26
Système de Recommandation de Produits 2025/2026

Limites de cette approche : les poids sont optimisés sur la validation, ce qui peut
introduire un léger sur-apprentissage des poids. Une alternative plus robuste serait un
méta-apprentissage (stacking) sur un ensemble tiers.

3.5.5 Pourquoi l’Ensemble est Légèrement Inférieur au LSTM


Seul ?
C’est un résultat apparemment paradoxal qui s’explique mathématiquement :

Sensemble (i) = 0.10 · SAE


norm
(i) + 0.35 · SN CF (i) + 0.55 · SLST M (i)
norm norm
(3.17)

— Le LSTM seul recommande avec 29.57% de précision.


— L’AE (3.06%) et le NCF (8.81%) introduisent un bruit résiduel : leurs 10% et 35%
de poids diluent parfois le signal du LSTM.
— Cet effet de dilution est amplifié par les utilisateurs de test "cold-start" pour qui le
NCF reste sous-performant.

L’ensemble reste utile car il améliore le Recall@10 et le NDCG@10 grâce à la diver-


sification des recommandations. Il est aussi plus robuste : si le LSTM échoue pour un
utilisateur particulier, l’AE et le NCF compensent partiellement.

3.5.6 Résultats Ensemble

Métrique @5 @10
Precision 29.25% 22.51%
Recall 5.69% 8.43%
NDCG 0.3168 0.2702

Table 3.8 – Résultats finaux Ensemble normalisé (869 utilisateurs de test)

Figure 3.4 – Comparaison des performances des quatre modèles (Précision, Rappel,
NDCG à K=10)

27
Système de Recommandation de Produits 2025/2026

3.6 Discussion : Réponses aux Questions de Recherche


3.6.1 Pourquoi utiliser un AutoEncoder malgré ses 3.06% de
précision ?
L’AE seul est limité par la sparsité de 99,97%. Cependant, son utilité dans l’ensemble
est double : (1) il capte des préférences générales de goût que le LSTM (focalisé sur
les séquences récentes) peut manquer ; (2) il fournit un signal pour les utilisateurs
avec peu d’achats récents mais un historique global riche. Sa contribution de 10%
dans l’ensemble est marginale mais non nulle.

3.6.2 Pourquoi le deep learning plutôt qu’ALS, SVD ou Item-


Based CF ?

Méthode Force Limite sur notre data-


set

ALS / SVD Rapide, efficace sur ma- Sparsité 99,97% – dégé-


trices denses nère
Item-Based CF Interprétable, pas de O(|I|2 ) – 3 6652 ≈ 13M
cold-start user paires
NCF (deep) Interactions non- Nécessite des données
linéaires complexes d’entraînement
LSTM (deep) Capture la dynamique Aucune méthode clas-
temporelle sique équivalente

Table 3.9 – Comparaison deep learning vs méthodes classiques pour notre dataset

La nature séquentielle et temporelle des données de commerce (les clients achètent


dans un ordre significatif) justifie intrinsèquement le LSTM, pour lequel il n’existe aucun
équivalent classique.

3.6.3 Que faire pour un utilisateur totalement nouveau ?


Notre système implémente une stratégie de fallback graduée :

1. Aucun historique : recommander les 10 articles les plus populaires (popular_fallback).


2. 1-2 articles dans le panier : utiliser Apriori pour des suggestions basées sur les
règles d’association, complétées par les populaires.
3. 3+ articles : activer l’ensemble complet (AE + NCF avec User-from-Items Infe-
rence + LSTM).

3.6.4 Comment savoir que l’amélioration du NCF n’est pas due


au hasard ?
La technique User-from-Items Inference est validée par :

28
Système de Recommandation de Produits 2025/2026

— Un gain de +129% (de 3.84% à 8.81%) sur 869 utilisateurs de test : une variation
de cette amplitude sur un échantillon large est statistiquement significative.
— Le résultat est reproductible : la graine aléatoire est fixée (SEED=42), garantis-
sant que le découpage train/test est identique à chaque exécution.
— L’inférence a une justification théorique : le centroïde des embeddings d’articles
achetés représente naturellement le "goût moyen" de l’utilisateur dans l’espace latent.

3.7 Conclusion

Modèle Prec@5 Rec@5 NDCG@5 Statut


AutoEncoder 3.06% 0.49% 0.0349 Limité (sparsité)
NCF 8.81% 1.21% 0.1008 Amélioré (+129%)
LSTM 29.57% 5.95% 0.3171 Meilleur modèle
Ensemble 29.25% 5.69% 0.3168 Robuste

Table 3.10 – Comparaison finale des modèles sur 869 utilisateurs de test

29
Système de Recommandation de Produits 2025/2026

4. Analyse des Paniers d’Achat (Mar-


ket Basket Analysis)

4.1 Introduction à la Market Basket Analysis


La Market Basket Analysis (MBA), ou analyse des paniers d’achat, est une technique
de fouille de données qui identifie les associations entre produits dans les transactions
commerciales. Elle repose sur le principe suivant :

"Si un client achète le produit A, quelle est la probabilité qu’il achète également
le produit B ?"

Dans notre projet, la MBA complète les modèles de deep learning en fournissant des
règles d’association interprétables — des règles du type "les clients qui achètent A et
B achètent aussi C avec une probabilité de 72%". Ces règles sont directement utilisables
par des systèmes métier et enrichissent les recommandations de l’ensemble.

4.1.1 Applications Concrètes


La MBA est utilisée dans de nombreux contextes réels :

— Amazon : "Fréquemment achetés ensemble" (cross-selling)


— Grande distribution : Placement stratégique des rayons (ex. : couches à côté des
bières — la célèbre règle "couches-bières" découverte par Walmart en 1992)
— Promotions groupées : Offrir des remises sur des ensembles de produits fréquem-
ment co-achetés
— Gestion des stocks : Anticiper la demande d’un produit B quand A est en rupture

4.2 Métriques Fondamentales


4.2.1 Support
Le support mesure la fréquence d’apparition d’un ensemble d’articles dans l’ensemble
des transactions :

|{T ∈ D : A ⊆ T }|
support(A) = (4.1)
|D|

Pour une règle A ⇒ B :


|{T ∈ D : A ∪ B ⊆ T }|
support(A ⇒ B) = (4.2)
|D|

30
Système de Recommandation de Produits 2025/2026

Interprétation : Un support de 0.05 signifie que 5% de toutes les transactions contiennent


à la fois A et B.
Notre seuil : supportmin = 0.01 (1% des 22 190 factures ≈ 222 factures).

4.2.2 Confiance
La confiance mesure la probabilité conditionnelle d’acheter B sachant que A est déjà
acheté :

support(A ∪ B)
confiance(A ⇒ B) = = P (B|A) (4.3)
support(A)

Interprétation : Une confiance de 0.72 signifie que 72% des clients qui achètent A
achètent aussi B.
Notre seuil : confiancemin = 0.50 (au moins 50% de probabilité conditionnelle).

4.2.3 Lift
Le lift mesure à quel point la règle est plus informative que le hasard :

confiance(A ⇒ B) P (A ∪ B)
lift(A ⇒ B) = = (4.4)
support(B) P (A) · P (B)

Interprétation :
— lift = 1 : A et B sont indépendants (la règle n’est pas utile)
— lift > 1 : A favorise l’achat de B (règle positive, intéressante)
— lift < 1 : A diminue la probabilité d’achat de B (règle négative)
Notre seuil : liftmin = 1.5 (la règle est au moins 1.5× plus probable que le hasard).

4.3 Algorithme Apriori


4.3.1 Principe Général
L’algorithme Apriori (Agrawal & Srikant, 1994) est le plus célèbre algorithme de fouille
de règles d’association. Il repose sur une propriété fondamentale :

Propriété anti-monotone : Si un ensemble d’articles est infrequent, alors


tous ses sur-ensembles sont également infrequents.

Si support(A) < supportmin ⇒ support(A ∪ B) < supportmin , ∀B (4.5)

Cette propriété permet d’élaguer massivement l’espace de recherche.

31
Système de Recommandation de Produits 2025/2026

4.3.2 Fonctionnement pas à pas


1. Générer les itemsets de taille 1 : Compter la fréquence de chaque article indi-
viduel.
2. Filtrer : Ne conserver que les articles avec support ≥ supportmin .
3. Générer les itemsets de taille 2 : Toutes les paires d’articles fréquents.
4. Filtrer à nouveau, et ainsi de suite jusqu’à ce qu’aucun nouvel itemset ne soit
fréquent.
5. Extraire les règles : Pour chaque itemset fréquent {A, B}, générer les règles
A ⇒ B et B ⇒ A et filtrer par confiance et lift.

Exemple illustratif sur notre dataset :

Antécédent (A) Conséquent (B) Support Confiance Lift

SET 3 BUTTERFLY MA- PLASTERS IN TIN SKULL 0.021 0.82 4.21


GNETS
ALARM CLOCK BAKE- ALARM CLOCK BAKE- 0.018 0.76 3.87
LIKE RED LIKE GREEN
ROSES REGENCY TEA- PINK REGENCY TEACUP 0.023 0.71 3.54
CUP

Table 4.1 – Exemples de règles d’association extraites du dataset

4.3.3 Implémentation

Listing 4.1 – Implémentation Apriori avec mlxtend


1 from mlxtend.frequent_patterns import apriori, association_rules
2
3 # Etape 1 : Matrice boolenne de paniers
4 basket_matrix = df.pivot_table(
5 index=’InvoiceNo’, columns=’StockCode’,
6 values=’purchased’, fill_value=0
7 ).astype(bool)
8
9 # Etape 2 : Limitation aux 200 articles les plus frequents
10 # (Apriori est exponentiel -- limitation indispensable)
11 top_200 = basket_matrix.sum().nlargest(200).index
12 basket_subset = basket_matrix[top_200]
13
14 # Etape 3 : Itemsets frequents
15 frequent_itemsets = apriori(
16 basket_subset,
17 min_support=0.02, # support minimum
18 use_colnames=True
19 )
20
21 # Etape 4 : Regles d’association
22 rules = association_rules(
23 frequent_itemsets,
24 metric="confidence",

32
Système de Recommandation de Produits 2025/2026

25 min_threshold=0.30
26 )
27
28 # Etape 5 : Filtrage par lift et confiance
29 filtered = rules[
30 (rules[’lift’] > 1.5) &
31 (rules[’confidence’] > 0.50)
32 ].sort_values(’lift’, ascending=False)

4.3.4 Résultats sur notre Dataset

Métrique Valeur

Articles analysés (top 200) 200


Ensembles fréquents trouvés 242
Règles totales générées 79
Règles filtrées (lift>1.5, conf>0.5) 32
Lift moyen des règles retenues 3.12
Confiance moyenne 0.67

Table 4.2 – Résultats de l’analyse Apriori sur [Link]

Figure 4.1 – Heatmap des top règles d’association — Confiance et Lift

33
Système de Recommandation de Produits 2025/2026

4.4 Algorithme FP-Growth (alternative à Apriori)


4.4.1 Limites d’Apriori et Motivation
Apriori génère et teste un nombre exponentiellement croissant de candidats, ce qui devient
prohibitif sur de grands datasets. L’algorithme FP-Growth (Frequent Pattern Growth,
Han et al., 2000) résout ce problème sans générer de candidats.

4.4.2 FP-Tree
FP-Growth compresse la base de données en un FP-Tree (Frequent Pattern Tree) :

1. Passe 1 : Scanner la base pour calculer les fréquences individuelles. Filtrer les items
infrequents.
2. Passe 2 : Construire un arbre préfixe compressé où chaque chemin représente une
transaction.
3. Minage : Extraire les itemsets fréquents directement depuis l’arbre, sans générer
de candidats.

4.4.3 Comparaison Apriori vs FP-Growth

Critère Apriori FP-Growth

Génération de candidats Oui (exponentielle) Non


Nombre de passes BD Multiple 2 seulement
Utilisation mémoire Faible Élevée (arbre)
Vitesse sur petits datasets Comparable Comparable
Vitesse sur grands datasets Lente Rapide (10-100×)
Implémentation Simple Complexe

Table 4.3 – Comparaison Apriori vs FP-Growth

Choix retenu : Apriori — notre dataset (200 articles tops, 22 190 factures) reste dans
une plage où Apriori est tractable, et son implémentation est plus simple à maintenir.

4.5 Intégration dans le Système de Recommandation


4.5.1 Rôle des Règles dans le Pipeline
Les 32 règles d’association extraites sont sauvegardées dans saved_models/association_rules.csv
et servent à trois fins :

1. Complément des recommandations deep learning : Pour un utilisateur qui


vient d’ajouter le produit A à son panier, les règles permettent de suggérer instan-
tanément B sans avoir besoin du LSTM ou du NCF.

34
Système de Recommandation de Produits 2025/2026

2. Explications : Les règles sont interprétables (contrairement aux embeddings). Elles


permettent d’expliquer pourquoi un produit est recommandé : "78% des clients qui
achètent A achètent aussi B."
3. Cold-start complémentaire : Pour les nouveaux utilisateurs avec un seul article
dans le panier, Apriori peut suggérer des articles complémentaires avant même que
LSTM ou NCF n’aient suffisamment de contexte.

4.5.2 Architecture de la System de Recommandation avec MBA

Figure 4.2 – Architecture du système de recommandation intégrant Market Basket


Analysis

4.5.3 Format des Règles Sauvegardées

antecedents consequents support confidence lift

85123A 71053 0.021 0.82 4.21


22697 22699 0.018 0.76 3.87
... ... ... ... ...

Table 4.4 – Format du fichier association_rules.csv

4.6 Conclusion
L’analyse des paniers d’achat via l’algorithme Apriori a produit 32 règles d’association
significatives (lift>1.5, confiance>50%). Ces règles :
— Complètent les recommandations deep learning par des suggestions explicables
— Permettent un fallback pour les utilisateurs avec peu d’historique
— Sont directement exportables vers des systèmes métier (CSV)

35
Système de Recommandation de Produits 2025/2026

— Constituent une couche d’interprétabilité manquante aux modèles neuronaux


Le chapitre suivant présente les résultats globaux, le déploiement API REST et l’interface
web Streamlit.

36
Système de Recommandation de Produits 2025/2026

5. Résultats, Déploiement et Discus-


sion

5.1 Évaluation des Modèles


5.1.1 Métriques Utilisées
Precision@K
|items recommandés[: K] ∩ items pertinents|
Precision@K = (5.1)
K

Recall@K
|items recommandés[: K] ∩ items pertinents|
Recall@K = (5.2)
|items pertinents|

NDCG@K (Normalized Discounted Cumulative Gain)


K
1 DCG@K
DCG@K = NDCG@K = (5.3)
X
,
i=1 log2 (i + 1) IDCG@K

Le NDCG pénalise les bonnes recommandations placées en bas de liste : une recomman-
dation pertinente en position 1 a plus de valeur qu’en position 5.

5.1.2 Résultats Complets

Modèle P@5 P@10 R@5 R@10 NDCG@5 NDCG@10

AutoEncoder 3.06% 2.39% 0.49% 0.60% 0.0349 0.0295


NCF 8.81% 6.43% 1.21% 1.70% 0.1008 0.0812
LSTM 29.57% 24.48% 5.95% 9.45% 0.3171 0.2848
Ensemble 29.25% 22.51% 5.69% 8.43% 0.3168 0.2702

Table 5.1 – Résultats finaux sur 869 utilisateurs de test (split 70/10/20)

Observations :
— Le LSTM est le meilleur modèle individuel en Precision@5 et NDCG@5.

37
Système de Recommandation de Produits 2025/2026

— L’Ensemble surpasse le LSTM en Recall@10 et NDCG@10 — il est plus robuste


pour les listes longues.
— Le NCF, grâce à la technique User-from-Items Inference, a multiplié sa précision
par 2.3× (3.84% → 8.81%).
— L’AutoEncoder reste limité par la sparsité de 99.97% de la matrice.

5.1.3 Exemples de Recommandations Réelles


Les recommandations suivantes ont été générées par notre système Ensemble sur les don-
nées de test.

Client 15168 (articles vintage) Historique : [22947, 22579, 23393, 21890, 21891]

Rang Produit recommandé Score


1 VINTAGE SNAP CARDS 0.846
2 VINTAGE HEADS AND TAILS CARD GAME 0.844
3 TRADITIONAL WOODEN CATCH CUP GAME 0.758
4 4 TRADITIONAL SPINNING TOPS 0.727
5 RED HARMONICA IN BOX 0.725

Table 5.2 – Recommandations pour le client 15168 – cohérence thématique "jeux vintage"

Rang Produit recommandé Score


1 NATURAL SLATE HEART CHALKBOARD 0.906
2 WHITE HANGING HEART T-LIGHT HOLDER 0.892
3 VICTORIAN GLASS HANGING T-LIGHT 0.798
4 BAKING SET 9 PIECE RETROSPOT 0.675
5 REGENCY CAKESTAND 3 TIER 0.665

Table 5.3 – Recommandations pour le client 18150 – cohérence thématique "décoration"

Client 18150 (décoration intérieure) Les recommandations sont cohérentes théma-


tiquement, ce qui confirme que le système a bien appris les patterns d’achat.

5.2 Déploiement : API REST


5.2.1 Architecture FastAPI
L’API expose trois endpoints :

38
Système de Recommandation de Produits 2025/2026

Méthode Endpoint Description


GET /health Statut des modèles chargés
GET /popular Top 10 produits populaires (cold-start)
POST /recommend Recommandations personnalisées

Table 5.4 – Endpoints de l’API REST FastAPI

5.2.2 Exemple de Requête/Réponse

Listing 5.1 – Requête POST /recommend


1 POST /recommend
2 {
3 "user_id": "17850",
4 "purchased_items": ["85123A", "71053", "84406B"]
5 }
6
7 # Reponse :
8 {
9 "recommendations": [
10 {"product_id": "84879", "description": "ASSORTED COLOUR BIRD ORNAMENT",
11 "score": 0.489},
12 {"product_id": "22457", "description": "NATURAL SLATE HEART CHALKBOARD",
13 "score": 0.471},
14 ...
15 ],
16 "strategy": "ensemble_autoencoder_ncf_lstm"
17 }

5.2.3 Performances API


— Temps de réponse moyen : ≈ 150 ms
— Utilisateurs testés : 869
— Modèles chargés simultanément : AutoEncoder, NCF, LSTM
— Stratégie de démarrage à froid : articles populaires si historique absent

5.3 Interface Web Streamlit


Une interface web interactive a été développée avec Streamlit, offrant :

— Saisie d’un identifiant client et de ses achats


— Affichage des recommandations avec scores et barres de progression
— Visualisation des performances comparées (barres, tableau de métriques)
— Indicateurs de l’état du système (modèles chargés)
— Accessible à : [Link]

39
Système de Recommandation de Produits 2025/2026

5.4 Discussion et Analyse


5.4.1 Pourquoi LSTM Domine ?
Le LSTM capture les dépendances séquentielles temporelles : l’ordre des achats
contient une information prédictive forte. La formule de Bayes illustre ce principe :

P (prochain achat|historique) ≫ P (prochain achat) (5.4)

Concrètement : un client qui achète successivement des ballons, des cotillons et des bougies
d’anniversaire va probablement acheter du matériel de fête — information que le LSTM
capture naturellement.

5.4.2 Pourquoi AutoEncoder reste limité ?


La sparsité de 99.97% est la cause principale. L’AE apprend que la distribution optimale
est presque uniformément à 0, ce qui minimise la perte mais produit peu de recomman-
dations pertinentes.
Même avec wpos = 15, l’AE reconstruit imparfaitement les quelques 1 noyés dans des
milliers de 0.

5.4.3 Impact de la Technique User-from-Items Inference (NCF)

Configuration Precision@5 NDCG@5 Amélioration

NCF initial (embedding aléatoire) 17.20% 0.178 référence


NCF après cold-start (3.84%) 3.84% 0.034 – (split différent)
NCF + User-from-Items Inference 8.81% 0.101 +129%

Table 5.5 – Impact de la technique User-from-Items Inference sur NCF

5.4.4 Comparaison aux Baselines

Approche Precision@5 Amélioration vs aléatoire


Aléatoire ∼0.14% 1× (référence)
Articles populaires ∼1-2% ∼10×
AutoEncoder 3.06% ∼22×
NCF (amélioré) 8.81% ∼63×
LSTM 29.57% ∼211×
Ensemble 29.25% ∼209×

Table 5.6 – Comparaison aux baselines (869 utilisateurs de test)

40
Système de Recommandation de Produits 2025/2026

5.5 Déploiement en Production


5.5.1 API REST FastAPI
L’API est démarrée avec la commande :

Listing 5.2 – Lancement de l’API FastAPI


1 uvicorn api:app --host [Link] --port 8000

Elle expose trois endpoints : GET /health, GET /popular, POST /recommend.

5.5.2 Interface Streamlit


Une interface web interactive a été développée avec Streamlit et déployée sur Streamlit
Cloud. L’application est accessible publiquement à l’adresse :

[Link]

Listing 5.3 – Lancement de l’interface Streamlit en local


1 streamlit run streamlit_app.py

Figure 5.1 – Interface Streamlit déployée — Système de Recommandation de Produits


([Link]

L’interface offre les fonctionnalités suivantes :


— Saisie d’un identifiant client et de ses achats passés (codes StockCode)
— Génération des recommandations avec scores normalisés et barres de progression
— Stratégie affichée : l’interface indique si la recommandation provient de l’en-
semble, d’un modèle unique, ou des articles populaires (cold-start)

41
Système de Recommandation de Produits 2025/2026

— Tableau des métriques : Précision@K, Rappel@K, NDCG@K chargés dynami-


quement depuis evaluation_results.csv
— Graphique comparatif des quatre modèles (Précision, Rappel, NDCG à K=10)
— Statut système : indicateur unique confirmant que AE, NCF et LSTM sont tous
chargés
La version déployée sur Streamlit Cloud charge les modèles pré-entraînés depuis le dépôt
GitHub et permet à tout utilisateur de tester le système sans installation locale.

5.6 Limites du Projet


Malgré les résultats obtenus, notre système présente plusieurs limites importantes qu’il
convient d’identifier honnêtement :

5.6.1 Limites des Modèles


— AutoEncoder (3.06%) : La sparsité de 99.97% de la matrice client-article est la
limite principale. Même après optimisation (pos_weight, bottleneck élargi), l’AE
ne parvient pas à distinguer finement les préférences individuelles dans cet espace
quasi-vide.
— NCF — cold-start résiduel : La technique User-from-Items Inference a amélioré
le NCF de 129%, mais les utilisateurs avec très peu d’achats (< 3 articles) restent
difficiles à représenter avec précision.
— LSTM — fenêtre limitée : Le LSTM n’utilise que les 10 derniers articles comme
contexte. Pour les clients avec de longues séquences (certains ont plus de 100 achats),
une grande partie de l’historique est ignorée.
— Poids de l’ensemble — déterminés empiriquement : Les poids (AE×10%,
NCF×35%, LSTM×55%) ont été définis par recherche empirique sur la validation.
Une optimisation plus rigoureuse (apprentissage par descente de gradient des poids)
pourrait améliorer l’ensemble.

5.6.2 Limites de l’Évaluation


— Pas de test A/B en conditions réelles : Les métriques (Précision@K, Rappel@K,
NDCG@K) sont calculées offline sur des données historiques. L’impact réel sur le
comportement d’achat n’a pas été mesuré.
— Pas de signaux contextuels : Le prix, la saison, la géographie ou les promotions en
cours ne sont pas pris en compte. Ces signaux pourraient améliorer significativement
la pertinence des recommandations.
— Dataset mono-domaine : Le système est entraîné sur un seul détaillant. Sa gé-
néralisation à d’autres domaines (électronique, alimentation) n’a pas été évaluée.

5.7 Conclusion
Le système développé atteint 29.57% de Precision@5 avec le modèle LSTM, soit 211
fois mieux que la recommandation aléatoire. L’approche ensemble, combinée à la norma-
lisation min-max et aux améliorations techniques (User-from-Items Inference, bottleneck

42
Système de Recommandation de Produits 2025/2026

AE élargi, neg_ratio amélioré), produit des recommandations robustes et compétitives. Le


système est déployé en production via une API REST FastAPI et une interface Streamlit
interactive.

43
Système de Recommandation de Produits 2025/2026

Conclusion Générale

Ce projet nous a permis de concevoir, implémenter et déployer un système complet de


recommandation de produits basé sur une approche multicouche combinant Market
Basket Analysis et trois modèles de deep learning.

Bilan des Réalisations

Réalisation Valeur Détail

Pipeline de données complet 397 016 transactions nettoyées (73.4% de rétention)


Règles d’association Apriori 32 règles lift > 1.5, confiance > 50%
Modèles deep learning 3 modèles AutoEncoder, NCF, LSTM
Meilleure précision (LSTM) 29.57% Precision@5 sur 869 utilisateurs
Précision Ensemble 29.25% Robuste sur listes courtes et longues
Amélioration NCF cold-start +129% 3.84% → 8.81% via User-from-Items Inference
Utilisateurs évalués 869 (split 70/10/20, vs 434 initialement)
API REST FastAPI ∼150 ms temps de réponse moyen
Interface Streamlit Déployée http ://localhost :8501

Table 5.7 – Bilan quantitatif des réalisations du projet

Leçons Apprises
Ce projet nous a enseigné des leçons précieuses sur les systèmes de recommandation réels :

1. La perte d’entraînement ne prédit pas la qualité des recommandations.


L’AutoEncoder peut converger parfaitement tout en générant de mauvaises recom-
mandations (sparsité de 99.97%).
2. Les patterns temporels sont critiques. Le LSTM, qui capture l’ordre des achats,
surpasse largement les approches statiques (AutoEncoder, NCF).
3. La normalisation des scores est indispensable avant la fusion ensemble.
Une fusion sans normalisation est dominée par le modèle aux scores les plus élevés.
4. Le cold-start nécessite des stratégies dédiées. La technique User-from-Items
Inference a permis d’augmenter la précision du NCF de 129% sans réentraînement.

44
Système de Recommandation de Produits 2025/2026

5. L’interprétabilité a de la valeur. Les 32 règles Apriori, bien que moins pré-


cises, sont directement utilisables par les équipes métier sans compétences en deep
learning.
6. Le découpage des données impacte significativement l’évaluation. Passer
de 80/10/10 à 70/10/20 a doublé le nombre d’utilisateurs de test (434 → 869),
rendant l’évaluation statistiquement plus robuste.

Perspectives

Horizon Amélioration Impact attendu

Court terme Attention pooling sur LSTM +3–5% précision


Court terme Augmentation NCF_EPOCHS à 80 +2–3% NCF
Moyen terme Modèle BERT4Rec (Transformer) +5–10% précision
Moyen terme Évaluation temporelle par utilisateur Évaluation plus réaliste
Long terme Graph Neural Networks (GNN) Meilleure capture des co-achats
Long terme Intégration du prix et des saisons Recommandations contextuelles

Table 5.8 – Perspectives d’amélioration du système

Ce projet constitue une base solide pour un système de recommandation production-


ready. Il nous a permis de développer des compétences avancées en : deep learning ap-
pliqué, fouille de données (Apriori), ingénierie des données, déploiement d’API REST, et
développement d’interfaces web interactives.

45
Système de Recommandation de Produits 2025/2026

Webographie

Les références suivantes ont été consultées dans le cadre de ce projet. Toutes les URLs
ont été vérifiées et accessibles en juin 2025.

[1] He, X., Liao, L., Zhang, H., Nie, L., Hu, X., & Chua, T.-S. (2017). Neural Collabo-
rative Filtering. Proceedings of the 26th International World Wide Web Conference
(WWW 2017).
[Link]

[2] Hidasi, B., Karatzoglou, A., Baltrunas, L., & Tikk, D. (2016). Session-Based Re-
commendations with Recurrent Neural Networks. ICLR 2016.
[Link]

[3] Sedhain, S., Menon, A. K., Sanner, S., & Xie, L. (2015). AutoRec : Autoencoders
Meet Collaborative Filtering. Proceedings of the 24th WWW Conference.
[Link]

[4] Hochreiter, S., & Schmidhuber, J. (1997). Long Short-Term Memory. Neural Com-
putation, 9(8), 1735–1780.
[Link]

[5] Cheng, H.-T., Koc, L., Harmsen, J., et al. (2016). Wide & Deep Learning for
Recommender Systems. Google.
[Link]

[6] Chen, D. (2015). UCI Online Retail Dataset. UCI Machine Learning Repository.
[Link]

[7] TensorFlow / Keras — Documentation officielle.


[Link]

[8] FastAPI — Documentation officielle & Tutoriels.


[Link]

[9] Streamlit — Documentation officielle.


[Link]

[10] Zirari, N., Belahmar, Z., Bekkali, K., & El Azami, Y. (2025). Application déployée
– Système de Recommandation de Produits. Streamlit Cloud.
[Link]

46
Système de Recommandation de Produits 2025/2026

[11] Towards Data Science (2023). Building a Recommendation System with Deep
Learning.
[Link]

[12] Han, J., Pei, J., & Yin, Y. (2000). Mining Frequent Patterns without Candidate
Generation. Proceedings of ACM SIGMOD 2000.
[Link]

[13] Agrawal, R., & Srikant, R. (1994). Fast Algorithms for Mining Association
Rules. Proceedings of VLDB 1994.
[Link]

[14] Koren, Y., Bell, R., & Volinsky, C. (2009). Matrix Factorization Techniques for
Recommender Systems. IEEE Computer, 42(8), 30–37.
[Link]

47

Vous aimerez peut-être aussi