SlideShare a Scribd company logo
1 of 55
Applicationauservicede
lasantépublique
Parcours Ingénieur Machine Learning | Projet 2
Michael Fumery | OpenClassrooms | Centrale Supélec
Contexte
L'agence "Santé publique France" a lancé un appel à projets
pour trouver des idées innovantes d’applications en lien
avec l'alimentation.
Pour développer cette application, les données de
l’"OpenFoodFacts" seront décrites, analysées et explorées
afin de trouver la meilleure approche.
Sommaire
• L’idée d’application.
• Le nettoyage des données.
• Analyse exploratoire réalisée.
• Les faits pertinents pour l’application.
• Questions – réponses.
2
L’idéed’application
« Nutri-scan »
Développement Python basé sur les
données de l’OpenFoodFacts.
3
Les applications de consommateurs
A l’instar de Yuka®, les applications proposant de classer les
produits et de leur attribuer une note en fonction de leur
composition sont très plébiscitées par les consommateurs.
En effet, chacun aime savoir si ce qu’il consomme est bon
pour sa santé, si le produit est ultra transformé ou non,
quel est l’impact sur l’environnement …
La démocratisation des smartphones aide
considérablement à répondre à ces attentes des
consommateurs et cela pour plusieurs raisons :
• Des connexions à Internet ultra-rapides,
• La possibilité de scanner une étiquette ou un code-
barres,
• Des applications simples à installer et dotées d’une part
d’Intelligence Artificielle.
4
Le Nutri-score et Nutri-grade
Dans le cadre de la loi de Santé de 2016, le gouvernement
français a recommandé la mise en place d’une information
nutritionnelle claire, visible, et facile à comprendre pour
tous.
L’objectif : améliorer l’information nutritionnelle figurant sur
les produits et ainsi aider les consommateurs à acheter des
aliments de meilleure qualité nutritionnelle.
Ce calcul du Nutri-score est basé sur les valeurs énergétique
des produits, teneurs en graisses, acides gras saturés,
glucides, sucres, protéines et sel pour 100 g de produit.
La base de données de l’Open Food Facts regroupe ces
données mais nous verrons par la suite qu’elles sont
souvent insuffisamment complétées.
En outre, très peu d’étiquettes produits affichent
aujourd’hui cette indication visuelle.
5
L’idée Nutri-scan
L’idée principale de l’application serait donc d’afficher le
nutri-score et nutri-grade estimé du produit en fonction des
indications nutritionnelles disponibles sur l’étiquette.
6
L’idée Nutri-scan
Première étape :
Scan de l’étiquette du produit, sur
la partie textuelle mentionnant les
valeurs nutritionnelles.
7
Seconde étape :
Conversion de l’image en données
textuelles exploitable par les
algorithmes (OCR).
Troisième étape :
Nettoyage des données obtenues
et recherche des équivalents dans
la base OpenFoodFacts.
Quatrième étape :
Application des algorithmes de
Machine Learning pour
déterminer le nutri-score en
fonction des variables connues.
Cinquième étape :
Sortie visuelle du nutri-score et
nutri-grade estimé ainsi que
diverses informations sur le
produit.
Afin de vérifier la faisabilité du projet, nous allons procéder
à diverses analyses de la base de données OpenFoodFacts
après nettoyage. Le but sera de déterminer si le Nutri-
score est bien estimable.
Lenettoyagedes
données
Point sur le Data Cleaning réalisé
pour le projet d’application.
8
9
Les données de l’Open Food Fact
Les datas ont été téléchargées au format CSV
sur le site de l’OpenFoodFacts, puis converties
en DataFrame via la librairie Pandas de Python.
Il compte 1 701 965 lignes au départ et
regroupe 184 variables :
• identification du produit,
• identification du fabricant,
• valeurs nutritionnelles …
Suppression des variables insuffisamment renseignées
10
Un grand nombre de variables du jeu de
données est très peu renseigné.
Plus de 72% de ces features ont un taux de
remplissage inferieur à 25%
Ces variables ne pourront pas être interpolées
sans danger de biaiser le jeu de données. Elles
ont donc été supprimées du DataFrame.
A cette étape, notre dataset compte à présent
50 variables.
Suppression des lignes mal renseignées
11
Pour nos analyses, nous avons besoin d’un minimum d’informations sur les nutriments des produits. Ces données sont
suffixées avec _100g dans notre jeu de données.
Nous avons donc supprimé toutes les lignes dont l’ensemble de ces données nutritionnelles est vide. Cela concerne
323654 lignes.
A ce stade, notre jeu de données compte 1 378 311 lignes et 50 colonnes.
Suppression des doublons de produits
12
Le code du produit dans le jeu de données de
l’OpenFoodFacts doit être unique. Un
dédoublonnage a donc été effectué sur la
variable « code ».
Dans un second temps, un deuxième
dédoublonnage a été réalisé sur le couple
« product_name | brands ».
Le dataset compte à présent 1 124 710 lignes.
Elimination des variables redondantes
13
Le dataset comporte des variables
redondantes. Par exemple, pour la
catégorie nous voyons :
• Les catégories dans la langue 1,
• Les catégories en Anglais,
• Les tags de catégories.
Pour toutes les variables comportant
les suffixes _en et _tags, seule la
variable en _en a été conservée pour
éliminer les redondances et baser le
jeu de données en Anglais.
Et d’autres opérations de Data Cleaning …
14
D’autres opérations ont été effectuées
notamment sur les dates et les pays
de la base de données.
Des nettoyages ont également été
effectués sur les catégories de produits
mais nous y reviendrons dans la partie
traitant des faits pertinents de
l’application.
A ce stade, le dataset compte 40
colonnes et 1 124 710 lignes.
Je vous invite à découvrir l’ensemble des nettoyages de données sur le Notebook Kaggle du projet.
Héloïse Cartier
+1 23 45 67 89
heloise@www.proseware.com
Synthèse:
Dans cette première partie du nettoyage
de données, nous avons :
• Supprimé les colonnes et lignes mal
renseignées,
• Supprimé les doublons de produits,
• Supprimé les variables redondantes,
• Ajusté les variables dates, pays et
catégories.
Ces opérations ont permis de réduire le
nombre de lignes de 33% et ramener le
nombre de variables de 184 à 40.
Les valeurs manquantes ou aberrantes
16
En réalisant une rapide description des données, les valeurs maximum et minimum semblent déjà contenir des
valeurs aberrantes (valeurs négatives ou beaucoup trop importantes …).
Nous allons donc identifier et supprimer les lignes contenant des valeurs aberrantes de plusieurs manières.
Suppression des valeurs aberrantes des nutriments
17
Nous avons donc plusieurs seuils à respecter :
• Les variables nutriments pour 100g ne
peuvent pas dépasser 100,
• Les graisses saturées ne peuvent pas
dépasser le total des graisses et le sodium
ne peut pas dépasser la quantité de sel,
• L’énergie maximum en kJ/g ne peut pas
excéder 37.
Toutes les lignes dont une de ces conditions
n’est pas respectée sont supprimées.
Les autres valeurs aberrantes
18
Pour les variables restantes (les additifs et la quantité servie), nous allons réaliser une élimination statistique basée sur la moyenne
et l’écart-type. Ici, ce sont plus des outliers que des valeurs aberrantes mais nous n’avons pas de moyen de vérifier les valeurs
maximales.
Nous éliminons donc les lignes dont les valeurs sur ces variables diffèrent de la médiane de plus de 5 fois l’écart-type.
Imputation des valeurs manquantes
19
Afin de choisir la meilleure méthode
d’imputation des valeurs manquantes, il
faut regarder dans un premier temps leur
distribution.
Ici, la courbe de distribution de loi normale a
également été projetée et un test de
Kolmogorov-Smirnov a été réalisé sur
chaque variable.
Les hypothèses de normalité de ces
distributions ont été rejetées, il serait donc
inexacte d’imputer les valeurs manquantes
par la moyenne.
Imputation des valeurs manquantes
20
Les boxplots de distribution des variables par
catégorie de produits (ici, pnns_groups_2)
permettent de vérifier que les médianes et
variances sont bien différentes selon la catégorie.
Pour les variables les plus importantes dans le
calcul du Nutri-score (energy_100g,
proteins_100g, sutrated-fat_100g, sugars_100g
et salt_100g), les valeurs manquantes ont été
imputées avec un algorithme du KNN.
Pour les autres variables, une imputation par la
médiane du groupe pnns_groups_2 a été
effectuée.
Vérification des distributions après imputation
21
Après imputation de toutes les valeurs
manquantes pour les variables
nutritionnelles, nous vérifions que les
distributions n’ont pas été modifiées
comparativement aux données d’origine.
Suppression des dernières variables mal renseignées
22
A ce niveau, les dernières variables mal
renseignées ont été supprimées du dataset.
Le jeu de données compte à présent 24 variables
dont les principales ne comptent plus de valeurs
nulles.
Héloïse Cartier
+1 23 45 67 89
heloise@www.proseware.com
Synthèse:
Dans cette seconde partie du nettoyage
de données, nous avons :
• Supprimé les valeurs aberrantes pour
les nutriments,
• Vérifié les distributions des variables.
• Imputé les données manquantes des
nutriments par la médiane ou KNN.
• Supprimer les dernières variables non
renseignées.
Le jeu de données compte à présent 24
features.
Tentative de calcul des Nutri-Grades
24
Notre application a pour vocation l’estimation des Nutri-scores en fonction des nutriments relevés sur les étiquettes. Afin
d’entrainer nos modèles de prédiction, nous avons besoin d’une base fiable de ces Nutri-score et Nutri-grade, or, dans notre base
OpenFoodFact, 51% seulement de ces variables sont complétées.
Nous avons donc tenter de recalculer ces Nutriscores et Nutri-grades grâce au tableau ci-dessus et comparer les résultats avec les
scores déjà complétés.
Après calculs, la précision de
cette méthode est inférieur à
50%
Les données manquantes ne
seront donc pas imputées.
Analyse
exploratoire
Analyses univariées, multivariées et
réduction dimensionnelle.
25
Les dates de création et modifications de produit
26
On remarque que les ajouts dans la
base OpenFoodFacts se sont
accélérés à partir de 2016 (date de la
loi de santé et d’entrée du Nutri-
score).
Les modifications quant à elles se
sont intensifiées à partir de 2018 avec
un pic en 2020.
La base est de plus en plus complétée
et 92% des produits ont été modifiés
au moins 1 fois.
Les contributeurs à la base Open Food Facts
27
Si on regarde les 5 meilleurs
contributeurs, kiliweb rempli à lui seul
56% de la base de données.
Les 5 premiers contributeurs couvrent
86,9% des produits de la base.
Nutri-scores et nutri-grades
28
La catégorie D des nutri-grades est
majoritairement représentée avec
30,8% des entrées de la base.
Suivent les grades C et E puis les
grades A avec 15,9% et B.
Nutri-scores et nutri-grades
29
On voit ici clairement que la
mise en place de la Loi de
Santé 2017 et du calcul du
Nutri-score par l'équipe du Pr.
Serge Hercberg a fait chuter la
part de produits considérés
Nutri-score A au profit des
produits typés D et E.
Nutri-scores et nutri-grades
30
La distribution des nutri-scores suit la tendance des nutri-grades sauf pour la classe B qui est beaucoup plus
resserrée sur une plage plus restreinte de scores.
Ces répartitions ne devraient pas perturber nos futurs modèles de prédiction.
Relations des paires de variables et nutri-grades
31
L’analyse des relations de variables 2 à 2, colorées en
fonction du nutri-grade, nous montre plusieurs choses :
• On remarque déjà des relations parfaitement
linéaires (pour les variables salt_100g et
sodium_100g par exemple)
• Pour les variables nutritionnelles, la catégorisation
par nutri-score est clairement marquée, les groupes
sont bien séparés.
Ces indications nous seront utiles pour nos prochaines
modélisations.
Répartition des Nutri-scores par catégorie de produits
32
On remarque ici, sous une
autre forme, que la
catégorie du produit semble
avoir un impact sur la
distribution des Nutri-
scores.
Pour vérifier cette
hypothèse, nous allons
réaliser une analyse de
variance.
Héloïse Cartier
+1 23 45 67 89
heloise@www.proseware.com
Résumé:
Ces premières analyses univariées nous
ont montré que :
• Les contributions se sont accélérées au
fil du temps,
• 5 principaux contributeurs complètent
près de 87% de la base,
• Les Nutri-grades sont répartis quasi-
équitablement,
• Les distributions des nutri-scores
semblent liées à la catégorie produit.
Analyse de la variance : ANOVA
34
Afin de vérifier si la catégorie pnns_groups_1
influence réellement le Nutri-score nous allons
réaliser une analyse de variance (ANOVA).
Les hypothèses posées seront donc :
• 𝐻0 : La distribution des échantillons est
similaire (et donc la catégorie n’a aucune
influence sur le Nutri-score)
• 𝐻1 : Une ou plusieurs distributions sont
inégales.
L’ANOVA repose sur 3 hypothèses de départ :
• Les observations dans chaque échantillon sont indépendantes et
distribuées de manière identique,
• Les observations dans chaque échantillon ont la même variance
• Les observations de chaque échantillon sont normalement
distribuées.
Analyse de la variance : ANOVA
35
On peut voir sur ces boxplots que les
catégories semblent assez différentes, même si
l’ordre de grandeur des écarts est relativement
faible.
La question est à présent de savoir si ces écarts
sont significatifs ou non via l’ANOVA.
36
Les résultats du test de Fisher nous indiquent ici une p-
value de 0 pour l’ensemble des catégories, donc
inférieur au niveau de test de 5%.
Nous rejetons donc l’hypothèse 𝐻0 selon laquelle les
distributions sont identiques.
La catégorie de produit pnns_groups_1 a donc bien une
influence sur le Nutri-score.
Analyse des corrélations linéaires
37
Comme nous l’avons vu précédemment dans les
pairplots, il existe des relations linéaires fortes entre
certaines variables.
Nous vérifions ces fortes corrélations pour éviter les
problèmes de colinéarité dans nos modèles prédictifs.
Par exemple salt et sodium ont un coefficient de
corrélation linéaire de 1, il faudra donc éliminer une
de ces variables.
Si l’on trie le Heatmap pour afficher les corrélations
avec le Nutri-score, on retrouve bien les variables qui
entrent dans la formule de calcul du Pr. Hercberg (ici
corrélées positivement)
Héloïse Cartier
+1 23 45 67 89
heloise@www.proseware.com
Résumé:
La seconde partie de cette exploration
permet de vérifier que :
• La catégorie produit a une influence
vérifiée sur le Nutri-score,
• De fortes corrélations linéaires existent
entre variables nutritionnelles,
• Le nutri-score est bien corrélé
linéairement aux principaux groupes de
variables nutritionnelles.
A présent, nous allons réaliser des
analyses multivariées dont la régression
linéaire multivariée.
Régression linéaire multivariée
39
Quand une variable cible est le fruit de la
corrélation de plusieurs variables prédictives,
on parle de régression multivariée pour faire
des prédictions.
Toutes ces variables prédictives seront utilisées
dans notre modèle pour trouver une fonction
prédictive.
• 𝜖 est une constante,
• 𝛼,𝛽,𝛾 représentent les coefficients de la
fonction prédictive 𝐹(𝑋),
• 𝑋 est un vecteur de variables prédictives.
Fonction prédictive de la régression
linéaire multivariée
Les métriques analysées :
MAE
Mean Absolute Error,
mesure la déviation
absolue moyenne entre
une estimation prévue et
les données réelles.
MSE
Mean Squared Error, la
distance, entre la
prévision et l’observation,
est ici élevée au carré. La
sensibilité à l’erreur est
meilleure.
RMSE
Root Mean Squared Error,
est la racine carrée du
MSE, c’est une métrique
largement utilisée.
R²
Coefficient de
détermination, c’est le
carré du coefficient de
corrélation linéaire.
40
Première régression sur les variables numériques
41
Pour la première régression, seules les
variables numériques ont été utilisées,
à savoir les nutriments.
Les métriques obtenues ont été
comparées à une baseline (stratégie
moyennes) :
Le R² obtenu est de 0,63 et la
dispersion des valeurs prédites est
centrée sur la droite de régression mais
assez dispersée.
Seconde régression en ajoutant la catégorie.
42
Pour la seconde régression, en plus des
données des nutriments, la catégorie
pnns_groups_1 a été intégrée.
Les données catégorielles ont été
transformées avec un OneHotEncoder
et les numériques standardisées.
Le R² obtenu est de 0,77 et l’ensemble
des métriques sont meilleures que sur
le premier modèle.
Héloïse Cartier
+1 23 45 67 89
heloise@www.proseware.com
Synthèse:
La régression linéaire multivariée incluant
les catégorie de produits donne des
premiers résultats satisfaisants.
Pour améliorer encore les performances,
nous pourrions traiter d'autres types
d'algorithmes comme la régression Ridge
par exemple ou encore la régression lasso.
Nous allons à présent réaliser une
réduction de de dimensions.
Réduction dimensionnelle par PCA
44
Analyse en Composantes Principale (PCA),
l'une des méthodes d'analyse de données
multivariées les plus utilisées.
Elle permet d'explorer des jeux de données
multidimensionnels constitués de variables
quantitatives et de créer des variables
synthétiques exploitables.
Nous allons ici réaliser un cercle des
corrélations de nos variables puis projeter les
individus sur les premiers plans factoriels.
Analyse en Composantes
Principales
Inertie cumulée sur les différents axes des plans factoriels
45
Afin d'avoir un aperçu du nombre de
composantes nécessaire à l'analyse,
nous projetons l'éboulis des valeurs
propres.
On constate que le premier plan
factoriel (Axes 1 et 2) couvre une
inertie de 49%.
En ajoutant le deuxième plan factoriel
(Axes 2 et 3) l’inertie totale est de 77%.
Cercles des corrélations
46
Comme nous avons déjà étudié les corrélations entre variables, ici le coefficient de corrélation linéaire est représenté par le
cosinus de l’angle entre 2 variables. Plus la pointe de la flèche est proche du cercle, plus la variable est représentative de l’axe.
L’axe 𝐹1 va représenter le caractère sucré / salé du produit alors que l’axe 𝐹2 représentera le caractère énergétique. 𝐹3 représente
la richesse du produit.
Projection des produits sur ces plans factoriels
47
Une fois les 522 952 produits projetés sur les axes définis, on peut se rendre compte de la propagation des individus sur les
variables synthétiques crées. Cette méthode nous permet d’éventuellement identifier des outliers sur ces différents axes.
Qualité de représentation et contribution aux axes
48
Ces 2 métriques nous permettent de confirmer les contributions des variables à chaque axe et leur qualité de représentation.
Nous allons à présent pouvoir réaliser une dernière régression linéaire multivariée sur ces variables synthétiques calculées que nous
étudierons dans la partie « faits pertinents de l’application » .
Faisabilité
del’application
Après ces analyses exploratoires,
l’application est elle pertinente et
réalisable en l’état ?
49
Le problème des catégories de produits …
50
Comme nous l’avons vu pour les
régressions linéaires multivariées, la
catégorie produit a un rôle important
dans la prédiction du Nutri-score.
Or, si l’on se base sur la catégorie
principale du produit de la base
OpenFoodFacts, on en compte 26 651.
Ce qui est difficilement exploitable
pour un algorithme de régression.
De plus, la catégorie de loin la plus
représentée est : « unknown » …
Le problème des catégories de produits …
51
La catégorie pnns_groups_1 compte
quant à elle 10 catégories et 40 pour la
pnns_groups_2.
Elles seraient donc plus facilement
exploitables mais le constat est le
même. Les données inconnues sont
majoritairement représentées ce qui
peut fausser les mesures et la
prédiction du Nutri-score.
En l’état, ces problèmes de catégories
mal renseignées sont un frein à la
précision de l’application.
Problème de la réduction dimensionnelle
52
La réduction de dimension, quoi que
représentant bien les différentes
données nutritives, ne permet pas
d’améliorer les performances de la
régression linéaire multivariée.
Au contraire, les métriques sont très
dégradées. La réduction dimensionnelle
ne peut donc pas être utilisée dans
notre application.
Problème des données manquantes
53
Dans notre base de données Open Food Facts, les données
manquantes sont un réel problème.
155 variables sur 184 ont un taux de remplissage inférieur à
50%.
Chacun peut contribuer à cette base de données, ce qui
permet d’obtenir une base large mais pas forcement
vérifiée, nous l’avons vu dans les divers nettoyages.
Pour obtenir des datas plus cohérentes, et compléter les
valeurs manquantes, il est, je pense, impératif de coupler
d’autres bases de données telles que la FoodData Central,
Food Nutritional Database ou encore les bases de données
de la FAO.
Héloïse Cartier
+1 23 45 67 89
heloise@www.proseware.com
Conclusion:
Lors de ces nettoyages et analyses exploratoires, nous avons pu
évaluer la base de donnée de l’OpenFoodFacts afin de vérifier
qu’elle pouvait servir de base à notre application.
Données manquantes et aberrantes, modélisations encore
imprécise, cette base, seule, ne peut pas suffire à évaluer les
Nutri-scores et Nutri-grades avec une précision satisfaisante.
Il faut donc compléter les données l’Open Food Facts avec
d’autres bases de données produits ou encore repenser l’idée
de départ et créer une application capable d’insérer des datas
complète dans la base Open Food Facts.
Mercidevotreattention
Michaël FUMERY
06.59.20.65.39
mika.fumery@gmail.com

