Charte
Pour ce projet on a pu choisir une charte graphique et une police atypique afin de se démarquer ainsi que 2 logos représentant notre site.
Site
Algorithme de Recommandation
L’algorithme est l’essence même de notre site proposant aux utilisateurs des choix basé sur leurs visionnage et sur les gouts
Contexte
Nous avons réalisé ce projet dans le cadre de nos études afin de développer une plateforme de streaming dédiée aux animes. L’objectif était de créer un système complet capable de proposer des recommandations personnalisées aux utilisateurs, en combinant nos compétences en développement web et en machine learning. Le travail a été réparti en plusieurs étapes pour aboutir à une plateforme fonctionnelle et cohérente.
Dans un premier temps nous avons choisies un sujet avec une problématique. Puis dans un second temps nous avons fait différentes maquettes interactives avec Figma puis nous avons collecté une base de données complète d’animes et d’évaluations utilisateurs, disponible sur Kaggle. Ces données comprenaient des informations telles que les titres des animes, leurs genres, et des notes attribuées par les utilisateurs (nécessaire pour l’algorithme de recommandation). Une fois les données récupérées, nous les avons nettoyées pour éliminer les anomalies, combler les valeurs manquantes et harmoniser les formats, notamment les genres, afin de faciliter leur exploitation. Ces données ont ensuite été intégrées dans une base MySQL distante pour centraliser leur gestion tout ceci étant fait via un outil ETL (PDO) les données ayant besoin de se nettoyage et étant trop volumineuse (=3 millions lignes) pour un script python.
Parallèlement, nous avons conçu les pages de la plateforme avec Symfony, où mon partenaire s’est occupé de créer les placeholders et le design en CSS. Ces pages comprenaient l’accueil, une page de sélection des genres et des animes, et une section de recommandations. Nous avons travaillé ensemble pour intégrer les fonctionnalités dynamiques, comme la récupération des genres sélectionnés ou la génération des recommandations.
Schéma Fonctionnel du site :
Le principal sujet de notre projet reposait sur le système de recommandation, qui utilisait un algorithme basé sur la décomposition en valeurs singulières (SVD). Nous avons développé ce système en Python à l’aide de la bibliothèque
Surprise. Les évaluations des utilisateurs étaient utilisées pour entraîner le modèle, en décomposant les interactions utilisateur anime en facteurs afin de prédire leurs futures préférences. Nous avons également introduit une composante
aléatoire dans la sélection des recommandations pour garantir une certaine diversité et éviter de proposer des suggestions similaires.
Les deux pages centrales de cette plateforme de streaming étaient dédiées à l’algorithme de recommandation.La première était une page utilisateur, où l’on saisissait un nom d’utilisateur afin d’afficher des graphiques sur ses préférences ainsi que des recommandations basées sur les notes qu’il avait attribuées aux différents animes. La deuxième page permettait de sélectionner plusieurs animes préférés, pour ensuite générer un top de recommandations personnalisées à partir de ces choix. La page d’accueil donnait accès à un formulaire de recherche, permettant d’obtenir des informations détaillées sur un anime spécifique. Enfin, une dernière page était dédiée aux statistiques globales de la plateforme, offrant une vue d’ensemble des données issues des utilisateurs et des contenus disponibles.
Puis finalement, nous avons intégré le script Python au back-end Symfony via des appels de processus, permettant d’envoyer les paramètres depuis l’interface utilisateur et de recevoir les résultats sous format JSON qui est ensuite
envoyé au JavaScript afin d’être afficher permettant d’avoir un affichage dynamique. Cela nous a appris à gérer la communication entre plusieurs technologies.
Ce que j’ai appris
En travaillant sur ce projet, nous avons découvert les subtilités des systèmes de recommandation notamment les défis liés aux données et nous avons pu aussi améliorer nos compétences en gestion de projet en utilisant la méthodologie agile en mettant en place un tableau trello ainsi que Git. Nous avons également renforcé nos compétences en développement web et en traitement de données tout en approfondissant notre compréhension des algorithmes comme SVD. Ce projet a été une expérience enrichissante, tant sur le plan technique que collaboratif, nous permettant de travailler en équipe tout en apprenant à équilibrer pertinence et diversité dans les recommandations proposées.
Compétences mobilisés
Gestion de projet ET Design
- Définition de la problématique et des objectifs
- Planification des étapes de travail et répartition des tâches
- Suivi de projet avec GitHub (gestion de versions, collaboration)
- Création de maquette avec Figma
Back-End
- Développement en PHP avec Symfony (architecture MVC)
- Connexion et gestion de base de données MySQL
- Traitement de données volumineuses avec PDO (ETL)
- Requêtes SQL complexes pour les recommandations
Front-END
- Utilisation de JavaScript pour l’interactivité
- Affichage de graphiques avec Chart.js
- Formulaires de recherche et pages dynamiques
- Implémentation d’un algorithme SVD
- Gestion des processus
- Analyse des données
- Indicateurs