AutoML no Fabric (preview)
O AutoML (machine learning automatizado) é uma coleção de métodos e ferramentas que automatizam o treinamento e a otimização de modelos de machine learning com pouco envolvimento humano. O objetivo do AutoML é simplificar e acelerar o processo de escolha do melhor modelo de machine learning e dos melhores hiperparâmetros para um determinado conjunto de dados, o que costuma exigir muita habilidade e poder de computação.
Importante
Esse recurso está em preview.
No Fabric, os Cientistas de Dados podem usar flaml.AutoML
para automatizar as tarefas de aprendizado de máquina.
O AutoML ajuda profissionais de ML e desenvolvedores de diferentes setores a:
- Criar soluções de ML com codificação mínima
- Reduzir tempo e custo
- Aplicar as melhores práticas de ciência de dados
- Resolver problemas de forma rápida e eficiente
Fluxo de trabalho de AutoML
flaml.AutoML
é uma classe para AutoML com base na tarefa. Ela pode ser usada como um avaliador estilo Scikit-learn com os métodos usuais fit e predict.
Para iniciar uma avaliação de AutoML, os usuários só precisam fornecer os dados de treinamento e o tipo de tarefa. Com as experiências de MLflow integradas no Fabric, os usuários também podem examinar as diferentes execuções experimentadas na avaliação para ver como o modelo final foi escolhido.
Dados de treinamento
No Fabric, os usuários podem passar os seguintes tipos de entrada para a função fit
do AutoML:
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 do Pandas: quando os dados de entrada são armazenados em um Dataframe do Pandas, eles são passados para
fit()
como X_train e y_train, ou como Dataframe e rótulo.Pandas no dataframe do Spark: quando os dados de entrada são armazenados como um dataframe do Spark, eles podem ser convertidos em um
Pandas
no DataFrameSpark
usandoto_pandas_on_spark()
e depois passados parafit()
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 argumento task
. Há diversas tarefas de machine learning aceitas, incluindo:
- Classificação: a principal meta dos modelos de classificação é prever em quais categorias novos dados se encaixarão com base em aprendizados de dados de treinamento. Exemplos de classificação comuns incluem detecção de fraudes, reconhecimento de manuscrito e detecção de objetos.
- Regressão: os modelos de regressão preveem valores numéricos de saída com base em indicadores independentes. Na regressão, o objetivo é ajudar a estabelecer a relação entre essas variáveis de preditores independentes estimando como uma variável afeta as outras. Por exemplo, preços de automóveis baseados em características como gasto de combustível por quilometragem, classificação de segurança etc.
- Previsão de série temporal: é 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 diário, semanal, mensal ou anualmente. O objetivo da previsão de série temporal é identificar padrões, tendências e sazonalidade nos dados e usar essas informações para fazer previsões sobre o valor futuro.
Para saber mais sobre as tarefas adicionais compatíveis com FLAML, visite a documentação sobre tarefas de 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 de AutoML, os usuários também podem configurar restrições no processo do AutoML, argumentos do construtor de avaliadores potenciais, tipos de modelos testados no AutoML e até mesmo restrições nas métricas da avaliação de AutoML.
Por exemplo, o código abaixo permite que os usuários especifiquem uma restrição de métricas na avaliação de 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 na FLAML.
Métrica de otimização
Durante o treinamento, a função de AutoML cria uma série de avaliações que tentam diferentes algoritmos e parâmetros. A ferramenta de AutoML faz iteração por meio 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 será considerado para "ajustar" seus dados. A métrica de otimização é especificada por meio do argumento metric
. Pode ser uma sequência que se refere a uma métrica interna ou uma função definida pelo usuário.
Métricas de otimização do AutoML
Ajuste paralelo
Em alguns casos, convém agilizar a avaliação do AutoML usando o Apache Spark para paralelizar o treinamento. Em clusters do Spark, por padrão, a FLAML inicia uma avaliação por executor. Você também pode personalizar o número de avaliações simultâneas usando o argumento n_concurrent_trials
.
automl.fit(X_train, y_train, n_concurrent_trials=4, use_spark=True)
Para saber mais sobre como paralelizar as trilhas de AutoML, visite a documentação da FLAML para trabalhos paralelos do Spark.
Acompanhamento com MLflow
Você também pode aproveitar a integração de MLflow do Fabric para capturar 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 com suporte
O AutoML no Fabric é compatível com os seguintes modelos:
Classificação | Regressão | Previsão de série temporal |
---|---|---|
(PySpark) Classificador de árvores com gradient boosting (GBT) | (PySpark) Regressão de sobrevivência em tempo de falha acelerada (AFT) | Arimax |
(PySpark) SVM linear | (PySpark) Regressão linear generalizada | AutoARIMA |
(PySpark) Naive Bayes | (PySpark) Regressão de árvores com gradient boosting (GBT) | Média |
(Synapse) LightGBM | (PySpark) Regressão linear | CatBoost |
CatBoost | (Synapse) LightGBM | Árvore de decisão |
Árvore de decisão | CatBoost | ExponentialSmoothing |
Árvores extremamente aleatórias | Árvore de decisão | Árvores extremamente aleatórias |
Gradient boosting | Rede elástica | ForecastTCN |
K-ésimo vizinhos mais próximos | Árvores extremamente aleatórias | Gradient boosting |
GBM claro | Gradient boosting | Suavização exponencial Holt-Winters |
SVC linear | K-ésimo vizinhos mais próximos | K-ésimo vizinhos mais próximos |
Regressão logística | LARS Lasso | LARS Lasso |
Regressão logística com regularização L1/L2 | GBM claro | GBM claro |
Naive Bayes | Regressão logística com regularização L1/L2 | Naive |
Floresta aleatória | Floresta aleatória | Órbita |
Floresta aleatória no Spark | Floresta aleatória no Spark | Prophet |
SGD (Gradiente estocástico descendente) | SGD (Gradiente estocástico descendente) | Floresta aleatória |
SVC (Classificação de vetores de suporte) | XGBoost | SARIMAX |
XGboost | XGBoost com profundidade limitada | SeasonalAverage |
XGBoost com profundidade limitada | SeasonalNaive | |
Transformador de fusão temporal | ||
XGBoost | ||
XGBoost para série temporal | ||
XGBoost com profundidade limitada para série temporal | ||
ElasticNet |
Visualizar os resultados
O módulo flaml.visualization
fornece funções utilitárias para plotar o processo de otimização usando o Plotly. Ao aproveitar o Plotly, os usuários podem explorar interativamente os resultados do experimento de AutoML. Para usar essas funções de plotagem, basta fornecer o objeto otimizado flaml.AutoML
ou flaml.tune.tune.ExperimentAnalysis
como entrada.
Você pode usar as seguintes funções no notebook:
plot_optimization_history
: plotar o histórico de otimização de todas as avaliações do experimento.plot_feature_importance
: plotar a importância de cada recurso no conjunto de dados.plot_parallel_coordinate
: plotar os relacionamentos de parâmetros de alta dimensão no experimento.plot_contour
: plotar o relacionamento de parâmetros como gráfico de curva de nível no experimento.plot_edf
: plotar a FDE (função de distribuição empírica) do valor objetivo do experimento.plot_timeline
: plotar a linha do tempo do experimento.plot_slice
: plotar o relacionamento de parâmetros como gráfico de pizza em um estudo.plot_param_importance
: plotar a importância de hiperparâmetros do experimento.