How To #1: Valider son dataset avec prevision.io

Comment valider un dataset  pour un projet de machine Learning de manière rapide et simple grâce à la plateforme automatisée prevision.io

Cette étape est importante car elle permet d'éviter de lancer des projets d'ampleur autour de données mal préparées ou au potentiel prédictif trop faible pour justifier les coûts d'un projet de machine Learning.

Souvent négligée, cette étape doit se faire en concertation avec les personnes responsables de la fabrication du dataset.

Nature du dataset

A titre d’illustration pour ce how-to , nous utiliserons un dataset de jeux vidéo open source mais notre plateforme étant agnostique du cas d’usage, ces conseils s’appliquent à toute thématique.

Il se présente sous forme tabulaire et chaque ligne est constituée de colonnes séparées par des points-virgule.

Chaque ligne représente un jeu vidéo avec à minima  son nom, qui servira d'index, et la note moyenne attribuée par les utilisateurs, qui fera office de cible à prédire.

Il y a aussi un certain nombres de caractéristiques comme une description textuelle, l'identité du studio de développement ou encore des tags.

Avant d'envisager la création de modèles prédictifs, il convient de vérifier 3 points importants sur la qualité des données:

  • Le dataset est-il bien formé (hétérogénéité des colonnes, peu de données manquantes...) ?
  • Présente-t-il un leak  évident de données ?
  • il y a-t-il un signal prédictif exploitable qui justifierait le lancement d'un projet plus important ?

Pour répondre à ces 3 questions avec la plateforme prevision.io , la démarche est simple : il suffit d'uploader le dataset et de cliquer sur "Entraîner" !

Vérifier le dataset

Muni d'un compte prevision.io , rendez vous sur la page d'entrainement

Valider la cible

Lorsque vous uploadez un dataset via la page "Nouveau Projet", la plateforme effectue une détection automatique du type d'entraînement possible d'après la cible que vous avez choisie.

En sélectionnant la cible, vous pouvez vérifier ce que la détection automatique vous propose et ainsi vous assurer que les données que vous avez relevé sont bien cohérentes avec la nature de la cible que vous souhaitez apprendre :

  • Classification: la cible doit être binaire, de type OUI/NON ou FAUX/VRAI. Il peut s'agir par exemple de la prévision de churn  ou de fraude?
  • Multi-Classification : il s'agit ici d'apprendre une classe comme rouge/vert/bleu ou MAUVAIS/MOYEN/BON.
  • Régression : ce cas ne s'applique qu'aux cibles présentant une série de valeurs ordonnées comme un volume de chiffre d'affaire, une consommation énergétique ou un nombre de voyageurs sur une rame par exemple.

Si le type d'entrainement que vous propose la plateforme par défaut n'est pas celui auquel vous vous attendiez, cela peut provenir d'une erreur dans la colonne Cible.

Les erreurs les plus courantes sont :

  • présence d'une valeur incongrue dans le cas d'une classification binaire.La plateforme vous propose alors une multi-classification au lieu d'une classification
  • présence d'une valeur autre qu'un nombre dans un problème de régression. La plateforme vous proposera alors une multi-classification au lieu d'une régression.
Dans le cas présent, la cible à prédire est une note entre 0 et 10. Ce problème peut être vu soit comme une régression, prédire une note entre 0 et 10, soit une multi-classification, prédire une note qui peut être 0,1,2... 9 ou 10.

Validation

status

Cible présente

OK

Valeurs de la cible représentative du problème

OK

Vérifier ses données grâce à l'onglet Analyse des données

Une fois le dataset envoyé sur les serveurs prevision.io, la plateforme va rapidement proposer une analyse statistique du dataset. Celle-ci se retrouve sur la page Overview  sous l'onglet "Analyse des données".

Equilibre de la distribution

En plus de la matrice de corrélation qui va parfois vous permettre de détecter des leak évident, le tableau d'analyse de données vous propose différentes statistiques sur chacune de vos features . Le dataset doit être relativement équilibré et ne présenter aucune modalité en surnombre par rapport aux autres. Si ce n’est pas le cas, les modèles ne tireront aucune valeur prédictive de cette feature  mais surtout cela peut signifier que votre dataset est biaisé.

Validation

status

Cible présente

OK

Valeurs de la cible représentative du problème

OK

Distribution équilibrée

OK

Valeurs manquantes

L'onglet présente aussi le taux de valeurs manquantes avec un code couleur adapté. Il est souvent utile de vérifier ce taux de valeur manquante et de comprendre l'origine des valeurs manquantes. Est-ce un problème dans la chaîne de production du dataset ? Un réel manque à la collecte des données (un champ de formulaire non rempli par les utilisateurs par exemple) ?

Validation

status

Cible présente

OK

Valeurs de la cible représentative du problème

OK

Distribution équilibrée

OK

Taux de valeurs manquante faible

OK

Vérifier les leak grâce à l'onglet Importance des variables

Modèle régressif 1 : prédiction de la note

Après avoir fait une analyse statistique triviale la plateforme calcule son 1er modèle ainsi que le feature importance  associée. Ce feature importance  représente le poids de chaque variables dans la prédiction de la cible, ici la note utilisateur d'un jeu vidéo.

L'analyse humaine de cet onglet permet de s'interroger sur la présence d'une fuite d'information c'est à dire d'une variable extrêmement corrélé avec la cible.

L'importance prédominante d'une seule variable peut signifier 2 choses :

  • le problème est simple et il suffit de connaître cette variable pour prédire la cible (et dans ce cas le recours à une de ML peut s’avérer inutile)
  • plus souvent, le dataset présente un leak c'est à dire qu'une de ses variables est en fait une variation indirecte de la cible à prédire. Cela dénote souvent une mauvaise construction du dataset.

