Automatiser les processus de formation des modèles d’apprentissage automatique, Excel VBA
L’automatisation des processus de formation des modèles d’apprentissage automatique dans Excel à l’aide de VBA (Visual Basic for Applications) est un défi intéressant. Bien qu’Excel ne soit pas l’outil le plus optimal pour l’entraînement des modèles d’apprentissage automatique (qui sont mieux réalisés avec des langages comme Python, R ou des outils spécialisés), il est possible d’automatiser certaines étapes, telles que le prétraitement des données, la formation de modèles simples, et l’évaluation des performances du modèle.
Objectif
L’objectif de ce code est d’automatiser une série de tâches d’apprentissage automatique dans Excel, telles que :
- Importation et prétraitement des données.
- Entraînement d’un modèle de régression linéaire ou de classification simple.
- Évaluation du modèle sur de nouvelles données (test).
- Affichage des résultats dans une feuille Excel.
Pré-requis
- Des données sous forme de tableau dans Excel (par exemple, des valeurs d’entraînement et de test).
- Un modèle simple comme la régression linéaire (parce qu’Excel peut le gérer avec ses fonctions intégrées).
- L’utilisation de VBA pour automatiser la formation et l’évaluation du modèle.
Code VBA pour Automatiser la Formation d’un Modèle
Voici un exemple d’un code VBA détaillé pour automatiser l’entraînement d’un modèle de régression linéaire et prédire les valeurs en utilisant les données d’entraînement :
Sub AutomatiserFormationModeles() ' Déclarations des variables Dim plageDonnees As Range Dim plageX As Range Dim plageY As Range Dim model As Object Dim predictions As Variant Dim i As Integer Dim feuille As Worksheet Dim dernierLigne As Long ' Initialiser la feuille active Set feuille = ThisWorkbook.Sheets("Données") ' Identifier la plage de données (colonnes X et Y) dernierLigne = feuille.Cells(feuille.Rows.Count, 1).End(xlUp).Row ' Dernière ligne avec des données dans la colonne 1 Set plageDonnees = feuille.Range("A2:B" & dernierLigne) ' Plage d'entraînement (ex. données dans les colonnes A et B) ' Séparer X et Y (Caractéristiques et Cibles) Set plageX = feuille.Range("A2:A" & dernierLigne) ' Variables indépendantes (X) Set plageY = feuille.Range("B2:B" & dernierLigne) ' Variables dépendantes (Y) ' Appliquer la régression linéaire via l'outil d'analyse d'Excel Application.AddIns("Analysis ToolPak").Installed = True ' Vérifier si l'outil Analysis ToolPak est installé Application.Run "ATPVBAEN.XLA!Regress", plageY, plageX, False, True, , , , , , , , , False ' Récupérer les coefficients du modèle de régression linéaire ' Le résultat est stocké dans la feuille "Données" à partir de la colonne D (par défaut) Dim intercept As Double Dim coef As Double intercept = feuille.Range("D3").Value ' Intercept coef = feuille.Range("D4").Value ' Coefficient de X ' Afficher les coefficients dans la feuille feuille.Cells(1, 4).Value = "Intercept" feuille.Cells(2, 4).Value = intercept feuille.Cells(1, 5).Value = "Coefficient" feuille.Cells(2, 5).Value = coef ' Prédire les valeurs pour de nouvelles données (Test) For i = 2 To dernierLigne ' Formule de prédiction: Y = a + b*X (Régression linéaire) feuille.Cells(i, 6).Value = intercept + coef * feuille.Cells(i, 1).Value ' Résultat prédit (colonne F) Next i ' Calculer et afficher l'erreur quadratique moyenne (RMSE) Dim erreur As Double Dim sommeErreur As Double sommeErreur = 0 For i = 2 To dernierLigne erreur = feuille.Cells(i, 6).Value - feuille.Cells(i, 2).Value ' Différence entre prédiction et valeur réelle sommeErreur = sommeErreur + (erreur ^ 2) Next i Dim rmse As Double rmse = Sqr(sommeErreur / (dernierLigne - 1)) ' Racine carrée de la moyenne des erreurs au carré ' Afficher RMSE dans la feuille feuille.Cells(1, 7).Value = "RMSE" feuille.Cells(2, 7).Value = rmse End Sub
Explications du Code
- Initialisation des variables :
- plageDonnees, plageX et plageY font référence aux données d’entraînement. plageX correspond aux variables indépendantes (features), et plageY aux variables dépendantes (cibles).
- Préparation des données :
- Les données sont extraites à partir de la feuille « Données » dans les colonnes A (X) et B (Y), à partir de la ligne 2 jusqu’à la dernière ligne remplie.
- Régression Linéaire avec l’outil d’Excel :
- Le code utilise l’outil intégré d’Excel « Analysis ToolPak » pour effectuer une régression linéaire. Cela génère les coefficients de régression (l’intercept et les coefficients pour chaque variable X).
- Prédiction des valeurs :
- Le modèle prédit les valeurs en utilisant la formule de la régression linéaire Y=a+bXY = a + bXY=a+bX, où aaa est l’intercept et bbb est le coefficient de X.
- Calcul de l’erreur (RMSE) :
- L’erreur quadratique moyenne (RMSE) est calculée pour évaluer la précision du modèle. La RMSE mesure la différence moyenne entre les valeurs prédites et réelles, ce qui permet de juger de la qualité du modèle.
- Affichage des résultats :
- Le code affiche l’intercept et le coefficient dans la feuille Excel, ainsi que les valeurs prédites et l’erreur RMSE.
Exécution
- Ouvrez votre fichier Excel et assurez-vous que vos données d’entraînement sont présentes sous forme de tableau dans la feuille « Données ».
- Appuyez sur Alt + F11 pour ouvrir l’éditeur VBA.
- Dans l’éditeur, cliquez sur Insertion > Module et collez le code VBA.
- Fermez l’éditeur VBA et exécutez la macro à partir de Alt + F8, puis sélectionnez AutomatiserFormationModeles.
Limitations et Améliorations
- Modèle Simple : Ce code applique une régression linéaire simple. Pour des modèles plus complexes, comme les forêts aléatoires, les réseaux de neurones, etc., vous devrez utiliser un langage comme Python ou des outils externes.
- Outil d’Analyse : La régression linéaire d’Excel via le « ToolPak » est une bonne option pour des modèles simples, mais pour des modèles plus avancés, il faudrait envisager d’intégrer Excel avec Python ou d’utiliser un autre outil externe.
- Prétraitement des Données : Vous pouvez étendre ce code pour inclure des étapes de nettoyage et de préparation des données, comme la gestion des valeurs manquantes ou la normalisation.
Cela devrait vous donner une idée de base pour automatiser l’entraînement de modèles simples dans Excel avec VBA.