Configurar o AutoML para preparar um modelo de previsão de série temporal com Python

APLICA-SE A:Python SDK azureml v1

Neste artigo, irá aprender a configurar a preparação de AutoML para modelos de previsão de série temporal com o ML automatizado do Azure Machine Learning no SDK Python do Azure Machine Learning.

Para tal, terá de:

  • Preparar dados para modelação de série temporal.
  • Configure parâmetros de série temporal específicos num AutoMLConfig objeto.
  • Execute predições com dados de série temporal.

Para obter uma experiência de código baixa, veja o Tutorial: Previsão da procura com machine learning automatizado para um exemplo de previsão de série temporal com o ML automatizado no estúdio do Azure Machine Learning.

Ao contrário dos métodos de série temporal clássicos, no ML automatizado, os valores de série temporal anteriores são "dinamizados" para se tornarem dimensões adicionais para o regressor juntamente com outros preditores. Esta abordagem incorpora múltiplas variáveis contextuais e a respetiva relação entre si durante a preparação. Uma vez que vários fatores podem influenciar uma previsão, este método alinha-se bem com cenários de previsão do mundo real. Por exemplo, ao prever vendas, as interações de tendências históricas, a taxa de câmbio e o preço impulsionam conjuntamente o resultado das vendas.

Pré-requisitos

Para este artigo de que precisa,

Dados de preparação e validação

A diferença mais importante entre um tipo de tarefa de regressão de previsão e o tipo de tarefa de regressão no ML automatizado é incluir uma funcionalidade nos dados de preparação que representa uma série temporal válida. Uma série temporal normal tem uma frequência bem definida e consistente e tem um valor em cada ponto de exemplo num intervalo de tempo contínuo.

Importante

Ao preparar um modelo para a previsão de valores futuros, certifique-se de que todas as funcionalidades utilizadas na preparação podem ser utilizadas ao executar predições para o seu horizonte pretendido.

Por exemplo, ao criar uma previsão da procura, incluindo uma funcionalidade para o preço atual das ações poderia aumentar massivamente a precisão da preparação. No entanto, se pretender prever com um horizonte longo, poderá não conseguir prever com precisão valores de ações futuros correspondentes a futuros pontos de série temporal e a precisão do modelo poderá sofrer.

Pode especificar dados de preparação separados e dados de validação diretamente no AutoMLConfig objeto. Saiba mais sobre o AutoMLConfig.

Para a previsão de série temporal, apenas a Validação Cruzada da Origem Rolling (ROCV) é utilizada para validação por predefinição. ROCV divide a série em dados de preparação e validação com um ponto de hora de origem. Deslizar a origem no tempo gera as pastas de validação cruzada. Esta estratégia preserva a integridade dos dados da série temporal e elimina o risco de fuga de dados.

O diagrama que mostra as pastas de validação cruzada separa os conjuntos de preparação e validação com base no tamanho do passo de validação cruzada.

Transmita os dados de preparação e validação como um conjunto de dados para o parâmetro training_data. Defina o número de pastas de validação cruzada com o parâmetro n_cross_validations e defina o número de períodos entre duas pastas de validação cruzada consecutivas com cv_step_size. Também pode deixar ambos os parâmetros vazios e o AutoML irá defini-los automaticamente.

APLICA-SE A:Python SDK azureml v1

automl_config = AutoMLConfig(task='forecasting',
                             training_data= training_data,
                             n_cross_validations="auto", # Could be customized as an integer
                             cv_step_size = "auto", # Could be customized as an integer
                             ...
                             **time_series_settings)

Também pode trazer os seus próprios dados de validação, saber mais em Configurar divisões de dados e validação cruzada no AutoML.

Saiba mais sobre como o AutoML aplica a validação cruzada para impedir a sobreajuste de modelos.

Configurar experimentação

O AutoMLConfig objeto define as definições e os dados necessários para uma tarefa de machine learning automatizada. A configuração de um modelo de previsão é semelhante à configuração de um modelo de regressão padrão, mas existem determinados modelos, opções de configuração e passos de caracterização especificamente para dados de série temporal.

