forester : la simplicité d'AutoML

Mar 09 2023
Dans ce blog, nous aimerions décrire en détail la fonction principale du paquetage forestier appelé train(). Nous nous concentrerons sur le fonctionnement de certaines étapes et sur la façon dont l'utilisateur peut façonner le processus de formation.

Dans ce blog, nous aimerions décrire en détail la fonction principale du paquetage forestier appelé train(). Nous nous concentrerons sur le fonctionnement de certaines étapes et sur la façon dont l'utilisateur peut façonner le processus de formation. Le concept du package est décrit dans les articles de blog précédents présentant le package, le décrivant plus en détail et fournissant un scénario de cas d'utilisation .

Les composants de la fonction train().

Rapport de vérification des données

La première étape du pipeline AutoML consiste à exécuter la fonction check_data() qui fournit à l'utilisateur des informations sur un ensemble de données donné divisé en quelques catégories :

  1. Informations de base : nombre d'entités et d'observations, noms de colonnes et nom de la valeur cible.
  2. Colonnes statiques : fournit le nom et la valeur dominante des colonnes statiques (où plus de 99 % des observations ont la même valeur).
  3. Colonnes dupliquées : Informe sur les colonnes qui ont des valeurs identiques.
  4. Champs manquants : indique le nombre d'observations pour lesquelles il manque des valeurs de prédicteur ou de cible.
  5. Vérification de la dimensionnalité : informe si l'ensemble de données donné a trop de colonnes à gérer pour les modèles basés sur l'arbre (plus de 30 entités), ou s'il y a plus de colonnes que de lignes.
  6. Fonctionnalités corrélées : affiche les valeurs catégorielles ou numériques fortement corrélées (> 0,7), selon le coefficient de corrélation V de Crammer et le rang de Spearman respectivement.
  7. Valeurs aberrantes : détecte les valeurs aberrantes dans l'ensemble de données. Une observation est considérée comme une valeur aberrante lorsqu'elle satisfait trois critères basés sur les valeurs de l'écart type moyen, de l'écart absolu médian et de l'intervalle interquartile.
  8. Balance cible : Informe si les valeurs cibles sont déséquilibrées et imprime les valeurs de déséquilibre. La proportion maximale déséquilibrée pour la classification binaire est de 40 % à 60 %, et pour la régression, nous calculons les 4 classes quantiles et la proportion d'observations à l'intérieur de la classe la plus grande et la plus petite doit être comprise entre 40 % et 60 %.
  9. Détection de colonne d'ID : détecte si une colonne peut être un identifiant. Il est considéré comme une fonctionnalité d'identification si son nom l'indique ou si ses valeurs augmentent de un à chaque ligne.

Prétraitement

Le prétraitement est la première fonction exécutée à l'intérieur du pipeline train() . Il augmente la qualité générale de la trame de données en quelques étapes présentées ci-dessous :

  1. Suppression des colonnes statiques détectées lors de la vérification des données.
  2. Binarisation de la cible dans les classes '1' et '2' pour la tâche de classification binaire.
  3. Imputation des valeurs manquantes avec l' algorithme MICE .
  4. Suppression des caractéristiques hautement corrélées (>0,7) de l'ensemble de données (une caractéristique par paire).
  5. Suppression des colonnes id.
  6. Sélection de fonctionnalités avec l' algorithme BORUTA .
  7. Enregistrement des informations sur les colonnes supprimées.

Préparation des données

Dans cette étape, nous divisons d'abord l'ensemble de données donné en ensembles de données d'entraînement, de test et de validation en fonction du paramètre set train() appelé train_test_split . La méthode utilisée pour le fractionnement provient du package splitTools , qui nous permet d'équilibrer les jeux de données renvoyés.

