Préparation des données pour la classification
Découvrez comment utiliser AutoML pour préparer vos données pour la classification.
Cet article décrit comment AutoML prépare les données pour l’apprentissage de classification 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
, etDoubleType
) - 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.
Prise en charge de jeux de données déséquilibrés pour résoudre des problèmes de classification
Dans Databricks Runtime 11.3 LTS ML et versions ultérieures, si AutoML détecte qu’un jeu de données est déséquilibré, il tente de réduire le déséquilibre du jeu de données d’entraînement en sous-échantillonnant les classes principales et en ajoutant des pondérations de classe. AutoML équilibre uniquement le jeu de données d’entraînement, et n’équilibre pas les jeux de données de test et de validation. Cela garantit que les performances du modèle sont toujours évaluées sur le jeu de données non enrichi avec la vraie distribution de classe d’entrée.
Pour équilibrer un jeu de données d’entraînement déséquilibré, AutoML utilise des pondérations de classe qui sont inversement liées au degré de sous-échantillonnage d’une classe donnée. Par exemple, si un jeu de données d’apprentissage de 100 échantillons comporte 95 échantillons appartenant à la classe A, et cinq échantillons appartenant à la classe B, AutoML réduit ce déséquilibre en baissant l’échantillonnage de la classe A à 70 échantillons, c’est-à-dire en réduisant l’échantillonnage de la classe A selon un rapport de 70/95 ou 0,736 tout en maintenant à 5 le nombre d’échantillons dans la classe B. Pour que le modèle final soit correctement étalonné et que la distribution de probabilité de la sortie du modèle soit identique à celle de l’entrée, AutoML met à l’échelle la pondération de classe de la classe A selon le ratio 1/0,736 ou 1,358, tout en maintenant à 1 la pondération de la classe B. AutoML utilise ensuite ces pondérations de classe comme paramètres dans l’entraînement du modèle pour que les échantillons de chaque classe soient pondérés de manière appropriée pendant l’entraînement du modèle.
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
, test
ou 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
- AutoML n’effectue pas de détection de 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 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.