Aller au contenu principal

Préparation des données pour la régression

Cet article décrit comment AutoML prépare les données pour l'entraînement de régression et décrit les paramètres de données configurables. Vous pouvez ajuster ces options lors de la configuration de l’expérimentation dans l’interface utilisateur d’AutoML.

Pour configurer ces paramètres à l’aide de l’ API AutoML, référez-vous à la référence de l’API Python AutoML.

Types de fonctionnalités de données pris en charge

Seuls les types de fonctionnalités listés ci-dessous sont pris en charge. Par exemple, les images ne sont pas prises en charge.

Les types de fonctionnalités suivants sont pris en charge :

  • Numérique (ByteType, ShortType, IntegerType, LongType, FloatType et DoubleType)
  • Booléen
  • Chaîne (catégorielle ou texte en anglais)
  • Timestamps (TimestampType, DateType)
  • ArrayType[Numeric] (Databricks Runtime 10.4 LTS ML et versions ultérieures)
  • DecimalType (Databricks Runtime 11.3 LTS ML et versions ultérieures)

Imputer les valeurs manquantes

Dans Databricks Runtime 10.4 LTS ML et versions ultérieures, vous pouvez spécifier comment les valeurs nulles sont imputées. Dans l'interface utilisateur, sélectionnez une méthode dans le menu déroulant de la colonne **Imputer avec** du schéma de la table. Dans l'API, utilisez le paramètre imputers. Pour plus d'informations, consultez la référence de l'API AutoML Python.

Par default, AutoML sélectionne une méthode d'imputation en fonction du type et du contenu de la colonne.

remarque

Si vous spécifiez une méthode d'imputation non-default, AutoML n'effectue pas de détection de type sémantique.

Sélection de colonne

Dans Databricks Runtime 10.3 ML et versions ultérieures, vous pouvez spécifier les colonnes qu'AutoML doit utiliser pour l'entraînement. Pour exclure une colonne dans l'interface utilisateur, décochez-la dans la colonne Inclure . Dans l'API, utilisez le paramètre exclude_cols. Pour plus d'informations, consultez la référence de l'API AutoML Python.

Vous ne pouvez pas supprimer la colonne sélectionnée comme cible de prédiction ou comme colonne temporelle pour diviser les données.

By default, toutes les colonnes sont incluses.

Diviser les données en ensembles d'entraînement, de validation et de test

AutoML divise vos données en trois partitions pour l'entraînement, la validation et le test. Selon le type de problème de ML, vous avez différentes options pour diviser les données.

Utilisez les méthodes suivantes pour diviser les données en ensembles d'entraînement, de validation et de test :

(**default**)**Répartition aléatoire** : Si aucune stratégie de répartition des données n'est spécifiée, le dataset est réparti de manière aléatoire en 60 % pour l'entraînement, 20 % pour la validation et 20 % pour les tests. Pour la classification, un partage aléatoire stratifié garantit que chaque classe est représentée de manière adéquate dans les ensembles d’entraînement, de validation et de test.

**Fractionnement chronologique** : dans Databricks Runtime 10.4 LTS ML et versions ultérieures, vous pouvez sélectionner une colonne d'heure pour créer des fractionnements chronologiques d'entraînement, de validation et de test. Les fractionnements chronologiques utilisent les premiers points de données pour l'entraînement, les suivants pour la validation et les derniers points pour le test. La colonne d'heure peut être une colonne Timestamp, un entier ou une colonne de chaîne.

Fractionnement manuel : dans Databricks Runtime 15.3 ML et versions supérieures, vous pouvez utiliser l'API pour configurer un fractionnement manuel. Spécifiez une colonne de fractionnement et utilisez les valeurs train, validate ou test pour identifier les lignes que vous souhaitez utiliser pour les datasets d'entraînement, de validation et de test. Toutes les lignes dont les valeurs de colonne de fractionnement sont différentes de train, test ou validate sont ignorées et une alerte correspondante est déclenchée.

Échantillonnage de grands datasets

Bien qu'AutoML distribue les essais d'optimisation des hyperparamètres sur les nœuds worker d'un cluster, chaque modèle est entraîné sur un seul nœud worker.

AutoML estime automatiquement la mémoire requise pour charger et entraîner votre dataset et échantillonne le dataset si nécessaire.

Version de Databricks Runtime

Comportement d'échantillonnage

9.1 LTS ML - 10.4 LTS ML

La fraction d'échantillonnage est constante et **ne dépend pas** du type de nœud du cluster ou de la mémoire par nœud.

11.x ML

Le taux d'échantillonnage augmente pour les nœuds Worker disposant de plus de mémoire par cœur. Pour augmenter la taille d'échantillon :

  • Utilisez un type d’instance **à mémoire optimisée**.
  • Ajustez spark.task.cpus dans la configuration Spark. La valeur default est 1, et la valeur maximale est le nombre de CPU sur le nœud Worker. La valeur maximale est le nombre de CPU sur le nœud Worker. Lorsque vous augmentez cette valeur, la taille de l'échantillon est plus grande, mais moins d'essais s'exécutent en parallèle.

