AutoML na malha (visualização)

AutoML (Automated Machine Learning) é uma coleção de métodos e ferramentas que automatizam o treinamento e otimização de modelos de aprendizado de máquina com pouco envolvimento humano. O objetivo do AutoML é simplificar e acelerar o processo de escolha do melhor modelo de aprendizado de máquina e hiperparâmetros para um determinado conjunto de dados, o que geralmente exige muita habilidade e poder de computação.

Importante

Este recurso está em pré-visualização.

No Fabric, os cientistas de dados podem usar flaml.AutoML para automatizar suas tarefas de aprendizado de máquina.

O AutoML pode ajudar profissionais e desenvolvedores de ML de diferentes setores a:

  • Crie soluções de ML com codificação mínima
  • Reduza tempo e custo
  • Aplicar as melhores práticas de ciência de dados
  • Resolva problemas de forma rápida e eficiente

Fluxo de trabalho AutoML

flaml.AutoML é uma classe para AutoML com base na tarefa. Ele pode ser usado como um estimador de estilo Scikit-learn com os métodos usuais de ajuste e previsão.

Para iniciar uma avaliação do AutoML, os usuários só precisam fornecer os dados de treinamento e o tipo de tarefa. Com as experiências integradas do MLflow no Fabric, os usuários também podem examinar as diferentes execuções que foram tentadas na avaliação para ver como o modelo final foi escolhido.

Dados de preparação

No Fabric, os usuários podem passar os seguintes tipos de entrada para a função AutoML fit :

  • Matriz Numpy: Quando os dados de entrada são armazenados em uma matriz Numpy, eles são passados para fit() como X_train e y_train.

  • Dataframe Pandas: Quando os dados de entrada são armazenados em um dataframe Pandas, eles são passados para fit() X_train e y_train ou como dataframe e rótulo.

  • Pandas on Spark dataframe: Quando os dados de entrada são armazenados como um dataframe do Spark, eles podem ser convertidos em um Pandas dataframe on Spark usando to_pandas_on_spark() e depois passados para fit() como um dataframe e rótulo.

    from flaml.automl.spark.utils import to_pandas_on_spark
    psdf = to_pandas_on_spark(sdf)
    automl.fit(dataframe=psdf, label='Bankrupt?', isUnbalance=True, **settings)
    

Problema de aprendizado de máquina

Os usuários podem especificar a tarefa de aprendizado de máquina usando o task argumento. Há várias tarefas de aprendizado de máquina suportadas, incluindo:

  • Classificação: O principal objetivo dos modelos de classificação é prever em quais categorias os novos dados se enquadram com base nos aprendizados de seus dados de treinamento. Alguns exemplos comuns de classificação incluem deteção de fraude, reconhecimento de caligrafia e deteção de objetos.
  • Regressão: Os modelos de regressão predizem valores numéricos de saída com base em preditores independentes. Na regressão, o objetivo é ajudar a estabelecer a relação entre essas variáveis de preditor independente ao calcular como uma variável afeta as outras. Por exemplo, os preços dos automóveis com base em características como, quilometragem do gás, classificação de segurança, etc.
  • Previsão de séries temporais: é usada para prever valores futuros com base em pontos de dados históricos ordenados por tempo. Em uma série temporal, os dados são coletados e registrados em intervalos regulares durante um período específico, como diariamente, semanalmente, mensalmente ou anualmente. O objetivo da previsão de séries temporais é identificar padrões, tendências e sazonalidade nos dados e, em seguida, usar essas informações para fazer previsões sobre o valor futuro.

Para saber mais sobre as outras tarefas suportadas no FLAML, você pode visitar a documentação sobre tarefas AutoML no FLAML.

Entradas opcionais

Forneça várias restrições e entradas para configurar sua avaliação do AutoML.

Restrições

Ao criar uma avaliação do AutoML, os usuários também podem configurar restrições no processo do AutoML, argumentos do construtor de potenciais estimadores, tipos de modelos experimentados no AutoML e até mesmo restrições nas métricas do teste do AutoML.

Por exemplo, o código abaixo permite que os usuários especifiquem uma restrição de métricas na avaliação do AutoML.

metric_constraints = [("train_loss", "<=", 0.1), ("val_loss", "<=", 0.1)]
automl.fit(X_train, y_train, max_iter=100, train_time_limit=1, metric_constraints=metric_constraints)

Para saber mais sobre essas configurações, visite a documentação sobre configurações no FLAML.

Métrica de otimização

Durante o treinamento, a função AutoML cria muitos testes, que tentam diferentes algoritmos e parâmetros. A ferramenta AutoML itera através de algoritmos de ML e hiperparâmetros. Nesse processo, cada iteração cria um modelo com uma pontuação de treinamento. Quanto melhor a pontuação para a métrica para a qual você deseja otimizar, melhor o modelo é considerado para "ajustar" seus dados. A métrica de otimização é especificada através do metric argumento. Pode ser uma cadeia de caracteres, que se refere a uma métrica interna, ou uma função definida pelo usuário.

