Exécuter une expérience de Machine Learning automatisé

Effectué

Pour exécuter une expérience de Machine Learning automatisé (AutoML), vous pouvez configurer et envoyer le travail avec le Kit SDK Python.

Les algorithmes utilisés par AutoML dépendent de la tâche que vous spécifiez. Lorsque vous souhaitez entraîner un modèle de classification, AutoML choisit parmi une liste d’algorithmes de classification :

  • Logistic Regression
  • Light GBM (Gradient Boosting Machine)
  • Arbre de décision
  • Forêt aléatoire
  • Naive Bayes
  • Machine à vecteurs de support linéaire (SVM)
  • XGBoost
  • Et autres...

Conseil

Pour obtenir la liste complète des algorithmes pris en charge, explorez la vue d’ensemble des algorithmes pris en charge.

Restriction de la sélection d’algorithmes

Par défaut, AutoML effectue une sélection aléatoire parmi la plage complète des algorithmes pour la tâche spécifiée. Vous pouvez choisir d’empêcher la sélection d’algorithmes spécifiques, ce qui peut être utile si vous savez que vos données ne sont pas adaptées à un type particulier d’algorithme. Vous pouvez également bloquer certains algorithmes si vous devez vous conformer à une stratégie qui limite les types d’algorithmes de Machine Learning que vous pouvez utiliser dans votre organisation.

Configurer une expérience AutoML

Lorsque vous utilisez le Kit SDK Python (v2) pour configurer une expérience ou un travail AutoML, vous configurez l’expérience à l’aide de la classe automl. Pour la classification, vous utiliserez la fonction automl.classification comme indiqué dans l’exemple suivant :

from azure.ai.ml import automl

# configure the classification job
classification_job = automl.classification(
    compute="aml-cluster",
    experiment_name="auto-ml-class-dev",
    training_data=my_training_data_input,
    target_column_name="Diabetic",
    primary_metric="accuracy",
    n_cross_validations=5,
    enable_model_explainability=True
)

Notes

AutoML a besoin d’une ressource de données MLTable comme entrée. Dans l’exemple, my_training_data_input fait référence à une ressource de données MLTable créée dans l’espace de travail Azure Machine Learning.

Spécifier la métrique principale

L’un des paramètres les plus importants que vous devez spécifier est primary_metric. La métrique principale est la métrique de performance cible pour laquelle le modèle optimal est déterminé. Azure Machine Learning prend en charge un ensemble de métriques nommées pour chaque type de tâche.

Pour récupérer la liste des métriques disponibles lorsque vous souhaitez entraîner un modèle de classification, vous pouvez utiliser la fonction ClassificationPrimaryMetrics comme illustré ici :

from azure.ai.ml.automl import ClassificationPrimaryMetrics
 
list(ClassificationPrimaryMetrics)

Conseil

Vous trouverez une liste complète des métriques principales et leurs définitions dans Évaluer les résultats d’une expérience de Machine Learning automatisé.

Définir les limites

L’entraînement des modèles Machine Learning est coûteux en calcul. Pour réduire les coûts et le temps consacré à l’entraînement, vous pouvez définir des limites à une expérience ou un travail AutoML à l’aide de set_limits().

Il existe plusieurs options pour définir des limites à une expérience AutoML :

  • timeout_minutes : nombre de minutes après lesquelles l’expérience AutoML complète est terminée.
  • trial_timeout_minutes : nombre maximal de minutes qu’un essai peut prendre.
  • max_trials : nombre maximal d’essais ou de modèles qui seront entraînés.
  • enable_early_termination : indique s’il faut mettre fin à l’expérience si le score ne s’améliore pas à court terme.
classification_job.set_limits(
    timeout_minutes=60, 
    trial_timeout_minutes=20, 
    max_trials=5,
    enable_early_termination=True,
)

Pour gagner du temps, vous pouvez également exécuter plusieurs essais en parallèle. Lorsque vous utilisez un cluster de calcul, vous pouvez avoir autant d’essais parallèles que de nœuds. Le nombre maximal d’essais parallèles est donc lié au nombre maximal de nœuds de votre cluster de calcul. Si vous souhaitez définir le nombre maximal d’essais parallèles pour qu’il soit inférieur au nombre maximal de nœuds, vous pouvez utiliser max_concurrent_trials.

Définir les propriétés d’entraînement

AutoML essaiera différentes combinaisons de caractérisation et d’algorithmes pour entraîner un modèle Machine Learning. Si vous savez déjà que certains algorithmes ne sont pas adaptés à vos données, vous pouvez exclure (ou inclure) un sous-ensemble des algorithmes disponibles.

Vous pouvez également choisir d’autoriser ou non AutoML à utiliser des modèles d’ensemble.

Soumettre un essai AutoML

Vous pouvez soumettre un travail AutoML avec le code suivant :

# submit the AutoML job
returned_job = ml_client.jobs.create_or_update(
    classification_job
) 

Vous pouvez superviser les exécutions de travaux AutoML dans Azure Machine Learning studio. Pour obtenir un lien direct vers le travail AutoML, exécutez le code suivant :

aml_url = returned_job.studio_url
print("Monitor your job at", aml_url)