Visualizações de treinamento (preview)

Uma avaliação de hiperparâmetro ou avaliação de AutoML busca os parâmetros ideais para um modelo de machine learning. Cada avaliação contém várias execuções, onde cada uma avalia uma combinação de parâmetros específica. Os usuários podem monitorar essas execuções usando itens de experimento de ML no Fabric.

O módulo flaml.visualization oferece funções para plotar e comparar as execuções em FLAML. Os usuários podem usar o Plotly para interagir com os gráficos de experimento do AutoML. Para usar essas funções, os usuários precisam inserir o objeto otimizado flaml.AutoML ou flaml.tune.tune.ExperimentAnalysis.

Este artigo ensina como usar o módulo flaml.visualization para analisar e explorar os resultados da avaliação do AutoML. Você também pode seguir as mesmas etapas na avaliação de hiperparâmetro.

Importante

Esse recurso está na versão prévia.

Criar uma avaliação de AutoML

O AutoML oferece um conjunto de processos automatizados que podem identificar o melhor pipeline de aprendizado de máquina para o conjunto de dados, tornando todo o processo de modelagem mais simples e, muitas vezes, mais preciso. Em essência, ele evita o trabalho de ajustar manualmente diferentes modelos e hiperparâmetros.

Na célula de código abaixo, vamos:

  1. Carregar o conjunto de dados Iris.
  2. Dividir os dados em conjuntos de treinamento e de avaliação.
  3. Iniciar uma avaliação do AutoML para ajustar nossos dados de treinamento.
  4. Explorar os resultados da nossa avaliação do AutoML com as visualizações da flaml.visualization.
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from flaml import AutoML

# Load the Iris data and split it into train and test sets
x, y = load_iris(return_X_y=True, as_frame=True)
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2, random_state=7654321)

# Create an AutoML instance and set the parameters
automl = AutoML()
automl_settings = {
    "time_budget": 10, # Time limit in seconds
    "task": "classification", # Type of machine learning task
    "log_file_name": "aml_iris.log", # Name of the log file
    "metric": "accuracy", # Evaluation metric
    "log_type": "all", # Level of logging
}
# Fit the AutoML instance on the training data
automl.fit(X_train=x_train, y_train=y_train, **automl_settings)

Visualizar os resultados do experimento

Depois de executar uma avaliação do AutoML, é necessário visualizar os resultados finais para analisar o desempenho dos modelos e como eles se comportaram. Nesta parte da documentação, mostramos como usar os utilitários internos na biblioteca FLAML para essa finalidade.

Módulo de visualização de importação

Para acessar esses utilitários de visualização, executamos o seguinte comando de importação:

import flaml.visualization as fviz

Histórico de otimização

Normalmente, um gráfico do histórico de otimização tem o número de avaliações/iterações no eixo x e uma métrica de desempenho (como precisão, REQM etc.) no eixo y. À medida que o número de avaliações aumenta, você vê um gráfico de linha ou dispersão indicando o desempenho de cada uma.

fig = fviz.plot_optimization_history(automl)
# or
fig = fviz.plot(automl, "optimization_history")
fig.show()

Este é o gráfico resultante:

Gráfico do histórico de otimização.

Importância do recurso

Um gráfico de importância do recurso é uma poderosa ferramenta de visualização que permite entender a relevância de diferentes recursos de entrada ao determinar as previsões de um modelo.

fig = fviz.plot_feature_importance(automl)
# or
fig = fviz.plot(automl, "feature_importance")
fig.show()

Este é o gráfico resultante:

Gráfico de importância do recurso.

Gráfico de coordenadas paralelas

Um gráfico de coordenadas paralelas é uma ferramenta de visualização que representa dados multidimensionais, desenhando várias linhas verticais (eixos) que correspondem a variáveis ou hiperparâmetros, com pontos de dados plotados como linhas conectadas nesses eixos. No contexto de um experimento de AutoML ou de ajuste, ele é fundamental para visualizar e analisar o desempenho de diferentes combinações de hiperparâmetros. Ao rastrear os caminhos das configurações de alto desempenho, é possível discernir padrões ou tendências em escolhas de hiperparâmetros e suas interações. Esse gráfico ajuda a entender quais combinações levam ao desempenho ideal, identificando possíveis áreas para mais exploração e identificando quaisquer compensações entre diferentes hiperparâmetros.

Esse utilitário usa os seguintes outros argumentos:

  • learner: especifica o aprendiz que você pretende estudar no experimento. Esse parâmetro só é aplicável aos resultados do experimento de AutoML. Ao deixar essa parte em branco, o sistema escolhe o melhor aprendiz em todo o experimento.

  • params: uma lista para especificar qual hiperparâmetro exibir. Ao deixar essa parte em branco, o sistema exibe todos os hiperparâmetros disponíveis.

fig = fviz.plot_parallel_coordinate(automl, learner="lgbm", params=["n_estimators", "num_leaves", "learning_rate"])
# or
fig = fviz.plot(automl, "parallel_coordinate", learner="lgbm", params=["n_estimators", "num_leaves", "learning_rate"])
fig.show()

Este é o gráfico resultante:

Gráfico de coordenadas paralelas.

Gráfico de curva de nível