More Related Content

What's hot

Machine Learning et Intelligence Artificielle
Machine Learning et Intelligence ArtificielleMachine Learning et Intelligence Artificielle
Machine Learning et Intelligence Artificielle
Soft Computing
 
Introduction au Data Mining et Méthodes Statistiques
Introduction au Data Mining et Méthodes StatistiquesIntroduction au Data Mining et Méthodes Statistiques
Introduction au Data Mining et Méthodes Statistiques
Giorgio Pauletto
 
Chapitre 4-Apprentissage non supervisé (1) (1).pdf
Chapitre 4-Apprentissage non supervisé (1) (1).pdfChapitre 4-Apprentissage non supervisé (1) (1).pdf
Chapitre 4-Apprentissage non supervisé (1) (1).pdf
ZizoAziz
 
Détection communautaire dans des réseaux complexe a l'aide de l'algorithme gé...
Détection communautaire dans des réseaux complexe a l'aide de l'algorithme gé...Détection communautaire dans des réseaux complexe a l'aide de l'algorithme gé...
Détection communautaire dans des réseaux complexe a l'aide de l'algorithme gé...
AHMEDBELGHITH4
 

What's hot (20)

Computer Vision - Classification automatique des races de chien à partir de p...
Computer Vision - Classification automatique des races de chien à partir de p...Computer Vision - Classification automatique des races de chien à partir de p...
Computer Vision - Classification automatique des races de chien à partir de p...
 
