Préparation des données pour la classification
Découvrez comment utiliser AutoML pour préparer vos données pour la classification.
Cet article explique comment AutoML prépare les données pour l’entraînement de classification 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,FloatTypeetDoubleType) - 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.
Si vous spécifiez une méthode d'imputation non-default, AutoML n'effectue pas de détection de type sémantique.
Prise en charge des dataset déséquilibrés pour les problèmes de classification
Dans Databricks Runtime 11.3 LTS ML et versions ultérieures, si AutoML détecte qu'un dataset est déséquilibré, il tente de réduire le déséquilibre du dataset d'entraînement en sous-échantillonnant la ou les classes majoritaires et en ajoutant des pondérations de classe. AutoML n'équilibre que le dataset d'entraînement et n'équilibre pas les datasets de test et de validation. Cela garantit que les performances du modèle sont toujours évaluées sur le dataset non enrichi avec la distribution réelle des classes d'entrée.
Pour équilibrer un dataset d'entraînement déséquilibré, AutoML utilise des pondérations de classe inversement proportionnelles au degré de sous-échantillonnage d'une classe donnée. Par exemple, si un dataset d'entraînement de 100 échantillons contient 95 échantillons appartenant à la classe A et cinq échantillons appartenant à la classe B, AutoML réduit ce déséquilibre en sous-échantillonnant la classe A à 70 échantillons, c'est-à-dire en sous-échantillonnant la classe A selon un ratio de 70/95 ou 0,736 tout en maintenant le nombre d'échantillons de la classe B à 5. Pour garantir que le modèle final est correctement calibré et que la distribution de probabilité de la sortie du modèle est la même que celle de l'entrée, AutoML augmente la pondération de classe pour la classe A selon un ratio de 1/0,736, soit 1,358, tout en conservant la pondération de la classe B à 1. AutoML utilise ensuite ces pondérations de classe dans l’entraînement du modèle comme paramètre pour garantir que les échantillons de chaque classe sont pondérés de manière appropriée lors de l’entraînement du modèle.
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 :
Exemple : Sur une machine avec 4 cœurs et 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
- 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 la table. AutoML traite ces colonnes comme le type sémantique détecté. Ces détections sont fournies à titre indicatif 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î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 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 :
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.