Modelos suportados

O machine learning automatizado tenta automaticamente diferentes modelos e algoritmos como parte do processo de criação e otimização do modelo. Enquanto utilizador, não é necessário especificar o algoritmo. Para a previsão de experimentações, tanto os modelos nativos de série temporal como de aprendizagem profunda fazem parte do sistema de recomendações.

Dica

Os modelos de regressão tradicionais também são testados como parte do sistema de recomendações para a previsão de experimentações. Veja uma lista completa dos modelos suportados na documentação de referência do SDK.

Definições de configuração

Semelhante a um problema de regressão, define parâmetros de preparação padrão, como o tipo de tarefa, o número de iterações, os dados de preparação e o número de validações cruzadas. As tarefas de previsão requerem os time_column_name parâmetros e forecast_horizon para configurar a experimentação. Se os dados incluirem várias séries temporal, como dados de vendas para vários arquivos ou dados energéticos em diferentes estados, o ML automatizado deteta-o automaticamente e define o time_series_id_column_names parâmetro (pré-visualização) automaticamente. Também pode incluir parâmetros adicionais para configurar melhor a sua execução, consulte a secção de configurações opcionais para obter mais detalhes sobre o que pode ser incluído.

Importante

A identificação automática de série temporal está atualmente em pré-visualização pública. Esta versão de pré-visualização é fornecida sem um contrato de nível de serviço. Algumas funcionalidades poderão não ser suportadas ou poderão ter capacidades limitadas. Para obter mais informações, veja Termos Suplementares de Utilização para Pré-visualizações do Microsoft Azure.

Nome do parâmetro Descrição
time_column_name Utilizado para especificar a coluna datetime nos dados de entrada utilizados para criar a série temporal e inferir a respetiva frequência.
forecast_horizon Define quantos períodos pretende prever. O horizonte encontra-se em unidades da frequência de série temporal. As unidades baseiam-se no intervalo de tempo dos seus dados de preparação, por exemplo, mensalmente, semanais que o meteorologista deve prever.

O seguinte código,

  • Tira partido da ForecastingParameters classe para definir os parâmetros de previsão para a preparação da experimentação
  • Define o time_column_name para o day_datetime campo no conjunto de dados.
  • Define o forecast_horizon para 50 para prever todo o conjunto de testes.
from azureml.automl.core.forecasting_parameters import ForecastingParameters

forecasting_parameters = ForecastingParameters(time_column_name='day_datetime', 
                                               forecast_horizon=50,
                                               freq='W')
                                              

Estes forecasting_parameters são então transmitidos para o objeto padrão AutoMLConfig juntamente com o forecasting tipo de tarefa, métrica primária, critérios de saída e dados de preparação.

from azureml.core.workspace import Workspace
from azureml.core.experiment import Experiment
from azureml.train.automl import AutoMLConfig
import logging

automl_config = AutoMLConfig(task='forecasting',
                             primary_metric='normalized_root_mean_squared_error',
                             experiment_timeout_minutes=15,
                             enable_early_stopping=True,
                             training_data=train_data,
                             label_column_name=label,
                             n_cross_validations="auto", # Could be customized as an integer
                             cv_step_size = "auto", # Could be customized as an integer
                             enable_ensembling=False,
                             verbosity=logging.INFO,
                             forecasting_parameters=forecasting_parameters)

A quantidade de dados necessária para preparar com êxito um modelo de previsão com ML automatizado é influenciada pelos forecast_horizonvalores , n_cross_validationse ou target_lagstarget_rolling_window_size especificados quando configura o .AutoMLConfig

A fórmula seguinte calcula a quantidade de dados históricos que seriam necessários para construir funcionalidades de série temporal.

São necessários dados históricos mínimos: (2x forecast_horizon) + #n_cross_validations + max(max(target_lags), target_rolling_window_size)