Métricas de otimização do AutoML

Sintonização paralela

Em alguns casos, você pode querer acelerar sua avaliação do AutoML usando o Apache Spark para paralelizar seu treinamento. Para clusters do Spark, por padrão, o FLAML inicia uma avaliação por executor. Você também pode personalizar o número de avaliações simultâneas usando o n_concurrent_trials argumento.

automl.fit(X_train, y_train, n_concurrent_trials=4, use_spark=True)

Para saber mais sobre como paralelizar suas trilhas AutoML, você pode visitar a documentação do FLAML para trabalhos paralelos do Spark.

Rastrear com MLflow

Você também pode usar a integração do Fabric MLflow para capturar as métricas, parâmetros e métricas das trilhas exploradas.

import mlflow
mlflow.autolog()

with mlflow.start_run(nested=True):
    automl.fit(dataframe=pandas_df, label='Bankrupt?', mlflow_exp_name = "automl_spark_demo")

# You can also provide a run_name pre-fix for the child runs

automl_experiment = flaml.AutoML()
automl_settings = {
    "metric": "r2",
    "task": "regression",
    "use_spark": True,
    "mlflow_exp_name": "test_doc",
    "estimator_list": [
        "lgbm",
        "rf",
        "xgboost",
        "extra_tree",
        "xgb_limitdepth",
    ],  # catboost does not yet support mlflow autologging
}
with mlflow.start_run(run_name=f"automl_spark_trials"):
    automl_experiment.fit(X_train=train_x, y_train=train_y, **automl_settings)

Modelos suportados

O AutoML no Fabric suporta os seguintes modelos:

Classificação Regressão Previsão de séries temporais
(PySpark) Classificador de árvores com aumento de gradiente (GBT) (PySpark) Regressão de Sobrevivência do Tempo de Falha Acelerado (AFT) Arimax
(PySpark) Linear SVM (PySpark) Regressão Linear Generalizada AutoARIMA
(PySpark) Bayes ingênuo (PySpark) Regressão de árvores com aumento de gradiente (GBT) Média
(Sinapse) LuzGBM (PySpark) Regressão Linear CatBoost
CatBoost (Sinapse) LuzGBM Árvore de Decisões
Árvore de Decisões CatBoost Suavização Exponencial
Extremely Randomized Trees Árvore de Decisões Extremely Randomized Trees
Gradient Boosting Elastic Net PrevisãoTCN
K Nearest Neighbors Extremely Randomized Trees Gradient Boosting
Light GBM Gradient Boosting Holt-Winters Alisamento Exponencial
Linear SVC K Nearest Neighbors K Nearest Neighbors
Logistic Regression LARS Lasso LARS Lasso
Regressão Logística com Regularização L1/L2 Light GBM Light GBM
Naive Bayes Regressão Logística com Regularização L1/L2 Ingênuo
Random Forest Random Forest Órbita
Floresta aleatória na faísca Floresta aleatória na faísca Profeta
Stochastic Gradient Descent (SGD) Stochastic Gradient Descent (SGD) Random Forest
Classificação vetorial de suporte (SVC) XGBoost SARIMAX
XGboost XGBoost com profundidade limitada SazonalMédia
XGBoost com profundidade limitada SazonalNaive
Transformador de fusão temporal
XGBoost
XGBoost para séries temporais
XGBoost com profundidade limitada para séries temporais
ElasticNet

Visualizar resultados

O flaml.visualization módulo fornece funções de utilidade para plotar o processo de otimização usando Plotly. Ao aproveitar o Plotly, os usuários podem explorar interativamente os resultados de seus experimentos AutoML. Para usar essas funções de plotagem, forneça seu objeto otimizado flaml.AutoML ou flaml.tune.tune.ExperimentAnalysis como uma entrada.

Pode utilizar as seguintes funções no seu bloco de notas:

  • plot_optimization_history: Histórico de otimização de gráficos de todos os ensaios no experimento.
  • plot_feature_importance: Plotar a importância de cada recurso no conjunto de dados.
  • plot_parallel_coordinate: Plotar as relações de parâmetros de alta dimensão no experimento.
  • plot_contour: Plotar a relação de parâmetros como gráfico de contorno no experimento.
  • plot_edf: Representar graficamente o valor objetivo EDF (função de distribuição empírica) da experiência.
  • plot_timeline: Traçar a linha do tempo do experimento.
  • plot_slice: Plotar a relação de parâmetros como gráfico de fatia em um estudo.
  • plot_param_importance: Plotar a importância do hiperparâmetro do experimento.