Um gráfico de curva de nível visualiza dados tridimensionais em duas dimensões, nas quais os eixos x e y representam dois hiperparâmetros e as curvas de nível ou curvas preenchidas representam níveis de uma métrica de desempenho (por exemplo, precisão ou perda). No contexto de um experimento de AutoML ou de ajuste, um gráfico de curva de nível é benéfico para entender a relação entre dois hiperparâmetros e seu efeito combinado no desempenho do modelo.

Ao examinar a densidade e o posicionamento das curvas de nível, é possível identificar regiões do espaço de hiperparâmetro onde o desempenho é otimizado, determinar possíveis compensações entre hiperparâmetros e obter insights sobre suas interações. Essa visualização ajuda a refinar o espaço de pesquisa e o processo de ajuste.

Esse utilitário também usa os seguintes argumentos:

  • learner: especifica o aprendiz que você pretende estudar no experimento. Esse parâmetro só é aplicável aos resultados do experimento de AutoML. Ao deixar essa parte em branco, o sistema escolhe o melhor aprendiz em todo o experimento.

  • params: uma lista para especificar qual hiperparâmetro exibir. Ao deixar essa parte em branco, o sistema exibe todos os hiperparâmetros disponíveis.

fig = fviz.plot_contour(automl, learner="lgbm", params=["n_estimators", "num_leaves", "learning_rate"])
# or
fig = fviz.plot(automl, "contour", learner="lgbm", params=["n_estimators", "num_leaves", "learning_rate"])
fig.show()

Este é o gráfico resultante:

Gráfico de curva de nível.

Função de distribuição empírica

Um gráfico de função de distribuição empírica (FDE), muitas vezes visualizado como uma função degrau, representa a probabilidade cumulativa de os pontos de dados serem menores ou iguais a um valor específico. Em um experimento de AutoML ou de ajuste, um gráfico de FDE pode ser empregado para visualizar a distribuição dos desempenhos do modelo em diferentes configurações de hiperparâmetros.

Observando a inclinação ou planicidade da curva em vários pontos, é possível entender a concentração de desempenhos bons ou ruins do modelo, respectivamente. Essa visualização oferece insights sobre a eficácia geral do processo de ajuste, destacando se a maioria das configurações experimentadas está produzindo resultados satisfatórios ou se apenas algumas delas se destacam.

Observação

Em experimentos de AutoML, vários modelos são aplicados durante o treinamento. As avaliações de cada aprendiz são representadas como uma série de otimização. Em experimentos de ajuste de hiperparâmetros, um único aprendiz é avaliado. No entanto, você pode fornecer experimentos de ajuste adicionais para ver as tendências em cada aprendiz.

fig = fviz.plot_edf(automl)
# or
fig = fviz.plot(automl, "edf")
fig.show()

Este é o gráfico resultante:

Gráfico da função de distribuição empírica.

Gráfico de linha do tempo

Um gráfico de linha do tempo, muitas vezes representado como um gráfico de Gantt ou uma sequência de barras, visualiza o início, a duração e a conclusão das tarefas ao longo do tempo. No contexto de um experimento de AutoML ou de ajuste, um gráfico de linha do tempo pode mostrar o progresso de várias avaliações do modelo e suas respectivas durações, plotadas em relação ao tempo. Ao observar esse gráfico, os usuários compreendem a eficiência do processo de busca, identificam possíveis gargalos ou períodos ociosos e entendem a dinâmica temporal de diferentes avaliações de hiperparâmetros.

fig = fviz.plot_timeline(automl)
# or
fig = fviz.plot(automl, "timeline")
fig.show()

Este é o gráfico resultante:

Gráfico de linha do tempo.

Gráfico de pizza

Plota o relacionamento de parâmetros como gráfico de pizza em um estudo.

Esse utilitário também usa os seguintes argumentos:

  • learner: especifica o aprendiz que você pretende estudar no experimento. Esse parâmetro só é aplicável aos resultados do experimento de AutoML. Ao deixar essa parte em branco, o sistema escolhe o melhor aprendiz em todo o experimento.

  • params: uma lista para especificar qual hiperparâmetro exibir. Ao deixar essa parte em branco, o sistema exibe todos os hiperparâmetros disponíveis.

fig = fviz.plot_slice(automl, learner="sgd")
# or
fig = fviz.plot(automl, "slice", learner="sgd")
fig.show()

Este é o gráfico resultante:

Gráfico de pizza.

Importância do hiperparâmetro

Um gráfico da importância de hiperparâmetros classifica visualmente os hiperparâmetros com base em sua influência no desempenho do modelo em um experimento de AutoML ou de ajuste. Normalmente exibido como um gráfico de barras, ele quantifica o impacto de cada hiperparâmetro na métrica de meta. Ao examinar esse gráfico, os profissionais podem discernir quais hiperparâmetros são fundamentais na determinação dos resultados finais do modelo e quais têm efeito mínimo.

Esse utilitário também usa os seguintes argumentos:

  • learner: especifica o aprendiz que você pretende estudar no experimento. Esse parâmetro só é aplicável aos resultados do experimento de AutoML. Ao deixar essa parte em branco, o sistema escolhe o melhor aprendiz em todo o experimento.

  • params: uma lista para especificar qual hiperparâmetro exibir. Ao deixar essa parte em branco, o sistema exibe todos os hiperparâmetros disponíveis.

fig = fviz.plot_param_importance(automl, learner="sgd")
# or
fig = fviz.plot(automl, "param_importance", learner="sgd")
fig.show()

Este é o gráfico resultante:

Gráfico da importância de hiperparâmetros.