Exemple : Sur une machine avec 4 cœurs et 64 Go de RAM :

  • Avec spark.task.cpus=1, quatre essais sont exécutés par worker, chacun utilisant 16 Go de RAM.
  • Avec spark.task.cpus=4, un essai est exécuté par Worker, en utilisant les 64 Go de RAM.

11.3 LTS ML et versions supérieures

Si AutoML échantillonne le dataset, la fraction d’échantillonnage est affichée dans l’onglet tab de l’interface utilisateur.

12,2 LTS ML et versions ultérieures

AutoML peut gérer des jeux de données plus volumineux en allouant davantage de cœurs de CPU par tâche d'entraînement. Augmentez la taille de l'échantillon en sélectionnant une instance avec davantage de mémoire totale.

Version de Databricks Runtime

Comportement d'échantillonnage

9.1 LTS ML - 10.4 LTS ML

La fraction d'échantillonnage est constante et **ne dépend pas** du type de nœud du cluster ou de la mémoire par nœud.

11.x ML

Le taux d'échantillonnage augmente pour les nœuds Worker disposant de plus de mémoire par cœur. Pour augmenter la taille d'échantillon :

  • Utilisez un type d’instance **à mémoire optimisée**.
  • Ajustez spark.task.cpus dans la configuration Spark. La valeur default est 1, et la valeur maximale est le nombre de CPU sur le nœud Worker. La valeur maximale est le nombre de CPU sur le nœud Worker. Lorsque vous augmentez cette valeur, la taille de l'échantillon est plus grande, mais moins d'essais s'exécutent en parallèle.

Exemple : Sur une machine avec 4 cœurs et 64 Go de RAM :

  • Avec spark.task.cpus=1, quatre essais sont exécutés par worker, chacun utilisant 16 Go de RAM.
  • Avec spark.task.cpus=4, un essai est exécuté par Worker, en utilisant les 64 Go de RAM.

11.3 LTS ML et versions supérieures

Si AutoML échantillonne le dataset, la fraction d’échantillonnage est affichée dans l’onglet tab de l’interface utilisateur.

12,2 LTS ML et versions ultérieures

AutoML peut gérer des jeux de données plus volumineux en allouant davantage de cœurs de CPU par tâche d'entraînement. Augmentez la taille de l'échantillon en sélectionnant une instance avec davantage de mémoire totale.

Pour les problèmes de classification, AutoML utilise la sampleBy méthode PySpark pour l'échantillonnage stratifié afin de préserver la distribution des étiquettes cibles.

Pour les problèmes de régression, AutoML utilise la méthode sample PySpark.

Détection du type sémantique

remarque
  • AutoML n'effectue pas de détection du type sémantique pour les colonnes qui ont des méthodes d'imputation personnalisées spécifiées.

Avec Databricks Runtime 9.1 LTS ML et versions ultérieures, AutoML tente de détecter si les colonnes ont un type sémantique différent du type de données Spark ou Pandas dans le schéma de table. AutoML traite ces colonnes comme le type sémantique détecté. Ces détections sont faites au mieux et peuvent parfois manquer l'existence de types sémantiques. Vous pouvez également définir manuellement le type sémantique d'une colonne ou indiquer à AutoML de ne pas appliquer la détection de type sémantique à une colonne à l'aide d'annotations.

Plus précisément, AutoML apporte les ajustements suivants :

  • Les colonnes de chaîne et d’entier représentant des données de date ou de timestamp sont traitées comme un type de timestamp.
  • Les colonnes de chaînes qui représentent des données numériques sont traitées comme un type numérique.

Avec Databricks Runtime 10.1 ML et versions supérieures, AutoML apporte également ces ajustements :

  • Les colonnes numériques qui contiennent des ID catégoriels sont traitées comme une fonctionnalité catégorielle.
  • Les colonnes de chaînes qui contiennent du texte anglais sont traitées comme une fonctionnalité de texte.

Annotations de type sémantique

Avec Databricks Runtime 10.1 ML et versions ultérieures, vous pouvez contrôler manuellement le type sémantique attribué en plaçant une annotation de type sémantique sur une colonne. Pour annoter manuellement le type sémantique de la colonne <column-name> en tant que <semantic-type>, utilisez la syntaxe suivante :

Python
metadata_dict = df.schema["<column-name>"].metadata
metadata_dict["spark.contentAnnotation.semanticType"] = "<semantic-type>"
df = df.withMetadata("<column-name>", metadata_dict)

<semantic-type> peut être l'une des suivantes :

  • categorical: La colonne contient des valeurs catégorielles (par exemple, des valeurs numériques qui devraient être traitées comme des ID).
  • numeric: la colonne contient des valeurs numériques (par exemple, des valeurs de chaîne qui peuvent être analysées en nombres).
  • datetimeLa colonne contient des valeurs de Timestamp (chaîne, numériques ou de date pouvant être converties en Timestamp).
  • text: la colonne de chaîne contient du texte anglais.

Pour désactiver la détection de type sémantique sur une colonne, utilisez l'annotation de mot-clé spéciale native.