Sur ce dataset Jeu vidéo, le nombre de notes ( user_review_count ) attribuées à un jeu est clairement un doublon de la note attribuée car les meilleurs jeux attirent plus de notes. Cette variable user_review_count  ne présente à priori pas d'intérêt prédictif. Nous décidons donc de l’ôter du dataset initial pour poursuivre notre explication.

Validation

status

Cible présente

OK

Valeurs de la cible représentative du problème

OK

Distribution équilibrée

OK

Taux de valeurs manquante faible

OK

Absence de doublon de la cible

KO

Vérifier la présence de signal grâce à l'onglet Analyse du modèle.

Modèle régressif 2 : prédiction de note

Le nouveau modèle va être établi en enlevant la colonne user_review_count  des variables utilisées par le modèle. Cela peut être fait en éditant le fichier csv ou directement dans l'interface prévision en décochant la case "à utiliser" afin de prévenir la plateforme que cette variable ne doit pas être utilisée pour effectuer des prédictions. L'entraînement demandé est une régression.

Au bout d'une dizaine de minute, une analyse complète du modèle prédictif est disponible dans l'onglet "Analyse du modèle" de la page overview

Le modèle ne présente plus de leak mais ses performances sont exceptionnellement mauvaises : 6.88 pt d'erreur en moyenne sur une note allant de 0 à 10 !

L'analyse de la courbe des valeurs prédites vs les valeurs réelles donne une indication sur la source du problème : les jeux qui ont une note de 0 dans le dataset sont prédits avec des notes allant de 0 à 8.

Cela signifie souvent que la note 0 recouvre un panel très large et différent de jeux et que soit les notes attribuées sont plus ou moins aléatoires (ou dépendent de paramètre inconnus), soit , plus probable, que la valeur 0 a été utilisée par défaut en remplacement d'une valeur manquante !

Pour vérifier cela, nous éditons le dataset pour enlever de l'apprentissage tous les jeux dont la note est 0.

Validation

status

Cible présente

OK

Valeurs de la cible représentative du problème

OK

Distribution équilibrée

OK

Taux de valeurs manquante faible

OK

Absence de doublon de la cible

OK

Absence de bruit aléatoire dans le dataset

KO

Modèle régressif 3 : prédiction de note autre que 0

En enlevant les 0 , la qualité de prédiction s'est nettement amélioré, accréditant la thèse que les notes 0 étaient un substitut de valeurs manquantes ! L’erreur absolue moyenne est de 0,94 pt

De plus, si l'on effectue une prédiction sur un jeu de données inconnues mis de côté sur les plus vendus, on constate que le modèle se trompe très peu :

name

note prédite

note obtenue

Stardew Valley

9

10

Starbound

8

9

Fallout: New Vegas

8

9

Wolfenstein: The New Order

8

9

XCOM 2

8

7

Wolfenstein: The New Order German Edition

8

9

Five Nights at Freddy's

9

9

Deus Ex: Human Revolution - Director's Cut

9

9

World of Tanks Blitz

7

7

METAL GEAR SOLID V: GROUND ZEROES

8

9

Grand Theft Auto: Vice City

9

9

Far Cry 2

9

7

The Elder Scrolls V: Skyrim Special Edition

8

9

BRINK

8

6

Brink Podcast 4

8

6

Star Wars Republic Commando

9

9

Dragon Age: Origins

9

9

Aliens: Colonial Marines

8

6

warhammer dawn of war

9

9

Cependant, dans un cadre d'utilisation réel, au lieu de prédire la note il peut parfois être plus pratique de prédire la catégorie de succès d'un jeu.

Dans notre cas, nous allons arbitrairement répartir les jeux en 3 catégories :

  • note <= 5 : "CRAPS"
  • 5 < note <= 7 : "MEDIUM"
  • 7 < note : "BESTOF"
Modèle de classification 4 : prédiction de catégorie de note

Le dataset est modifié pour créer une nouvelle colonne "rank" qui peut prendre 3 valeurs :

  • CRAPS
  • MEDIUM
  • BESTOF

Un nouveau use case est créée avec cette fois ci "multi-classification" comme type d'entraînement et "rank" comme cible.

Encore une fois les performances du modèle sont disponibles dans l'onglet "Analyse du modèle".

Cette fois ci , comme il s'agit d'une multi-classification le score est détaillé par classe :

  • 70% des BESTOF sont détectés (Rapell) et 68 % des jeux prédit comme BESTOF en sont vraiment (Précision)
  • Par contre, seulement 7,2% des jeux CRAPS sont prédit mais quand un jeu est annoncé comme "CRAPS", il l'est réellement dans 70% des cas.

De plus on trouve une matrice de confusion :

qui nous dit entre autre que 13% des prédictions sont des jeux prédits comme BEST OF et qui s'avèreront finalement être "medium".

Conclusion

Malheureusement, ce dataset ne permet dans tous les cas pas d'établir un modèle prédictif très puissant, car il manque sans doute de variables, mais on a pu voir qu'un travail simple effectué sur le dataset initial nous permet tout de même de générer des prédictions intéressantes.

Même un outil aussi puissant que la plateforme prevision.io  ne permet pas encore de deviner les objectifs poursuivis par la modélisation. Il est important, avant de lancer une industrialisation des modèles qu'un expert intervienne en amont pour définir exactement les cibles et les variables de la modélisation afin que celle-ci présente un réel intérêt opérationnel.

Pour tester vous aussi diverses modélisations, vous pouvez vous inscrire gratuitement sur la version en-ligne de la plateforme .

N’hésitez pas à nous faire part de vos retours d’expérience, de vos commentaires ou à nous envoyer vos questions!

Our Latest
News