Les trames de données sortantes sont ensuite transformées pour chaque moteur de modèle, car chaque modèle a des besoins et des attentes différents pour les données entrantes. Par exemple, le modèle xgboost nécessite un encodage à chaud et lightgbm n'accepte que les ensembles de données dans son propre format. Au cours de cette étape, nous nous assurons également que chaque colonne catégorielle a le niveau "autre" qui ressemble aux données invisibles dans l'ensemble de données d'apprentissage.

Formation et réglage du modèle

Cette étape implique la formation de jusqu'à 5 moteurs de modèles basés sur des arbres, à savoir : random forest , xgboost , decision tree , lightgbm et catboost . Chacun d'eux est livré avec un hyperparamètre différent défini dans la phase de réglage. La formation et le réglage sont effectués dans 3 voies sensiblement différentes.

Paramètres par défaut

La méthode de base, qui est toujours présente pendant le processus, consiste à former des modèles sélectionnés avec les paramètres par défaut. Cette méthode est rapide et fournit à l'utilisateur un modèle de base, qui peut être une comparaison décente pour des méthodes d'optimisation plus avancées.

Recherche aléatoire

Cette méthode forme les modèles avec des paramètres qui sont les résultats de la recherche aléatoire à partir d'un espace d'hyperparamètres définis individuellement pour chaque modèle. Le nombre de modèles entraînés par la méthode est décrit par le paramètre train() appelé random_evals . La valeur 5 signifie que la recherche aléatoire produira 5 modèles pour chaque moteur.

Optimisation bayésienne

La dernière méthode est la plus avancée car elle effectue une optimisation bayésienne à partir du package ParBayesianOptimisation afin de former un meilleur modèle à chaque itération. Cette méthode est la plus efficace et la plus chronophage. Le nombre d'itérations d'optimisation est décrit par les paramètres train() appelés bayes_iter . Plus l'utilisateur définit d'itérations, plus le processus de formation est long, mais l'algorithme couvre également une plus grande partie de l'espace des hyperparamètres.

Évaluation du modèle

L'évaluation du modèle est effectuée à la fin du processus AutoML et les résultats sont présentés sous la forme d'une liste triée de modèles. La liste contient des colonnes décrivant l'index du modèle, son nom unique, le moteur du modèle, la méthode de réglage et des colonnes impliquant les métriques d'évaluation, qui diffèrent selon le type de tâche.

Pour la classification binaire, nous calculons la précision, AUC ROC (aire sous la courbe ROC), f1, le rappel et la précision, alors que pour la régression, ce sont : RMSE (erreur quadratique moyenne enracinée), MSE (erreur quadratique moyenne), R2, MAD (écart absolu médian) et MAE (erreur absolue moyenne).

L'utilisateur peut également fournir sa propre fonction avec les paramètres train() appelés metric_function et metric_function_name . On peut également sélectionner les métriques qui seront calculées ( metrics ) et changer par lesquelles la liste classée sera triée ( sort_by ).

Objet de sortie

En sortie, l'utilisateur obtient une liste contenant plus de 20 objets différents, qui sont brièvement décrits dans la documentation de train() . Ils couvrent les différents ensembles de données d'entraînement, de test et de validation utilisés pendant la formation, les prédictions sur des ensembles de données donnés et leurs valeurs observées, le rapport de données de vérification, une liste de valeurs aberrantes, des modèles entraînés et bien d'autres. Cependant, les plus importantes sont les listes classées pour les ensembles de données d'apprentissage, de test et de validation qui sont nommés score_train, score_test et score_valid.

Avec l'objet de sortie, l'utilisateur peut facilement créer un rapport décrivant le processus de formation ou expliquer le modèle.

Dans le prochain article de blog, nous examinerons les rapports générés automatiquement présents dans le package. Nous décrirons un schéma général du document et décrirons toutes les informations présentes pour les rapports de tâches de classification binaire et de régression.

Si vous êtes intéressé par d'autres articles sur le ML explicable, équitable et responsable, suivez #ResponsibleML sur Medium.
Pour voir plus de contenu lié à R, visitezhttps://www.r-bloggers.com.