logo le blog invivoo blanc

Améliorer la performance de la prédiction obtenue par machine learning

8 janvier 2021 | Beyond Data, Big Data, Machine Learning | 0 comments

Les algorithmes de Machine learning permettent de construire un modèle prédictif à partir des données historiques et de l’utiliser pour prédire les nouvelles données. La question la plus souvent posée lors du développement d’un modèle est comment obtenir de meilleures prédictions. Découvrez comment améliorer les prédictions de vos “machine learning models”.

Cet article vous donne quelques idées et techniques à essayer afin d’améliorer la performance du modèle, classées en 4 catégories :

  1. Améliorer la performance grâce aux données
  2. Améliorer la performance grâce aux algorithmes machine learning
  3. Améliorer la performance grâce aux réglages du modèle
  4. Améliorer la performance grâce aux méthodes ensemblistes

Vous n’avez pas besoin de tester toutes les techniques proposées ci-dessous. Il vous suffit d’une bonne idée, qui est bien adaptée à votre problème à résoudre, pour obtenir une augmentation de vos performances. Le principe est de trouver une idée à partir de la liste, de l’appliquer et faire des progrès sur votre modèle, puis y revenir et trouver une autre idée pour continuer.

Améliorer la performance grâce aux données

Très souvent, les changements sur les données donnent les plus gros gains de performance.
Voici quelques idées à tester sur les données :

• Collecter plus de données
Collectez plus de données ou encore mieux des données de meilleure qualité si c’est possible.
Plus un modèle dispose de données d’entraînement, plus il peut correctement prédire des observations.

• Générer des nouvelles données
Si c’est impossible de collecter plus de données, une alternative est de générer des nouvelles données qui sont statistiquement “proches” de données originales.
Techniques utilisées pour générer des données synthétiques :
• Permuter des données existantes
• Utiliser un modèle probabiliste : méthode Monte Carlo
• Utiliser une technique du deep learning : Variational Autoencoder (VAE) ou Generative adversarial network (GAN)
Voir plus : Synthetic Data Generation: Techniques, Best Practices & Tools (1)

• Nettoyer les données
Vérifiez si vous pouvez améliorer le signal de vos données.
Les données peuvent contenir des observations ou des valeurs manquantes ou incorrectes qui peuvent être corrigées ou supprimées afin d’améliorer leur qualité.

• Rééchantillonner les données
Rééchantillonnez les données pour modifier la distribution de données si nécessaire.
Cette étape est très importante dans le cas où les données sont déséquilibrées.
Sur-échantillonnage (over-sampling) ou sous-échantillonnage (under-sampling) sont les techniques permettant de représenter au mieux l’ensemble de données.

• Redimensionner les variables (Features scaling)
Il s’agit de remettre toutes les variables d’entrée (features) à même échelles numériques.
La normalisation et/ou standardisation des données d’entrée peut améliorer la performance des algorithmes qui utilisent les entrées pondérées ou les mesures de distance.
Exemples d’algorithmes où la mise à l’échelle des variables est importante :
• k-means
• k nearest neighbors (kNN)
• Principal component analysis (PCA)
• Gradient descent
Voir plus : How, When, and Why Should You Normalize / Standardize / Rescale Your Data? (2)

• Sélectionner les variables (Features selection)
Parmi toutes les variables d’entrée (features), certaines variables sont plus importantes que le reste et ont besoin d’être mises en avant.
Les techniques de sélection de variables (features selection) et des analyses d’importance de variables (features importance) permettent de créer des nouvelles vues, qui représentent des informations plus intéressantes, sur les données à explorer.

• Extraction de caractéristiques (Features engineering)
Vous pouvez créer et ajouter de nouvelles caractéristiques de données (features) qui peuvent vous aider à mieux prédire les données.
Vérifiez qu’il existe des attributs qui peuvent être décomposés en plusieurs nouvelles valeurs (comme par exemple des catégories, des dates ou des chaînes de caractères) ou des attributs qui peuvent être agrégés pour mieux décrire un évènement (comme un nombre, un indicateur binaire ou un résumé statistique).

• Transformer les données
De nombreux algorithmes machine learning fonctionnent mieux lorsque les variables numériques ont une distribution de probabilité gaussienne.
Rendre les données d’entrée plus gaussiennes ou les transformer en utilisant une fonction exponentielle permet de mieux exposer ces données à un algorithme d’apprentissage.
Voir plus : How to Use Power Transforms for Machine Learning (3)

• Projeter les données
Un grand nombre de variables d’entrée peut entraîner le surapprentissage (overfitting) du modèle et le rendre non généralisable sur les nouvelles données.
Vous pouvez utiliser une méthode de clustering ou de projection non supervisée pour projeter vos données dans un espace dimensionnel inférieur afin de réduire le surapprentissage du modèle.

Améliorer la performance grâce aux algorithmes machine learning

Il existe plusieurs algorithmes ML possibles et plusieurs “machine learning models” pour chaque tâche de prédiction. Le choix de l’algorithme dépend du problème à résoudre, des attributs extraits à partir de données ainsi que des ressources de calcul et de stockage disponibles. Le développement d’un modèle prédictif est un processus itératif, il faut parfois essayer plusieurs algorithmes avant de trouver celui qui marche le mieux.
Voici les techniques à appliquer sur un algorithme :

• Méthode de rééchantillonnage
Il est important d’utiliser une méthode de rééchantillonnage qui permet d’exploiter au mieux les données disponibles.
La validation croisée (cross validation) est la technique la plus utilisée. Les données devraient être réparties en 3 ensembles pour l’apprentissage, la validation et le test.

• Métrique d’évaluation
La performance d’un modèle de classification dépend directement de la métrique utilisée pour l’évaluer. Pour chaque tâche, la métrique d’évaluation est différente. Il est important d’employer une métrique qui capte le mieux les exigences du problème.