5.2 Régression linéaire
5.2 Régression linéaire5.2 Régression linéaire
5.2 Régression linéaire
 
Exposé segmentation
Exposé segmentationExposé segmentation
Exposé segmentation
 
Produisez une étude de marché
Produisez une étude de marchéProduisez une étude de marché
Produisez une étude de marché
 
Seminaire datamining Ecole de Statistique et d'Economie Appliquée
Seminaire datamining Ecole de Statistique et d'Economie AppliquéeSeminaire datamining Ecole de Statistique et d'Economie Appliquée
Seminaire datamining Ecole de Statistique et d'Economie Appliquée
 
NLP - Prédictions de tags sur les questions Stackoverflow
NLP - Prédictions de tags sur les questions StackoverflowNLP - Prédictions de tags sur les questions Stackoverflow
NLP - Prédictions de tags sur les questions Stackoverflow
 
5.5 Clustering
5.5 Clustering5.5 Clustering
5.5 Clustering
 
MPLS
MPLSMPLS
MPLS
 
Perceptron monocouche en français
Perceptron monocouche en françaisPerceptron monocouche en français
Perceptron monocouche en français
 
Big data
Big dataBig data
Big data
 
Introduction to Machine learning
Introduction to Machine learningIntroduction to Machine learning
Introduction to Machine learning
 