É Error exception gerado um valor para qualquer série no conjunto de dados que não cumpra a quantidade necessária de dados históricos para as definições relevantes especificadas.

Passos de caracterização

Em todas as experimentações de machine learning automatizadas, as técnicas automáticas de dimensionamento e normalização são aplicadas aos seus dados por predefinição. Estas técnicas são tipos de caracterização que ajudam determinados algoritmos sensíveis às funcionalidades em escalas diferentes. Saiba mais sobre os passos de caracterização predefinidos em Caracterização no AutoML

No entanto, os seguintes passos são executados apenas para forecasting tipos de tarefas:

  • Detete a frequência de exemplo da série temporal (por exemplo, por hora, diariamente, semanalmente) e crie novos registos para pontos de tempo ausentes para tornar a série contínua.
  • Impute valores em falta no destino (através de preenchimento avançado) e colunas de funcionalidades (utilizando valores de coluna mediana)
  • Criar funcionalidades com base em identificadores de série temporal para ativar efeitos fixos em diferentes séries
  • Criar funcionalidades baseadas no tempo para ajudar na aprendizagem de padrões sazonais
  • Codificar variáveis categóricas para quantidades numéricas
  • Detete a série temporal não estacionária e difere-as automaticamente para mitigar o impacto das raízes das unidades.

Para ver a lista completa de possíveis funcionalidades concebidas geradas a partir de dados de série temporal, veja TimeIndexFeaturizer Class (Classe TimeIndexFeaturizer).

Nota

Os passos de caracterização de machine learning automatizados (normalização de funcionalidades, processamento de dados em falta, conversão de texto em numérico, etc.) tornam-se parte do modelo subjacente. Ao utilizar o modelo para predições, os mesmos passos de caracterização aplicados durante a preparação são aplicados automaticamente aos dados de entrada.

Personalizar a caracterização

Também tem a opção de personalizar as definições de caracterização para garantir que os dados e funcionalidades utilizados para preparar o modelo de ML resultam em predições relevantes.

As personalizações suportadas para forecasting tarefas incluem:

Personalização Definição
Atualização para fins de coluna Substitua o tipo de funcionalidade detetada automaticamente para a coluna especificada.
Atualização de parâmetros do transformador Atualize os parâmetros do transformador especificado. Atualmente, suporta Imputer (fill_value e mediana).
Remover colunas Especifica as colunas a deixar de estar em destaque.

Para personalizar as caracterizações com o SDK, especifique "featurization": FeaturizationConfig no seu AutoMLConfig objeto. Saiba mais sobre as caracterizações personalizadas.

Nota

A funcionalidade de colunas de remoção foi preterida a partir da versão 1.19 do SDK. Remova as colunas do conjunto de dados como parte da limpeza de dados, antes de as consumir na sua experimentação de ML automatizada.

featurization_config = FeaturizationConfig()

# `logQuantity` is a leaky feature, so we remove it.
featurization_config.drop_columns = ['logQuantitity']

# Force the CPWVOL5 feature to be of numeric type.
featurization_config.add_column_purpose('CPWVOL5', 'Numeric')

# Fill missing values in the target column, Quantity, with zeroes.
featurization_config.add_transformer_params('Imputer', ['Quantity'], {"strategy": "constant", "fill_value": 0})

# Fill mising values in the `INCOME` column with median value.
featurization_config.add_transformer_params('Imputer', ['INCOME'], {"strategy": "median"})

Se estiver a utilizar o estúdio do Azure Machine Learning para a sua experimentação, veja como personalizar a caracterização no estúdio.

Configurações opcionais

Estão disponíveis configurações opcionais adicionais para a previsão de tarefas, como ativar a aprendizagem profunda e especificar uma agregação de janela temporal de destino. Está disponível uma lista completa de parâmetros adicionais na documentação de referência do SDK ForecastingParameters.

Agregação de dados de & destino de frequência

Tire partido do parâmetro frequency, freq, para ajudar a evitar falhas causadas por dados irregulares, ou seja, dados que não seguem uma cadência definida, como dados diários ou de hora a hora.

