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 onSpark
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 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.