Partager via


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

Cet article décrit comment AutoML prépare les données pour l’apprentissage de régression et décrit les paramètres de données configurables. Vous pouvez ajuster ces options durant la configuration de l’expérience dans l’IU AutoML.

Pour configurer ces paramètres à l’aide de l’API AutoML), consultez les informations de référence sur l’API Python AutoML.

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

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

Seuls les types de fonctionnalités suivants sont pris en charge :

  • Numerique ( ByteType, ShortType, IntegerType, LongType, FloatType , et DoubleType)
  • Boolean
  • Chaîne (texte catégorique ou anglais)
  • Horodatages (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 des valeurs manquantes

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

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

Notes

Si vous spécifiez une méthode d’imputation autre que celle par défaut, AutoML n’effectue pas la détection de type sémantique.

Sélection de colonnes

Dans Databricks Runtime 10.3 ML et versions ultérieures, vous pouvez spécifier les colonnes que AutoML doit utiliser pour l’apprentissage. Pour exclure une colonne de l’IU, 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 Python AutoML.

Vous ne pouvez pas supprimer la colonne sélectionnée en tant que cible de prédiction ou en tant que colonne de temps pour fractionner les données.

Les colonnes de jointure sont incluses par défaut.

Fractionner les données en jeux de formation, de validation et de test

AutoML fractionne vos données en trois parties à des fins de formation, de validation et de test. Selon le type de problème ML, vous disposez de différentes options pour le fractionnement des données.

Utilisez les méthodes suivantes pour diviser les données en jeux d’apprentissage, de validation et de test :

(Par défaut) Fractionnement aléatoire : si aucune stratégie de fractionnement des données n’est spécifiée, le jeu de données est fractionné de manière aléatoire en étant composé à 60 % de formation, 20 % de validation et 20 % de test. Pour la classification, un fractionnement aléatoire stratifié vérifie que chaque classe est représentée de manière adéquate dans les jeux de formation, de validation et de test.

Fractionnement chronologique : dans Databricks Runtime 10.4 LTS ML et versions ultérieures, vous pouvez sélectionner une colonne de temps en créant des fractionnements chronologiques d’apprentissage, de validation et de test. Les fractionnements chronologiques utilisent les premiers points de données pour la formation, puis les premiers points suivants pour la validation et les derniers points pour le test. La colonne temps peut être un horodatage, un nombre entier ou une chaîne.

Fractionnement manuel : dans Databricks Runtime 15.3 ML et versions ultérieures, vous pouvez utiliser l’API pour configurer un fractionnement manuel. Spécifiez une colonne fractionnée et utilisez les valeurs train, validate ou test pour identifier les lignes que vous souhaitez utiliser pour la formation, la validation et les jeux de données de test. Toutes les lignes avec des valeurs de colonne fractionnées autres que train, testou validate sont ignorées et une alerte correspondante est déclenchée.

Échantillonnage de jeux de données volumineux

Bien qu’AutoML distribue les essais de réglage d’hyperparamètres sur les nœuds Worker d’un cluster, chaque modèle est entraîné sur un nœud Worker unique.

AutoML estime automatiquement la mémoire requise pour charger et entraîner votre jeu de données, et échantillonne le jeu de données si nécessaire.

Version de Databricks Runtime Comportement d’échantillonnage
9.1 ML LTS - 10.4 LTS ML La fraction d’échantillonnage est constante et ne dépend pas du type de nœud ou de la mémoire du cluster par nœud.
11.x ML La fraction d’échantillonnage augmente pour les nœuds Worker avec plus de mémoire par cœur. Pour augmenter la taille de l’échantillon :

- Utilisez un type d’instance optimisé en mémoire.
- Ajustez spark.task.cpus la configuration Spark. La valeur par défaut est 1 et la valeur maximale est le nombre de processeurs sur le nœud Worker. La valeur maximale est le nombre de processeurs sur le nœud Worker. Lorsque vous augmentez cette valeur, la taille de l’échantillon est supérieure, 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 s’exécutent par worker, chacun utilisant 16 Go de RAM.
- Avec spark.task.cpus=4, une version d’évaluation s’exécute par worker, en utilisant toutes les 64 Go de RAM.
11.3 ML LTS et versions ultérieures Si AutoML échantillonne le jeu de données, la fraction d’échantillonnage est affichée sous l’onglet Vue d’ensemble de l’interface utilisateur.
12.2 ML LTS et versions ultérieures AutoML peut gérer des jeux de données plus volumineux en allouant plus de cœurs d’UC par tâche d’entraînement. Augmentez la taille de l’échantillon en sélectionnant une instance avec plus de mémoire totale.

Dans le cas des problèmes de classification, AutoML utilise la méthode sampleBy de PySpark pour l’échantillonnage stratifié afin de préserver la distribution des étiquettes cibles.

Dans le cas des problèmes de régression, AutoML utilise la méthode sample de PySpark.

Détection de type sémantique

Remarque

Avec Databricks Runtime 9.1 LTS ML et les 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 effectuées au mieux, mais il arrive parfois que l’existence de types sémantiques ne soit pas détectée. 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 effectue ces ajustements :

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

Avec Databricks Runtime 10.1 ML et versions ultérieures, AutoML effectue également les réglages suivants :

  • Les colonnes numériques qui contiennent des ID catégoriques sont traitées comme une caractéristique catégorique.
  • Les colonnes de chaînes qui contiennent du texte anglais sont traitées comme une caractéristique de texte.

Annotations de type sémantique

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

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

<semantic-type> peut s'agir d'une des méthodes suivantes :

  • categorical: La colonne contient des valeurs catégoriques (par exemple, des valeurs numériques qui doivent ê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).
  • datetime:La colonne contient des valeurs timestamp (chaîne, numérique ou date qui peuvent être converties en horodateurs).
  • text: La colonne de chaîne de caractères contient du texte en anglais.

Pour désactiver la détection de type sémantique sur une colonne, utilisez l’annotation native spéciale Keyword.