Para dados altamente irregulares ou para diferentes necessidades empresariais, os utilizadores podem, opcionalmente, definir a frequência de previsão pretendida e freqespecificar a target_aggregation_function para agregar a coluna de destino da série temporal. Tirar partido destas duas definições no objeto AutoMLConfig pode ajudar a poupar algum tempo na preparação de dados.

As operações de agregação suportadas para valores de coluna de destino incluem:

Função Descrição
sum  Soma dos valores de destino
mean  Média ou média dos valores de destino
min Valor mínimo de um destino
max Valor máximo de um destino

Ativar a aprendizagem profunda

Nota

O suporte de DNN para previsão no Machine Learning Automatizado está em pré-visualização e não é suportado para execuções locais ou execuções iniciadas no Databricks.

Também pode aplicar aprendizagem profunda com redes neurais profundas, DNNs, para melhorar as classificações do seu modelo. A aprendizagem profunda do ML automatizado permite a previsão de dados de série temporal inválidos e multivariados.

Os modelos de aprendizagem profunda têm três capacidades intrínsecas:

  1. Podem aprender com mapeamentos arbitrários de entradas para saídas
  2. Suportam várias entradas e saídas
  3. Podem extrair automaticamente padrões em dados de entrada que abrangem sequências longas.

Para ativar a aprendizagem profunda, defina o enable_dnn=TrueAutoMLConfig no objeto .

automl_config = AutoMLConfig(task='forecasting',
                             enable_dnn=True,
                             ...
                             forecasting_parameters=forecasting_parameters)

Aviso

Quando ativa o DNN para experimentações criadas com o SDK, as melhores explicações do modelo são desativadas .

Para ativar o DNN para uma experimentação de AutoML criada no estúdio do Azure Machine Learning, veja as definições do tipo de tarefa no procedimento da IU do estúdio.

Agregação de janela temporal de destino

Muitas vezes, a melhor informação que um meteorologista pode ter é o valor recente do destino. As agregações de janela temporal de destino permitem-lhe adicionar uma agregação sem interrupção de valores de dados como funcionalidades. Gerar e utilizar estas funcionalidades como dados contextuais adicionais ajuda na precisão do modelo de preparação.

Por exemplo, digamos que pretende prever a procura de energia. Poderá querer adicionar uma funcionalidade de janela temporal de três dias para ter em conta as alterações térmicas dos espaços aquecidos. Neste exemplo, crie esta janela ao definir target_rolling_window_size= 3 no AutoMLConfig construtor.

A tabela mostra a engenharia de funcionalidades resultante que ocorre quando a agregação de janelas é aplicada. As colunas para o mínimo, máximo e soma são geradas numa janela deslizante de três com base nas definições definidas. Cada linha tem uma nova funcionalidade calculada, no caso do carimbo de data/hora de 8 de setembro de 2017, os valores máximo, mínimo e soma são calculados com os valores de procura de 8 de setembro de 2017 1:00 – 3:00AM. Esta janela de três deslocações para preencher dados para as linhas restantes.

janela sem interrupção de destino

Veja um exemplo de código Python que aplica a funcionalidade de agregação de janela temporal de destino.

Processamento de séries curtas

O ML automatizado considera uma série temporal uma série curta se não existirem pontos de dados suficientes para realizar as fases de preparação e validação do desenvolvimento de modelos. O número de pontos de dados varia para cada experimentação e depende do max_horizon, do número de divisões de validação cruzada e do comprimento do lookback do modelo, que é o máximo do histórico necessário para construir as funcionalidades da série temporal.

O ML automatizado oferece processamento de séries curtas por predefinição com o short_series_handling_configuration parâmetro no ForecastingParameters objeto.