Machine Learning et Intelligence Artificielle
Machine Learning et Intelligence ArtificielleMachine Learning et Intelligence Artificielle
Machine Learning et Intelligence Artificielle
 
Introduction au Data Mining et Méthodes Statistiques
Introduction au Data Mining et Méthodes StatistiquesIntroduction au Data Mining et Méthodes Statistiques
Introduction au Data Mining et Méthodes Statistiques
 
Chapitre 4-Apprentissage non supervisé (1) (1).pdf
Chapitre 4-Apprentissage non supervisé (1) (1).pdfChapitre 4-Apprentissage non supervisé (1) (1).pdf
Chapitre 4-Apprentissage non supervisé (1) (1).pdf
 
Détection communautaire dans des réseaux complexe a l'aide de l'algorithme gé...
Détection communautaire dans des réseaux complexe a l'aide de l'algorithme gé...Détection communautaire dans des réseaux complexe a l'aide de l'algorithme gé...
Détection communautaire dans des réseaux complexe a l'aide de l'algorithme gé...
 
Les 10 plus populaires algorithmes du machine learning
Les 10 plus populaires algorithmes du machine learningLes 10 plus populaires algorithmes du machine learning
Les 10 plus populaires algorithmes du machine learning
 
WEB SCRAPING.pdf
WEB SCRAPING.pdfWEB SCRAPING.pdf
WEB SCRAPING.pdf
 
BigData_Chp2: Hadoop & Map-Reduce
BigData_Chp2: Hadoop & Map-ReduceBigData_Chp2: Hadoop & Map-Reduce
BigData_Chp2: Hadoop & Map-Reduce
 
Big Data : concepts, cas d'usage et tendances
Big Data : concepts, cas d'usage et tendancesBig Data : concepts, cas d'usage et tendances
Big Data : concepts, cas d'usage et tendances
 
Big data - Cours d'introduction l Data-business
Big data - Cours d'introduction l Data-businessBig data - Cours d'introduction l Data-business
Big data - Cours d'introduction l Data-business
 

Similar to Application au service_de_la_sante_publique

20150814 Wrangling Data From Raw to Tidy vs
20150814 Wrangling Data From Raw to Tidy vs20150814 Wrangling Data From Raw to Tidy vs
20150814 Wrangling Data From Raw to Tidy vs
Ian Feller
 
Open06
Open06Open06
Open06
butest
 
Bug tracking system(synopsis)
Bug tracking system(synopsis)Bug tracking system(synopsis)
Bug tracking system(synopsis)
happiness09
 

Similar to Application au service_de_la_sante_publique (20)

20150814 Wrangling Data From Raw to Tidy vs
20150814 Wrangling Data From Raw to Tidy vs20150814 Wrangling Data From Raw to Tidy vs
20150814 Wrangling Data From Raw to Tidy vs
 
XGBoost @ Fyber
XGBoost @ FyberXGBoost @ Fyber
XGBoost @ Fyber
 
IRJET - Machine Learning for Diagnosis of Diabetes
IRJET - Machine Learning for Diagnosis of DiabetesIRJET - Machine Learning for Diagnosis of Diabetes
IRJET - Machine Learning for Diagnosis of Diabetes
 
Data Mining on SpamBase,Wine Quality and Communities and Crime Datasets
Data Mining on SpamBase,Wine Quality and Communities and Crime DatasetsData Mining on SpamBase,Wine Quality and Communities and Crime Datasets
Data Mining on SpamBase,Wine Quality and Communities and Crime Datasets
 
Historical Data on Avocado prices and Sales volume in US Markets
Historical Data on Avocado prices and Sales volume in US MarketsHistorical Data on Avocado prices and Sales volume in US Markets
Historical Data on Avocado prices and Sales volume in US Markets
 
report
reportreport
report
 
Open06
Open06Open06
Open06
 
BIG MART SALES.pptx
BIG MART SALES.pptxBIG MART SALES.pptx
BIG MART SALES.pptx
 
BIG MART SALES PRIDICTION PROJECT.pptx
BIG MART SALES PRIDICTION PROJECT.pptxBIG MART SALES PRIDICTION PROJECT.pptx
BIG MART SALES PRIDICTION PROJECT.pptx
 
McDonald Dataset Analysis - Shreyas Sinha [ 2nd Sep, 2020 ]
McDonald Dataset Analysis -  Shreyas Sinha [ 2nd Sep, 2020 ]McDonald Dataset Analysis -  Shreyas Sinha [ 2nd Sep, 2020 ]
McDonald Dataset Analysis - Shreyas Sinha [ 2nd Sep, 2020 ]
 
Vision Based Food Analysis System
Vision Based Food Analysis SystemVision Based Food Analysis System
Vision Based Food Analysis System
 
Lean Six Sigma
Lean Six SigmaLean Six Sigma
Lean Six Sigma
 
Envelopment Analysis In Economics
Envelopment Analysis In EconomicsEnvelopment Analysis In Economics
Envelopment Analysis In Economics
 
data-science-lifecycle-ebook.pdf
data-science-lifecycle-ebook.pdfdata-science-lifecycle-ebook.pdf
data-science-lifecycle-ebook.pdf
 
Phase 2 of Predicting Payment default on Vehicle Loan EMI
Phase 2 of Predicting Payment default on Vehicle Loan EMIPhase 2 of Predicting Payment default on Vehicle Loan EMI
Phase 2 of Predicting Payment default on Vehicle Loan EMI
 
Original
OriginalOriginal
Original
 
Data science guide
Data science guideData science guide
Data science guide
 
RECIPE GENERATION FROM FOOD IMAGES USING DEEP LEARNING
RECIPE GENERATION FROM FOOD IMAGES USING DEEP LEARNINGRECIPE GENERATION FROM FOOD IMAGES USING DEEP LEARNING
RECIPE GENERATION FROM FOOD IMAGES USING DEEP LEARNING
 
Barga Data Science lecture 10
Barga Data Science lecture 10Barga Data Science lecture 10
Barga Data Science lecture 10
 
Bug tracking system(synopsis)
Bug tracking system(synopsis)Bug tracking system(synopsis)
Bug tracking system(synopsis)
 

Recently uploaded

