Recursos de calendário para previsão de séries temporais no AutoML

Este artigo se concentra nos recursos baseados em calendário que o AutoML cria para aumentar a precisão dos modelos de regressão de previsão. Uma vez que as férias podem ter uma forte influência sobre como o sistema modelado se comporta, o tempo antes, durante e depois de um feriado pode enviesar os padrões da série. Cada feriado gera uma janela sobre o conjunto de dados existente à qual o aluno pode atribuir um efeito. Isso pode ser especialmente útil em cenários como feriados que geram alta demanda por produtos específicos. Consulte o artigo de visão geral de métodos para obter mais informações gerais sobre a metodologia de previsão no AutoML. Instruções e exemplos para treinar modelos de previsão no AutoML podem ser encontrados em nosso artigo de configuração do AutoML para previsão de séries temporais .

Como parte da engenharia de recursos, o AutoML transforma colunas de tipo data/hora fornecidas nos dados de treinamento em novas colunas de recursos baseados em calendário. Esses recursos podem ajudar os modelos de regressão a aprender padrões sazonais em várias cadências. O AutoML sempre pode criar recursos de calendário a partir do índice de tempo da série temporal, uma vez que esta é uma coluna obrigatória nos dados de treinamento. Os recursos de calendário também são feitos de outras colunas com o tipo datetime, se houver alguma. Consulte como o AutoML usa seu guia de dados para obter mais informações sobre os requisitos de dados.

O AutoML considera duas categorias de recursos de calendário: recursos padrão baseados inteiramente em valores de data e hora e recursos de feriados específicos de um país ou região do mundo. Abordaremos esses recursos no restante do artigo.

Recursos de calendário padrão

A tabela a seguir mostra o conjunto completo de recursos de calendário padrão do AutoML, juntamente com uma saída de exemplo. O exemplo usa o formato padrão YY-mm-dd %H-%m-%d para representação datetime.

Nome da funcionalidade Description Exemplo de saída para 2011-01-01 00:25:30
year Característica numérica que representa o ano civil 2011
year_iso Representa o ano ISO conforme definido na ISO 8601. Os anos ISO começam na primeira semana do ano que tem uma quinta-feira. Por exemplo, se 1 de janeiro é uma sexta-feira, o ano ISO começa em 4 de janeiro. Os anos ISO podem diferir dos anos civis. 2010
half Recurso que indica se a data é no primeiro ou segundo semestre do ano. É 1 se a data for anterior a 1 e 2 de julho caso contrário.
quarter Característica numérica que representa o trimestre da data dada. Leva valores 1, 2, 3 ou 4 representando o primeiro, segundo, terceiro, quarto trimestre do ano civil. 1
month Característica numérica que representa o mês do calendário. Leva valores de 1 a 12. 1
month_lbl Recurso de cadeia de caracteres que representa o nome do mês. 'Janeiro'
day Característica numérica que representa o dia do mês. Leva valores de 1 a 31. 1
hour Característica numérica que representa a hora do dia. Leva valores de 0 a 23. 0
minute Característica numérica que representa o minuto dentro da hora. Leva valores de 0 a 59. 25
second Característica numérica que representa o segundo da data-hora dada. No caso em que apenas o formato de data é fornecido, então ele é assumido como 0. Leva valores de 0 a 59. 30
am_pm Característica numérica que indica se a hora é de manhã ou à noite. É 0 para tempos antes das 12h e 1 para tempos depois das 12h. 0
am_pm_lbl Recurso de cadeia de caracteres que indica se a hora é de manhã ou à noite. 'AM'
hour12 Característica numérica que representa a hora do dia num relógio de 12 horas. Leva valores de 0 a 12 para a primeira metade do dia e de 1 a 11 para a segunda metade. 0
wday Característica numérica que representa o dia da semana. Leva valores de 0 a 6, onde 0 corresponde a segunda-feira. 5
wday_lbl Recurso de cadeia de caracteres que representa o nome do dia da semana.
qday Característica numérica que representa o dia dentro do trimestre. Leva valores de 1 a 92. 1
yday Característica numérica que representa o dia do ano. Leva valores de 1 a 365, ou de 1 a 366 no caso de ano bissexto. 1
week Característica numérica que representa a semana ISO, conforme definido na ISO 8601. As semanas ISO começam sempre na segunda-feira e terminam no domingo. Leva valores de 1 a 52, ou 53 para anos tendo 1º de janeiro caindo na quinta-feira ou para anos bissextos tendo 1º de janeiro caindo na quarta-feira. 52

O conjunto completo de recursos de calendário padrão pode não ser criado em todos os casos. O conjunto gerado depende da frequência da série temporal e se os dados de treinamento contêm recursos de data/hora além do índice de tempo. A tabela a seguir mostra os recursos criados para diferentes tipos de coluna:

Finalidade da coluna Funcionalidades do calendário
Índice de tempo O conjunto completo menos recursos de calendário que têm alta correlação com outros recursos. Por exemplo, se a frequência da série temporal for diária, todos os recursos com uma frequência mais granular do que diária serão removidos, pois não fornecem informações úteis.
Outra coluna datetime Um conjunto reduzido que consiste em Year, Month, Day, DayOfWeek, DayOfYear, QuarterOfYear, WeekOfMonth, MinuteHour, e Second. Se a coluna for uma data sem hora, Hour, Minutee Second será 0.

Características de férias

O AutoML pode, opcionalmente, criar recursos que representam feriados de um país ou região específica. Esses recursos são configurados no AutoML usando o country_or_region_for_holidays parâmetro, que aceita um código de país ISO.

Nota

Os recursos de férias só podem ser feitos para séries temporais com frequência diária.

A tabela a seguir resume os recursos de feriado:

Nome da funcionalidade Description
Holiday Recurso de cadeia de caracteres que especifica se uma data é um feriado nacional/regional. Dias dentro de algum intervalo de um feriado também são marcados.
isPaidTimeOff Recurso binário que assume o valor 1 se o dia for um "feriado de folga remunerada" em determinado país ou região.

O AutoML usa os Conjuntos de Dados Abertos do Azure como uma fonte para informações de férias. Para obter mais informações, consulte a documentação do PublicHolidays .

Para entender melhor a geração de recursos de férias, considere os seguintes dados de exemplo:

sample_data

Para criar recursos de feriados americanos para esses dados, definimos como country_or_region_for_holiday 'EUA' nas configurações de previsão, conforme mostrado no exemplo de código a seguir:

from azure.ai.ml import automl

# create a forcasting job
forecasting_job = automl.forecasting(
    compute='test_cluster',   # Name of single or multinode AML compute infrastructure created by user
    experiment_name=exp_name, # name of experiment 
    training_data=sample_data,  
    target_column_name='demand',
    primary_metric='NormalizedRootMeanSquaredError',
    n_cross_validations=3,
    enable_model_explainability=True
)

# set custom forecast settings
forecasting_job.set_forecast_settings(
    time_column_name='timeStamp',
    country_or_region_for_holidays='US'
)

Os recursos de feriados gerados se parecem com a seguinte saída:

sample_data_output

Observe que os recursos gerados têm o prefixo _automl_ pré-configurado para seus nomes de coluna. O AutoML geralmente usa esse prefixo para distinguir os recursos de entrada dos recursos projetados.

Próximos passos