Para ativar o processamento de séries curtas, o freq parâmetro também tem de ser definido. Para definir uma frequência horária, vamos definir freq='H'. Veja as opções de cadeia de frequência visitando a secção Objetos DataOffset da página da série de tempo do pandas. Para alterar o comportamento predefinido, short_series_handling_configuration = 'auto'atualize o short_series_handling_configuration parâmetro no seu ForecastingParameter objeto.

from azureml.automl.core.forecasting_parameters import ForecastingParameters

forecast_parameters = ForecastingParameters(time_column_name='day_datetime', 
                                            forecast_horizon=50,
                                            short_series_handling_configuration='auto',
                                            freq = 'H',
                                            target_lags='auto')

A tabela seguinte resume as definições disponíveis para short_series_handling_config.

Definições Descrição
auto Segue-se o comportamento predefinido para o processamento de séries curtas
  • Se todas as séries forem curtas, acolchoe os dados.
  • Se nem todas as séries forem curtas, largue a série curta.
  • pad Se short_series_handling_config = pad, o ML automatizado adiciona valores aleatórios a cada série curta encontrada. O seguinte lista os tipos de coluna e o que são acolchoados com:
  • Colunas de objeto com NaNs
  • Colunas numéricas com 0
  • Colunas booleanas/lógicas com Falso
  • A coluna de destino é preenchida com valores aleatórios com média de zero e desvio padrão de 1.
  • drop Se short_series_handling_config = drop, o ML automatizado remove a série curta e não será utilizado para preparação ou predição. As predições para esta série irão devolver NaN's.
    None Nenhuma série é acolchoada ou removida

    Aviso

    O preenchimento pode afetar a precisão do modelo resultante, uma vez que estamos a introduzir dados artificiais apenas para ultrapassar a preparação sem falhas.

    Se muitas das séries forem curtas, também poderá ver algum impacto nos resultados da explicação

    Deteção e processamento de séries temporizados não estacionárias

    Uma série temporal cujos momentos (média e variância) mudam ao longo do tempo é denominada não estacionária. Por exemplo, as séries de tempo que apresentam tendências estocásticas não são estacionárias por natureza. Para visualizar isto, a imagem abaixo desenha uma série que geralmente está em tendência ascendente. Agora, calcule e compare os valores médios (médios) da primeira e segunda metade da série. São iguais? Aqui, a média da série na primeira metade do gráfico é significativamente menor do que na segunda parte. O facto de a média da série depender do intervalo de tempo que se está a observar é um exemplo dos momentos que variam de tempo. Aqui, a média de uma série é o primeiro momento.

    Diagrama a mostrar as vendas a retalho de uma série temporal não estacionária.

    Em seguida, vamos examinar a imagem abaixo, que desenha a série original nas primeiras diferenças, $x_t = y_t - y_{t-1}$ em que $x_t$ é a alteração nas vendas a retalho e $y_t$ e $y_{t-1}$ representam a série original e o seu primeiro atraso, respetivamente. A média da série é aproximadamente constante, independentemente do período de tempo que se está a ver. Este é um exemplo de uma primeira série de tempos estacionários de primeira encomenda. A razão pela qual adicionámos o termo da primeira encomenda é porque o primeiro momento (média) não muda com o intervalo de tempo, o mesmo não pode ser dito sobre a variância, que é um segundo momento.

    Diagrama a mostrar as vendas a retalho de uma série temporal fracamente estacionária.

    Os modelos de Machine learning AutoML não conseguem lidar inerentemente com tendências estocásticas ou outros problemas bem conhecidos associados a séries temporizadas não estacionárias. Como resultado, a precisão da previsão fora da amostra será "fraca" se essas tendências estiverem presentes.

    O AutoML analisa automaticamente o conjunto de dados de série temporal para verificar se é estacionário ou não. Quando são detetadas séries cronárias não estacionárias, o AutoML aplica automaticamente uma transformação de diferenciação para mitigar o impacto de séries cronárias não estacionárias.

    Executar a experimentação

    Quando tiver o objeto AutoMLConfig pronto, pode submeter a experimentação. Após a conclusão do modelo, obtenha a melhor iteração de execução.

    ws = Workspace.from_config()
    experiment = Experiment(ws, "Tutorial-automl-forecasting")
    local_run = experiment.submit(automl_config, show_output=True)
    best_run, fitted_model = local_run.get_output()
    

    Previsão com o melhor modelo

    Utilize a melhor iteração de modelo para prever valores para dados que não foram utilizados para preparar o modelo.

    Avaliar a precisão do modelo com uma previsão sem interrupção

    Antes de colocar um modelo em produção, deve avaliar a respetiva precisão num conjunto de testes mantido nos dados de preparação. Um procedimento de melhor prática é uma chamada avaliação sem interrupção que encaminha o meteorologista preparado para a frente no tempo ao longo do conjunto de testes, com uma média de métricas de erro em várias janelas de predição para obter estimativas estatisticamente robustas para algum conjunto de métricas escolhidas. Idealmente, o conjunto de testes para a avaliação é longo em relação ao horizonte de previsão do modelo. As estimativas do erro de previsão podem ser estatisticamente ruidosas e, portanto, menos fiáveis.

    Por exemplo, suponha que prepara um modelo de vendas diárias para prever a procura até duas semanas (14 dias) para o futuro. Se existirem dados históricos suficientes disponíveis, poderá reservar os últimos meses até um ano dos dados do conjunto de testes. A avaliação sem interrupção começa por gerar uma previsão de 14 dias para as primeiras duas semanas do conjunto de testes. Em seguida, o meteorologista é avançado por algum número de dias no conjunto de testes e gera outra previsão de 14 dias antes da nova posição. O processo continua até chegar ao fim do conjunto de testes.

    Para fazer uma avaliação sem interrupção, pode chamar o rolling_forecast método das fitted_modelmétricas pretendidas de computação no resultado. Por exemplo, suponha que tem funcionalidades do conjunto de testes num DataFrame do pandas chamado test_features_df e o conjunto de testes define os valores reais do destino numa matriz numpy chamada test_target. É apresentada uma avaliação sem interrupção com o erro médio ao quadrado no seguinte exemplo de código:

    from sklearn.metrics import mean_squared_error
    rolling_forecast_df = fitted_model.rolling_forecast(
        test_features_df, test_target, step=1)
    mse = mean_squared_error(
        rolling_forecast_df[fitted_model.actual_column_name], rolling_forecast_df[fitted_model.forecast_column_name])
    

    Neste exemplo, o tamanho do passo para a previsão sem interrupção está definido como um, o que significa que o meteorologista é avançado um período ou um dia no nosso exemplo de predição da procura, em cada iteração. Assim, o número total de previsões devolvidas rolling_forecast depende da duração do conjunto de testes e deste tamanho de passo. Para obter mais detalhes e exemplos, veja a documentação rolling_forecast() e a Previsão longe do bloco de notas de dados de preparação.

    Predição para o futuro

    A função forecast_quantiles() permite especificações de quando as predições devem ser iniciadas, ao contrário do predict() método, que é normalmente utilizado para tarefas de classificação e regressão. Por predefinição, o método forecast_quantiles() gera uma previsão de ponto ou uma previsão média/mediana que não tem um cone de incerteza à sua volta. Saiba mais no bloco de notas Previsão longe da preparação de dados.

    No exemplo seguinte, primeiro substitui todos os valores em y_pred por NaN. A origem da previsão está no fim dos dados de preparação neste caso. No entanto, se substituísse apenas a segunda metade de y_pred por NaN, a função deixaria os valores numéricos no primeiro semestre não modificados, mas preveria os NaN valores no segundo semestre. A função devolve os valores previstos e as funcionalidades alinhadas.

    Também pode utilizar o forecast_destination parâmetro na forecast_quantiles() função para prever valores até uma data especificada.

    label_query = test_labels.copy().astype(np.float)
    label_query.fill(np.nan)
    label_fcst, data_trans = fitted_model.forecast_quantiles(
        test_dataset, label_query, forecast_destination=pd.Timestamp(2019, 1, 8))
    

    Muitas vezes, os clientes querem compreender as predições num quantile específico da distribuição. Por exemplo, quando a previsão é utilizada para controlar o inventário, como itens de mercearia ou máquinas virtuais para um serviço cloud. Nestes casos, o ponto de controlo é normalmente algo como "queremos que o item esteja em stock e não fique sem 99% do tempo". O seguinte demonstra como especificar que quantiles gostaria de ver para as suas predições, como o percentil 50 ou 95. Se não especificar um quantile, como no exemplo de código acima mencionado, só são geradas as predições de percentil 50.

    # specify which quantiles you would like 
    fitted_model.quantiles = [0.05,0.5, 0.9]
    fitted_model.forecast_quantiles(
        test_dataset, label_query, forecast_destination=pd.Timestamp(2019, 1, 8))
    

    Pode calcular métricas de modelo, como erro de raiz média quadrada (RMSE) ou erro de percentagem absoluta média (MAPE) para o ajudar a estimar o desempenho dos modelos. Veja a secção Avaliar do bloco de notas de procura de partilhas de bicicletas para obter um exemplo.

    Após a determinação da precisão geral do modelo, o próximo passo mais realista é utilizar o modelo para prever valores futuros desconhecidos.

    Forneça um conjunto de dados no mesmo formato que o conjunto test_dataset de testes, mas com datetimes futuros e o conjunto de predição resultante são os valores previstos para cada passo de série temporal. Suponha que os últimos registos da série temporal no conjunto de dados foram para 31/12/2018. Para prever a procura para o dia seguinte (ou quantos períodos precisar de prever, <= forecast_horizon), crie um único registo de série temporal para cada loja para 01/01/2019.

    day_datetime,store,week_of_year
    01/01/2019,A,1
    01/01/2019,A,1
    

    Repita os passos necessários para carregar estes dados futuros para um dataframe e, em seguida, execute best_run.forecast_quantiles(test_dataset) para prever valores futuros.

    Nota

    As predições de exemplo não são suportadas para previsão com ML automatizado quando target_lags e/ou target_rolling_window_size estão ativadas.

    Previsão em escala

    Existem cenários em que um único modelo de machine learning é insuficiente e são necessários vários modelos de machine learning. Por exemplo, prever vendas para cada loja individual para uma marca ou personalizar uma experiência para utilizadores individuais. Criar um modelo para cada instância pode levar a resultados melhorados em muitos problemas de machine learning.

    O agrupamento é um conceito na previsão de série temporal que permite combinar séries temporizadores para preparar um modelo individual por grupo. Esta abordagem pode ser particularmente útil se tiver séries temporizadores que exijam suavização, preenchimento ou entidades no grupo que possam beneficiar do histórico ou tendências de outras entidades. Muitos modelos e a previsão de série temporal hierárquica são soluções com tecnologia de machine learning automatizado para estes cenários de previsão de grande escala.

    Muitos modelos

    A solução de muitos modelos do Azure Machine Learning com machine learning automatizado permite aos utilizadores preparar e gerir milhões de modelos em paralelo. Muitos modelos O acelerador de soluções tira partido dos pipelines do Azure Machine Learning para preparar o modelo. Especificamente, um objeto pipeline e ParalleRunStep são utilizados e requerem parâmetros de configuração específicos definidos através do ParallelRunConfig.

    O diagrama seguinte mostra o fluxo de trabalho para a solução de muitos modelos.

    Diagrama de conceito de muitos modelos

    O código seguinte demonstra os parâmetros principais de que os utilizadores precisam para configurar a execução de muitos modelos. Veja o bloco de notas Muitos Modelos – ML Automatizado para obter um exemplo de previsão de vários modelos

    from azureml.train.automl.runtime._many_models.many_models_parameters import ManyModelsTrainParameters
    
    partition_column_names = ['Store', 'Brand']
    automl_settings = {"task" : 'forecasting',
                       "primary_metric" : 'normalized_root_mean_squared_error',
                       "iteration_timeout_minutes" : 10, #This needs to be changed based on the dataset. Explore how long training is taking before setting this value 
                       "iterations" : 15,
                       "experiment_timeout_hours" : 1,
                       "label_column_name" : 'Quantity',
                       "n_cross_validations" : "auto", # Could be customized as an integer
                       "cv_step_size" : "auto", # Could be customized as an integer
                       "time_column_name": 'WeekStarting',
                       "max_horizon" : 6,
                       "track_child_runs": False,
                       "pipeline_fetch_max_batch_size": 15,}
    
    mm_paramters = ManyModelsTrainParameters(automl_settings=automl_settings, partition_column_names=partition_column_names)
    
    

    Previsão de série temporal hierárquica

    Na maioria das aplicações, os clientes têm de compreender as suas previsões a um nível macro e micro da empresa; quer se trate de prever vendas de produtos em diferentes localizações geográficas ou compreender a procura esperada de mão-de-obra para diferentes organizações numa empresa. A capacidade de preparar um modelo de machine learning para prever inteligentemente dados de hierarquia é essencial.

    Uma série temporal hierárquica é uma estrutura na qual cada uma das séries exclusivas é disposta numa hierarquia com base em dimensões como, por exemplo, geografia ou tipo de produto. O exemplo seguinte mostra dados com atributos exclusivos que formam uma hierarquia. A nossa hierarquia é definida por: o tipo de produto, como auscultadores ou tablets, a categoria de produto que divide os tipos de produto em acessórios e dispositivos e a região em que os produtos são vendidos.

    Exemplo de tabela de dados não processados para dados hierárquicos

    Para o visualizar, os níveis de folha da hierarquia contêm todas as séries de tempo com combinações exclusivas de valores de atributos. Cada nível superior na hierarquia considera uma dimensão menor para definir a série temporal e agrega cada conjunto de nós subordinados do nível inferior para um nó principal.

    Elemento visual de hierarquia para dados

    A solução de série temporal hierárquica baseia-se na Solução Muitos Modelos e partilha uma configuração semelhante.

    O código seguinte demonstra os parâmetros-chave para configurar as execuções de previsão de série temporal hierárquica. Veja a série temporal Hierárquica – bloco de notas ML Automatizado, para obter um exemplo de ponto a ponto.

    
    from azureml.train.automl.runtime._hts.hts_parameters import HTSTrainParameters
    
    model_explainability = True
    
    engineered_explanations = False # Define your hierarchy. Adjust the settings below based on your dataset.
    hierarchy = ["state", "store_id", "product_category", "SKU"]
    training_level = "SKU"# Set your forecast parameters. Adjust the settings below based on your dataset.
    time_column_name = "date"
    label_column_name = "quantity"
    forecast_horizon = 7
    
    
    automl_settings = {"task" : "forecasting",
                       "primary_metric" : "normalized_root_mean_squared_error",
                       "label_column_name": label_column_name,
                       "time_column_name": time_column_name,
                       "forecast_horizon": forecast_horizon,
                       "hierarchy_column_names": hierarchy,
                       "hierarchy_training_level": training_level,
                       "track_child_runs": False,
                       "pipeline_fetch_max_batch_size": 15,
                       "model_explainability": model_explainability,# The following settings are specific to this sample and should be adjusted according to your own needs.
                       "iteration_timeout_minutes" : 10,
                       "iterations" : 10,
                       "n_cross_validations" : "auto", # Could be customized as an integer
                       "cv_step_size" : "auto", # Could be customized as an integer
                       }
    
    hts_parameters = HTSTrainParameters(
        automl_settings=automl_settings,
        hierarchy_column_names=hierarchy,
        training_level=training_level,
        enable_engineered_explanations=engineered_explanations
    )
    

    Blocos de notas de exemplo

    Veja os blocos de notas de previsão de exemplo para obter exemplos de código detalhados de configuração de previsão avançada, incluindo:

    Passos seguintes