FESE Capital Markets Fact Sheet 2024 Q1.pdf
FESE Capital Markets Fact Sheet 2024 Q1.pdfFESE Capital Markets Fact Sheet 2024 Q1.pdf
FESE Capital Markets Fact Sheet 2024 Q1.pdf
MarinCaroMartnezBerg
 
Call Girls Hsr Layout Just Call 👗 7737669865 👗 Top Class Call Girl Service Ba...
Call Girls Hsr Layout Just Call 👗 7737669865 👗 Top Class Call Girl Service Ba...Call Girls Hsr Layout Just Call 👗 7737669865 👗 Top Class Call Girl Service Ba...
Call Girls Hsr Layout Just Call 👗 7737669865 👗 Top Class Call Girl Service Ba...
amitlee9823
 
Abortion pills in Doha Qatar (+966572737505 ! Get Cytotec
Abortion pills in Doha Qatar (+966572737505 ! Get CytotecAbortion pills in Doha Qatar (+966572737505 ! Get Cytotec
Abortion pills in Doha Qatar (+966572737505 ! Get Cytotec
Abortion pills in Riyadh +966572737505 get cytotec
 
➥🔝 7737669865 🔝▻ Bangalore Call-girls in Women Seeking Men 🔝Bangalore🔝 Esc...
➥🔝 7737669865 🔝▻ Bangalore Call-girls in Women Seeking Men  🔝Bangalore🔝   Esc...➥🔝 7737669865 🔝▻ Bangalore Call-girls in Women Seeking Men  🔝Bangalore🔝   Esc...
➥🔝 7737669865 🔝▻ Bangalore Call-girls in Women Seeking Men 🔝Bangalore🔝 Esc...
amitlee9823
 
CHEAP Call Girls in Saket (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Saket (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Saket (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Saket (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 
Al Barsha Escorts $#$ O565212860 $#$ Escort Service In Al Barsha
Al Barsha Escorts $#$ O565212860 $#$ Escort Service In Al BarshaAl Barsha Escorts $#$ O565212860 $#$ Escort Service In Al Barsha
Al Barsha Escorts $#$ O565212860 $#$ Escort Service In Al Barsha
AroojKhan71
 
Call Girls In Bellandur ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In Bellandur ☎ 7737669865 🥵 Book Your One night StandCall Girls In Bellandur ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In Bellandur ☎ 7737669865 🥵 Book Your One night Stand
amitlee9823
 
Call Girls In Doddaballapur Road ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In Doddaballapur Road ☎ 7737669865 🥵 Book Your One night StandCall Girls In Doddaballapur Road ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In Doddaballapur Road ☎ 7737669865 🥵 Book Your One night Stand
amitlee9823
 
Call Girls Bommasandra Just Call 👗 7737669865 👗 Top Class Call Girl Service B...
Call Girls Bommasandra Just Call 👗 7737669865 👗 Top Class Call Girl Service B...Call Girls Bommasandra Just Call 👗 7737669865 👗 Top Class Call Girl Service B...
Call Girls Bommasandra Just Call 👗 7737669865 👗 Top Class Call Girl Service B...
amitlee9823
 
Call Girls In Hsr Layout ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In Hsr Layout ☎ 7737669865 🥵 Book Your One night StandCall Girls In Hsr Layout ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In Hsr Layout ☎ 7737669865 🥵 Book Your One night Stand
amitlee9823
 
Jual Obat Aborsi Surabaya ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
Jual Obat Aborsi Surabaya ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...Jual Obat Aborsi Surabaya ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
Jual Obat Aborsi Surabaya ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
ZurliaSoop
 

Recently uploaded (20)

Predicting Loan Approval: A Data Science Project
Predicting Loan Approval: A Data Science ProjectPredicting Loan Approval: A Data Science Project
Predicting Loan Approval: A Data Science Project
 
FESE Capital Markets Fact Sheet 2024 Q1.pdf
FESE Capital Markets Fact Sheet 2024 Q1.pdfFESE Capital Markets Fact Sheet 2024 Q1.pdf
FESE Capital Markets Fact Sheet 2024 Q1.pdf
 
Call Girls Hsr Layout Just Call 👗 7737669865 👗 Top Class Call Girl Service Ba...
Call Girls Hsr Layout Just Call 👗 7737669865 👗 Top Class Call Girl Service Ba...Call Girls Hsr Layout Just Call 👗 7737669865 👗 Top Class Call Girl Service Ba...
Call Girls Hsr Layout Just Call 👗 7737669865 👗 Top Class Call Girl Service Ba...
 
Thane Call Girls 7091864438 Call Girls in Thane Escort service book now -
Thane Call Girls 7091864438 Call Girls in Thane Escort service book now -Thane Call Girls 7091864438 Call Girls in Thane Escort service book now -
Thane Call Girls 7091864438 Call Girls in Thane Escort service book now -
 
Generative AI on Enterprise Cloud with NiFi and Milvus
Generative AI on Enterprise Cloud with NiFi and MilvusGenerative AI on Enterprise Cloud with NiFi and Milvus
Generative AI on Enterprise Cloud with NiFi and Milvus
 
Call Girls in Sarai Kale Khan Delhi 💯 Call Us 🔝9205541914 🔝( Delhi) Escorts S...
Call Girls in Sarai Kale Khan Delhi 💯 Call Us 🔝9205541914 🔝( Delhi) Escorts S...Call Girls in Sarai Kale Khan Delhi 💯 Call Us 🔝9205541914 🔝( Delhi) Escorts S...
Call Girls in Sarai Kale Khan Delhi 💯 Call Us 🔝9205541914 🔝( Delhi) Escorts S...
 
Week-01-2.ppt BBB human Computer interaction
Week-01-2.ppt BBB human Computer interactionWeek-01-2.ppt BBB human Computer interaction
Week-01-2.ppt BBB human Computer interaction
 
Abortion pills in Doha Qatar (+966572737505 ! Get Cytotec
Abortion pills in Doha Qatar (+966572737505 ! Get CytotecAbortion pills in Doha Qatar (+966572737505 ! Get Cytotec
Abortion pills in Doha Qatar (+966572737505 ! Get Cytotec
 
➥🔝 7737669865 🔝▻ Bangalore Call-girls in Women Seeking Men 🔝Bangalore🔝 Esc...
➥🔝 7737669865 🔝▻ Bangalore Call-girls in Women Seeking Men  🔝Bangalore🔝   Esc...➥🔝 7737669865 🔝▻ Bangalore Call-girls in Women Seeking Men  🔝Bangalore🔝   Esc...
➥🔝 7737669865 🔝▻ Bangalore Call-girls in Women Seeking Men 🔝Bangalore🔝 Esc...
 
Digital Advertising Lecture for Advanced Digital & Social Media Strategy at U...
Digital Advertising Lecture for Advanced Digital & Social Media Strategy at U...Digital Advertising Lecture for Advanced Digital & Social Media Strategy at U...
Digital Advertising Lecture for Advanced Digital & Social Media Strategy at U...
 
Sampling (random) method and Non random.ppt
Sampling (random) method and Non random.pptSampling (random) method and Non random.ppt
Sampling (random) method and Non random.ppt
 
CHEAP Call Girls in Saket (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Saket (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Saket (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Saket (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
Al Barsha Escorts $#$ O565212860 $#$ Escort Service In Al Barsha
Al Barsha Escorts $#$ O565212860 $#$ Escort Service In Al BarshaAl Barsha Escorts $#$ O565212860 $#$ Escort Service In Al Barsha
Al Barsha Escorts $#$ O565212860 $#$ Escort Service In Al Barsha
 
Call Girls In Bellandur ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In Bellandur ☎ 7737669865 🥵 Book Your One night StandCall Girls In Bellandur ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In Bellandur ☎ 7737669865 🥵 Book Your One night Stand
 
Call Girls In Doddaballapur Road ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In Doddaballapur Road ☎ 7737669865 🥵 Book Your One night StandCall Girls In Doddaballapur Road ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In Doddaballapur Road ☎ 7737669865 🥵 Book Your One night Stand
 
Call Girls Bommasandra Just Call 👗 7737669865 👗 Top Class Call Girl Service B...
Call Girls Bommasandra Just Call 👗 7737669865 👗 Top Class Call Girl Service B...Call Girls Bommasandra Just Call 👗 7737669865 👗 Top Class Call Girl Service B...
Call Girls Bommasandra Just Call 👗 7737669865 👗 Top Class Call Girl Service B...
 
VIP Model Call Girls Hinjewadi ( Pune ) Call ON 8005736733 Starting From 5K t...
VIP Model Call Girls Hinjewadi ( Pune ) Call ON 8005736733 Starting From 5K t...VIP Model Call Girls Hinjewadi ( Pune ) Call ON 8005736733 Starting From 5K t...
VIP Model Call Girls Hinjewadi ( Pune ) Call ON 8005736733 Starting From 5K t...
 
Discover Why Less is More in B2B Research
Discover Why Less is More in B2B ResearchDiscover Why Less is More in B2B Research
Discover Why Less is More in B2B Research
 
Call Girls In Hsr Layout ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In Hsr Layout ☎ 7737669865 🥵 Book Your One night StandCall Girls In Hsr Layout ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In Hsr Layout ☎ 7737669865 🥵 Book Your One night Stand
 
Jual Obat Aborsi Surabaya ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
Jual Obat Aborsi Surabaya ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...Jual Obat Aborsi Surabaya ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
Jual Obat Aborsi Surabaya ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
 

Application au service_de_la_sante_publique

  • 1. Applicationauservicede lasantépublique Parcours Ingénieur Machine Learning | Projet 2 Michael Fumery | OpenClassrooms | Centrale Supélec
  • 2. Contexte L'agence "Santé publique France" a lancé un appel à projets pour trouver des idées innovantes d’applications en lien avec l'alimentation. Pour développer cette application, les données de l’"OpenFoodFacts" seront décrites, analysées et explorées afin de trouver la meilleure approche. Sommaire • L’idée d’application. • Le nettoyage des données. • Analyse exploratoire réalisée. • Les faits pertinents pour l’application. • Questions – réponses. 2
  • 3. L’idéed’application « Nutri-scan » Développement Python basé sur les données de l’OpenFoodFacts. 3
  • 4. Les applications de consommateurs A l’instar de Yuka®, les applications proposant de classer les produits et de leur attribuer une note en fonction de leur composition sont très plébiscitées par les consommateurs. En effet, chacun aime savoir si ce qu’il consomme est bon pour sa santé, si le produit est ultra transformé ou non, quel est l’impact sur l’environnement … La démocratisation des smartphones aide considérablement à répondre à ces attentes des consommateurs et cela pour plusieurs raisons : • Des connexions à Internet ultra-rapides, • La possibilité de scanner une étiquette ou un code- barres, • Des applications simples à installer et dotées d’une part d’Intelligence Artificielle. 4
  • 5. Le Nutri-score et Nutri-grade Dans le cadre de la loi de Santé de 2016, le gouvernement français a recommandé la mise en place d’une information nutritionnelle claire, visible, et facile à comprendre pour tous. L’objectif : améliorer l’information nutritionnelle figurant sur les produits et ainsi aider les consommateurs à acheter des aliments de meilleure qualité nutritionnelle. Ce calcul du Nutri-score est basé sur les valeurs énergétique des produits, teneurs en graisses, acides gras saturés, glucides, sucres, protéines et sel pour 100 g de produit. La base de données de l’Open Food Facts regroupe ces données mais nous verrons par la suite qu’elles sont souvent insuffisamment complétées. En outre, très peu d’étiquettes produits affichent aujourd’hui cette indication visuelle. 5
  • 6. L’idée Nutri-scan L’idée principale de l’application serait donc d’afficher le nutri-score et nutri-grade estimé du produit en fonction des indications nutritionnelles disponibles sur l’étiquette. 6
  • 7. L’idée Nutri-scan Première étape : Scan de l’étiquette du produit, sur la partie textuelle mentionnant les valeurs nutritionnelles. 7 Seconde étape : Conversion de l’image en données textuelles exploitable par les algorithmes (OCR). Troisième étape : Nettoyage des données obtenues et recherche des équivalents dans la base OpenFoodFacts. Quatrième étape : Application des algorithmes de Machine Learning pour déterminer le nutri-score en fonction des variables connues. Cinquième étape : Sortie visuelle du nutri-score et nutri-grade estimé ainsi que diverses informations sur le produit. Afin de vérifier la faisabilité du projet, nous allons procéder à diverses analyses de la base de données OpenFoodFacts après nettoyage. Le but sera de déterminer si le Nutri- score est bien estimable.
  • 8. Lenettoyagedes données Point sur le Data Cleaning réalisé pour le projet d’application. 8
  • 9. 9 Les données de l’Open Food Fact Les datas ont été téléchargées au format CSV sur le site de l’OpenFoodFacts, puis converties en DataFrame via la librairie Pandas de Python. Il compte 1 701 965 lignes au départ et regroupe 184 variables : • identification du produit, • identification du fabricant, • valeurs nutritionnelles …
  • 10. Suppression des variables insuffisamment renseignées 10 Un grand nombre de variables du jeu de données est très peu renseigné. Plus de 72% de ces features ont un taux de remplissage inferieur à 25% Ces variables ne pourront pas être interpolées sans danger de biaiser le jeu de données. Elles ont donc été supprimées du DataFrame. A cette étape, notre dataset compte à présent 50 variables.
  • 11. Suppression des lignes mal renseignées 11 Pour nos analyses, nous avons besoin d’un minimum d’informations sur les nutriments des produits. Ces données sont suffixées avec _100g dans notre jeu de données. Nous avons donc supprimé toutes les lignes dont l’ensemble de ces données nutritionnelles est vide. Cela concerne 323654 lignes. A ce stade, notre jeu de données compte 1 378 311 lignes et 50 colonnes.
  • 12. Suppression des doublons de produits 12 Le code du produit dans le jeu de données de l’OpenFoodFacts doit être unique. Un dédoublonnage a donc été effectué sur la variable « code ». Dans un second temps, un deuxième dédoublonnage a été réalisé sur le couple « product_name | brands ». Le dataset compte à présent 1 124 710 lignes.
  • 13. Elimination des variables redondantes 13 Le dataset comporte des variables redondantes. Par exemple, pour la catégorie nous voyons : • Les catégories dans la langue 1, • Les catégories en Anglais, • Les tags de catégories. Pour toutes les variables comportant les suffixes _en et _tags, seule la variable en _en a été conservée pour éliminer les redondances et baser le jeu de données en Anglais.
  • 14. Et d’autres opérations de Data Cleaning … 14 D’autres opérations ont été effectuées notamment sur les dates et les pays de la base de données. Des nettoyages ont également été effectués sur les catégories de produits mais nous y reviendrons dans la partie traitant des faits pertinents de l’application. A ce stade, le dataset compte 40 colonnes et 1 124 710 lignes. Je vous invite à découvrir l’ensemble des nettoyages de données sur le Notebook Kaggle du projet.
  • 15. Héloïse Cartier +1 23 45 67 89 heloise@www.proseware.com Synthèse: Dans cette première partie du nettoyage de données, nous avons : • Supprimé les colonnes et lignes mal renseignées, • Supprimé les doublons de produits, • Supprimé les variables redondantes, • Ajusté les variables dates, pays et catégories. Ces opérations ont permis de réduire le nombre de lignes de 33% et ramener le nombre de variables de 184 à 40.
  • 16. Les valeurs manquantes ou aberrantes 16 En réalisant une rapide description des données, les valeurs maximum et minimum semblent déjà contenir des valeurs aberrantes (valeurs négatives ou beaucoup trop importantes …). Nous allons donc identifier et supprimer les lignes contenant des valeurs aberrantes de plusieurs manières.
  • 17. Suppression des valeurs aberrantes des nutriments 17 Nous avons donc plusieurs seuils à respecter : • Les variables nutriments pour 100g ne peuvent pas dépasser 100, • Les graisses saturées ne peuvent pas dépasser le total des graisses et le sodium ne peut pas dépasser la quantité de sel, • L’énergie maximum en kJ/g ne peut pas excéder 37. Toutes les lignes dont une de ces conditions n’est pas respectée sont supprimées.
  • 18. Les autres valeurs aberrantes 18 Pour les variables restantes (les additifs et la quantité servie), nous allons réaliser une élimination statistique basée sur la moyenne et l’écart-type. Ici, ce sont plus des outliers que des valeurs aberrantes mais nous n’avons pas de moyen de vérifier les valeurs maximales. Nous éliminons donc les lignes dont les valeurs sur ces variables diffèrent de la médiane de plus de 5 fois l’écart-type.
  • 19. Imputation des valeurs manquantes 19 Afin de choisir la meilleure méthode d’imputation des valeurs manquantes, il faut regarder dans un premier temps leur distribution. Ici, la courbe de distribution de loi normale a également été projetée et un test de Kolmogorov-Smirnov a été réalisé sur chaque variable. Les hypothèses de normalité de ces distributions ont été rejetées, il serait donc inexacte d’imputer les valeurs manquantes par la moyenne.
  • 20. Imputation des valeurs manquantes 20 Les boxplots de distribution des variables par catégorie de produits (ici, pnns_groups_2) permettent de vérifier que les médianes et variances sont bien différentes selon la catégorie. Pour les variables les plus importantes dans le calcul du Nutri-score (energy_100g, proteins_100g, sutrated-fat_100g, sugars_100g et salt_100g), les valeurs manquantes ont été imputées avec un algorithme du KNN. Pour les autres variables, une imputation par la médiane du groupe pnns_groups_2 a été effectuée.
  • 21. Vérification des distributions après imputation 21 Après imputation de toutes les valeurs manquantes pour les variables nutritionnelles, nous vérifions que les distributions n’ont pas été modifiées comparativement aux données d’origine.
  • 22. Suppression des dernières variables mal renseignées 22 A ce niveau, les dernières variables mal renseignées ont été supprimées du dataset. Le jeu de données compte à présent 24 variables dont les principales ne comptent plus de valeurs nulles.
  • 23. Héloïse Cartier +1 23 45 67 89 heloise@www.proseware.com Synthèse: Dans cette seconde partie du nettoyage de données, nous avons : • Supprimé les valeurs aberrantes pour les nutriments, • Vérifié les distributions des variables. • Imputé les données manquantes des nutriments par la médiane ou KNN. • Supprimer les dernières variables non renseignées. Le jeu de données compte à présent 24 features.
  • 24. Tentative de calcul des Nutri-Grades 24 Notre application a pour vocation l’estimation des Nutri-scores en fonction des nutriments relevés sur les étiquettes. Afin d’entrainer nos modèles de prédiction, nous avons besoin d’une base fiable de ces Nutri-score et Nutri-grade, or, dans notre base OpenFoodFact, 51% seulement de ces variables sont complétées. Nous avons donc tenter de recalculer ces Nutriscores et Nutri-grades grâce au tableau ci-dessus et comparer les résultats avec les scores déjà complétés. Après calculs, la précision de cette méthode est inférieur à 50% Les données manquantes ne seront donc pas imputées.
  • 26. Les dates de création et modifications de produit 26 On remarque que les ajouts dans la base OpenFoodFacts se sont accélérés à partir de 2016 (date de la loi de santé et d’entrée du Nutri- score). Les modifications quant à elles se sont intensifiées à partir de 2018 avec un pic en 2020. La base est de plus en plus complétée et 92% des produits ont été modifiés au moins 1 fois.
  • 27. Les contributeurs à la base Open Food Facts 27 Si on regarde les 5 meilleurs contributeurs, kiliweb rempli à lui seul 56% de la base de données. Les 5 premiers contributeurs couvrent 86,9% des produits de la base.
  • 28. Nutri-scores et nutri-grades 28 La catégorie D des nutri-grades est majoritairement représentée avec 30,8% des entrées de la base. Suivent les grades C et E puis les grades A avec 15,9% et B.
  • 29. Nutri-scores et nutri-grades 29 On voit ici clairement que la mise en place de la Loi de Santé 2017 et du calcul du Nutri-score par l'équipe du Pr. Serge Hercberg a fait chuter la part de produits considérés Nutri-score A au profit des produits typés D et E.
  • 30. Nutri-scores et nutri-grades 30 La distribution des nutri-scores suit la tendance des nutri-grades sauf pour la classe B qui est beaucoup plus resserrée sur une plage plus restreinte de scores. Ces répartitions ne devraient pas perturber nos futurs modèles de prédiction.
  • 31. Relations des paires de variables et nutri-grades 31 L’analyse des relations de variables 2 à 2, colorées en fonction du nutri-grade, nous montre plusieurs choses : • On remarque déjà des relations parfaitement linéaires (pour les variables salt_100g et sodium_100g par exemple) • Pour les variables nutritionnelles, la catégorisation par nutri-score est clairement marquée, les groupes sont bien séparés. Ces indications nous seront utiles pour nos prochaines modélisations.
  • 32. Répartition des Nutri-scores par catégorie de produits 32 On remarque ici, sous une autre forme, que la catégorie du produit semble avoir un impact sur la distribution des Nutri- scores. Pour vérifier cette hypothèse, nous allons réaliser une analyse de variance.
  • 33. Héloïse Cartier +1 23 45 67 89 heloise@www.proseware.com Résumé: Ces premières analyses univariées nous ont montré que : • Les contributions se sont accélérées au fil du temps, • 5 principaux contributeurs complètent près de 87% de la base, • Les Nutri-grades sont répartis quasi- équitablement, • Les distributions des nutri-scores semblent liées à la catégorie produit.
  • 34. Analyse de la variance : ANOVA 34 Afin de vérifier si la catégorie pnns_groups_1 influence réellement le Nutri-score nous allons réaliser une analyse de variance (ANOVA). Les hypothèses posées seront donc : • 𝐻0 : La distribution des échantillons est similaire (et donc la catégorie n’a aucune influence sur le Nutri-score) • 𝐻1 : Une ou plusieurs distributions sont inégales. L’ANOVA repose sur 3 hypothèses de départ : • Les observations dans chaque échantillon sont indépendantes et distribuées de manière identique, • Les observations dans chaque échantillon ont la même variance • Les observations de chaque échantillon sont normalement distribuées.
  • 35. Analyse de la variance : ANOVA 35 On peut voir sur ces boxplots que les catégories semblent assez différentes, même si l’ordre de grandeur des écarts est relativement faible. La question est à présent de savoir si ces écarts sont significatifs ou non via l’ANOVA.
  • 36. 36 Les résultats du test de Fisher nous indiquent ici une p- value de 0 pour l’ensemble des catégories, donc inférieur au niveau de test de 5%. Nous rejetons donc l’hypothèse 𝐻0 selon laquelle les distributions sont identiques. La catégorie de produit pnns_groups_1 a donc bien une influence sur le Nutri-score.
  • 37. Analyse des corrélations linéaires 37 Comme nous l’avons vu précédemment dans les pairplots, il existe des relations linéaires fortes entre certaines variables. Nous vérifions ces fortes corrélations pour éviter les problèmes de colinéarité dans nos modèles prédictifs. Par exemple salt et sodium ont un coefficient de corrélation linéaire de 1, il faudra donc éliminer une de ces variables. Si l’on trie le Heatmap pour afficher les corrélations avec le Nutri-score, on retrouve bien les variables qui entrent dans la formule de calcul du Pr. Hercberg (ici corrélées positivement)
  • 38. Héloïse Cartier +1 23 45 67 89 heloise@www.proseware.com Résumé: La seconde partie de cette exploration permet de vérifier que : • La catégorie produit a une influence vérifiée sur le Nutri-score, • De fortes corrélations linéaires existent entre variables nutritionnelles, • Le nutri-score est bien corrélé linéairement aux principaux groupes de variables nutritionnelles. A présent, nous allons réaliser des analyses multivariées dont la régression linéaire multivariée.
  • 39. Régression linéaire multivariée 39 Quand une variable cible est le fruit de la corrélation de plusieurs variables prédictives, on parle de régression multivariée pour faire des prédictions. Toutes ces variables prédictives seront utilisées dans notre modèle pour trouver une fonction prédictive. • 𝜖 est une constante, • 𝛼,𝛽,𝛾 représentent les coefficients de la fonction prédictive 𝐹(𝑋), • 𝑋 est un vecteur de variables prédictives. Fonction prédictive de la régression linéaire multivariée
  • 40. Les métriques analysées : MAE Mean Absolute Error, mesure la déviation absolue moyenne entre une estimation prévue et les données réelles. MSE Mean Squared Error, la distance, entre la prévision et l’observation, est ici élevée au carré. La sensibilité à l’erreur est meilleure. RMSE Root Mean Squared Error, est la racine carrée du MSE, c’est une métrique largement utilisée. R² Coefficient de détermination, c’est le carré du coefficient de corrélation linéaire. 40
  • 41. Première régression sur les variables numériques 41 Pour la première régression, seules les variables numériques ont été utilisées, à savoir les nutriments. Les métriques obtenues ont été comparées à une baseline (stratégie moyennes) : Le R² obtenu est de 0,63 et la dispersion des valeurs prédites est centrée sur la droite de régression mais assez dispersée.
  • 42. Seconde régression en ajoutant la catégorie. 42 Pour la seconde régression, en plus des données des nutriments, la catégorie pnns_groups_1 a été intégrée. Les données catégorielles ont été transformées avec un OneHotEncoder et les numériques standardisées. Le R² obtenu est de 0,77 et l’ensemble des métriques sont meilleures que sur le premier modèle.
  • 43. Héloïse Cartier +1 23 45 67 89 heloise@www.proseware.com Synthèse: La régression linéaire multivariée incluant les catégorie de produits donne des premiers résultats satisfaisants. Pour améliorer encore les performances, nous pourrions traiter d'autres types d'algorithmes comme la régression Ridge par exemple ou encore la régression lasso. Nous allons à présent réaliser une réduction de de dimensions.
  • 44. Réduction dimensionnelle par PCA 44 Analyse en Composantes Principale (PCA), l'une des méthodes d'analyse de données multivariées les plus utilisées. Elle permet d'explorer des jeux de données multidimensionnels constitués de variables quantitatives et de créer des variables synthétiques exploitables. Nous allons ici réaliser un cercle des corrélations de nos variables puis projeter les individus sur les premiers plans factoriels. Analyse en Composantes Principales
  • 45. Inertie cumulée sur les différents axes des plans factoriels 45 Afin d'avoir un aperçu du nombre de composantes nécessaire à l'analyse, nous projetons l'éboulis des valeurs propres. On constate que le premier plan factoriel (Axes 1 et 2) couvre une inertie de 49%. En ajoutant le deuxième plan factoriel (Axes 2 et 3) l’inertie totale est de 77%.
  • 46. Cercles des corrélations 46 Comme nous avons déjà étudié les corrélations entre variables, ici le coefficient de corrélation linéaire est représenté par le cosinus de l’angle entre 2 variables. Plus la pointe de la flèche est proche du cercle, plus la variable est représentative de l’axe. L’axe 𝐹1 va représenter le caractère sucré / salé du produit alors que l’axe 𝐹2 représentera le caractère énergétique. 𝐹3 représente la richesse du produit.
  • 47. Projection des produits sur ces plans factoriels 47 Une fois les 522 952 produits projetés sur les axes définis, on peut se rendre compte de la propagation des individus sur les variables synthétiques crées. Cette méthode nous permet d’éventuellement identifier des outliers sur ces différents axes.
  • 48. Qualité de représentation et contribution aux axes 48 Ces 2 métriques nous permettent de confirmer les contributions des variables à chaque axe et leur qualité de représentation. Nous allons à présent pouvoir réaliser une dernière régression linéaire multivariée sur ces variables synthétiques calculées que nous étudierons dans la partie « faits pertinents de l’application » .
  • 49. Faisabilité del’application Après ces analyses exploratoires, l’application est elle pertinente et réalisable en l’état ? 49
  • 50. Le problème des catégories de produits … 50 Comme nous l’avons vu pour les régressions linéaires multivariées, la catégorie produit a un rôle important dans la prédiction du Nutri-score. Or, si l’on se base sur la catégorie principale du produit de la base OpenFoodFacts, on en compte 26 651. Ce qui est difficilement exploitable pour un algorithme de régression. De plus, la catégorie de loin la plus représentée est : « unknown » …
  • 51. Le problème des catégories de produits … 51 La catégorie pnns_groups_1 compte quant à elle 10 catégories et 40 pour la pnns_groups_2. Elles seraient donc plus facilement exploitables mais le constat est le même. Les données inconnues sont majoritairement représentées ce qui peut fausser les mesures et la prédiction du Nutri-score. En l’état, ces problèmes de catégories mal renseignées sont un frein à la précision de l’application.
  • 52. Problème de la réduction dimensionnelle 52 La réduction de dimension, quoi que représentant bien les différentes données nutritives, ne permet pas d’améliorer les performances de la régression linéaire multivariée. Au contraire, les métriques sont très dégradées. La réduction dimensionnelle ne peut donc pas être utilisée dans notre application.
  • 53. Problème des données manquantes 53 Dans notre base de données Open Food Facts, les données manquantes sont un réel problème. 155 variables sur 184 ont un taux de remplissage inférieur à 50%. Chacun peut contribuer à cette base de données, ce qui permet d’obtenir une base large mais pas forcement vérifiée, nous l’avons vu dans les divers nettoyages. Pour obtenir des datas plus cohérentes, et compléter les valeurs manquantes, il est, je pense, impératif de coupler d’autres bases de données telles que la FoodData Central, Food Nutritional Database ou encore les bases de données de la FAO.
  • 54. Héloïse Cartier +1 23 45 67 89 heloise@www.proseware.com Conclusion: Lors de ces nettoyages et analyses exploratoires, nous avons pu évaluer la base de donnée de l’OpenFoodFacts afin de vérifier qu’elle pouvait servir de base à notre application. Données manquantes et aberrantes, modélisations encore imprécise, cette base, seule, ne peut pas suffire à évaluer les Nutri-scores et Nutri-grades avec une précision satisfaisante. Il faut donc compléter les données l’Open Food Facts avec d’autres bases de données produits ou encore repenser l’idée de départ et créer une application capable d’insérer des datas complète dans la base Open Food Facts.