• Performance référentielle
Pour mieux évaluer et comparer les algorithmes, il est important de bien définir un modèle simple (baseline) utilisé comme un point de référence afin de comparer les performances de vos machine learning models.
Exemples de baseline :
• Algorithme aléatoire : le modèle prédit une classe aléatoire parmi celles observées dans les données d’apprentissage pour chaque donnée de test.
• Algorithme zero-rule : le modèle prédit la classe la plus courante dans l’ensemble de données d’apprentissage pour chaque donnée de test.
Voir plus : How To Implement Baseline Machine Learning Algorithms From Scratch With Python (4)

• Tester quelques algorithmes linéaires
Les algorithmes linéaires sont souvent plus faciles à comprendre et permettent d’entrainer rapidement le modèle. Dans le cas que ces méthodes linéaires donnent un bon résultat de prédiction, il faut les privilégier parce qu’elles sont plus simples à améliorer ou modifier par rapport aux méthodes non-linéaires.
Evaluez plusieurs méthodes linéaires pour déterminer les algorithmes linéaires qui fonctionnent bien, leurs avantages et leurs points faibles.

• Tester quelques algorithmes non-linéaires
Les algorithmes non-linéaires nécessitent souvent beaucoup plus de données. Ils sont souvent plus complexes et compliqués mais peuvent donner une meilleure performance.
Evaluez différents méthodes non-linéaires pour déterminer quels algorithmes non linéaires fonctionnent bien.

• Tester quelques algorithmes de la littérature
Peut-être que vous pouvez avoir des idées de types d’algorithmes ou d’extensions de méthodes mentionnées dans la littérature du domaine pour résoudre votre propre problème.

• Standard configuration
Chaque algorithme a besoin d’une configuration de base différente afin de faire correctement la tâche de prédiction. Dans cette étape, nous ne réglons pas encore les paramètres, mais nous étudions plutôt comment configurer chaque algorithme et comment lui donner une chance de pouvoir résoudre le problème.

Améliorer la performance grâce aux réglages du modèle

Le réglage de l’algorithme (algorithm tuning) est l’étape la plus chronophage lors du développement d’un modèle.
Vous pouvez souvent dénicher rapidement un ou deux algorithmes performants grâce aux étapes précédentes lors de tests des algorithmes possibles. Obtenir la meilleure performance de ces algorithmes peut prendre des jours, des semaines ou des mois.

• Diagnostics des algorithmes
Examiner la courbe d’apprentissage pour voir si l’algorithme utilisé sur-apprend (overfitting) ou sous-apprend (underfitting) le problème étudié. Cela permet à mieux identifier les pistes d’amélioration possibles.

• Utiliser la configuration citée dans la littérature
Commencer à faire un modèle en utilisant les paramètres cités dans la littérature. L’évaluation des performances des paramètres standards est un bon point de départ pour tous les réglages de machine learning models.

• Grid search
Le grid search permet de trouver de bonnes configurations du modèle à partir des valeurs d’hyperparamètres que vous pouvez énumérer. Vous pouvez commencer le grid search avec les valeurs standards puis répéter le processus avec des grilles de valeurs de plus en plus fines.

• Optimisation
Il existe peut-être des paramètres utilisés par le modèle que vous pouvez optimiser.
Par exemple, le taux d’apprentissage (learning rate) peut être optimisé par une procédure de recherche directe (comme la recherche de pattern) ou par une optimisation stochastique (comme un algorithme génétique).

• Personnalisation d’algorithme
Il est important de personnaliser un algorithme afin de mieux l’adapter aux besoins d’un problème spécifique. La personnalisation pourra être faite par exemple dans la fonction de coût ou dans la méthode d’optimisation employée. Cela permet au machine learning models de prendre en compte les particularités présentes dans vos données.

Améliorer la performance grâce aux méthodes ensemblistes

Vous pouvez combiner les prédictions de plusieurs machine learning models. En fait, vous pouvez souvent obtenir de bonnes performances en agrégeant les modèles ayant des résultats divergents, mais pouvant être chacun spécialisés sur des parties différentes de la data.

• Merger les prédictions de plusieurs modèles
Il s’agit d’utiliser un seul algorithme (avec différentes configurations) ou plusieurs algorithmes différents pour apprendre plusieurs modèles, puis de combiner directement ces prédictions en prenant la moyenne ou utilisant un autre mode d’agrégation plus adapté.

• Merger les prédictions obtenues sur différentes représentations de données
Il s’agit d’utiliser différentes représentations de données (features extraction) et puis d’entraîner des modèles (un modèle pour une représentation). Cela permet d’avoir de nombreuses projections différentes de votre problème. La décision finale est prise en combinant les prédictions données par ces modèles.

• Merger les prédictions obtenues sur différents échantillons de données
Il s’agit d’entraîner différents modèles sur différentes vues de données. Vous pouvez diviser vos données en plusieurs sous-échantillons et puis appliquer un algorithme performant afin d’avoir différentes prédictions sur ces échantillons. Enfin, vous allez combiner ces prédictions, par exemple par un vote de majorité pour la classification.
Cette méthode s’appelle bootstrap aggregating ou bagging. Elle fonctionne mieux lorsque les prédictions de chaque modèle sont pertinentes mais sont basées sur différentes vues de données (non corrélées).

• Stacking
Le stacking permet d’apprendre à combiner au mieux les modèles qui sont individuellement performants. Cela inclus 2 étapes d’apprentissage : d’abord différents modèles sur les données et ensuite un classifieur sur les prédictions obtenues par les modèles individuels. Autrement dit, il s’agit de prédire quels sont les meilleurs modèles et de les pondérer. Ce processus peut être répété plusieurs fois.

Références :