ANOMALY_DETECTION

Nome totalmente qualificado: SNOWFLAKE.ML.ANOMALY_DETECTION

A detecção de anomalias permite que você detecte exceções em seus dados de série temporal usando um algoritmo de aprendizado de máquina. Você usa CREATE SNOWFLAKE.ML.ANOMALY_DETECTION para criar e treinar o modelo de detecção e, em seguida, usa o método <nome>!DETECT_ANOMALIES para detectar anomalias.

Importante

Aviso legal. Esta função baseada em ML do Snowflake Cortex é alimentada por tecnologia de aprendizado de máquina. A tecnologia de aprendizado de máquina e os resultados fornecidos podem ser imprecisos, inadequados ou tendenciosos. As decisões baseadas em resultados de aprendizado de máquina, incluindo aquelas incorporadas em pipelines automáticos, devem ter supervisão humana e processos de revisão para garantir que o conteúdo gerado pelo modelo seja preciso. As consultas de função baseadas em ML do Snowflake Cortex serão tratadas como qualquer outra consulta SQL e podem ser consideradas metadados.

Metadados. Quando você usa funções baseadas em ML do Snowflake Cortex, o Snowflake registra mensagens de erro genéricas retornadas por uma função ML, além do que é mencionado em campos de metadados. Esses logs de erros nos ajudam a solucionar problemas que surgem e a melhorar essas funções para melhor atender você.

CREATE SNOWFLAKE.ML.ANOMALY_DETECTION

Cria um objeto que você usa para detectar anomalias ou substitui o objeto de detecção de anomalias com o mesmo nome.

Sintaxe

CREATE [ OR REPLACE ] SNOWFLAKE.ML.ANOMALY_DETECTION <name>(
  INPUT_DATA => <reference_to_training_data>,
  [ SERIES_COLNAME => '<series_column_name>', ]
  TIMESTAMP_COLNAME => '<timestamp_column_name>',
  TARGET_COLNAME => '<target_column_name>',
  LABEL_COLNAME => '<label_column_name>',
  [ CONFIG_OBJECT => <config_object> ]
)
[ [ WITH ] TAG ( <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' , ... ] ) ]
[ COMMENT = '<string_literal>' ]
Copy

Parâmetros

name

Especifica o identificador (nome) do objeto de detecção de anomalia; deve ser único para o esquema no qual o objeto é criado.

Além disso, o identificador deve começar com um caractere alfabético e não pode conter espaços ou caracteres especiais, a menos que toda a cadeia de caracteres do identificador esteja entre aspas duplas (por exemplo, "My object"). Os identificadores delimitados por aspas duplas também diferenciam letras maiúsculas de minúsculas. Para obter mais detalhes, consulte Requisitos para identificadores.

Argumentos do construtor

Obrigatório:

INPUT_DATA => reference_to_training_data

Especifica uma referência à tabela, exibição ou consulta que retorna os dados de treinamento para o modelo.

Para criar esta referência, chame SYSTEM$REFERENCE ou SYSTEM$QUERY_REFERENCE.

TIMESTAMP_COLNAME => 'timestamp_column_name'

Especifica o nome da coluna que contém os carimbos de data/hora (TIMESTAMP_NTZ) nos dados da série temporal.

TARGET_COLNAME => 'target_column_name'

Especifica o nome da coluna que contém os dados (NUMERIC ou FLOAT) a serem analisados.

LABEL_COLNAME => 'label_column_name'

Especifica o nome da coluna que contém os rótulos dos dados. Os rótulos são valores booleanos (verdadeiro/falso) que indicam se uma determinada linha é uma anomalia conhecida. Se você não tiver dados rotulados, passe uma cadeia de caracteres vazia ('') para este argumento.

Opcional:

SERIES_COLNAME => 'series_column_name'

Nome da coluna que contém o identificador da série (para série temporal múltipla). Esta coluna deve ser uma VARIANT pois pode ser qualquer tipo de valor ou uma combinação de valores de mais de uma coluna em uma matriz.

CONFIG_OBJECT => config_object

Um OBJECT contendo pares chave-valor usados para configurar a tarefa de treinamento do modelo.

Chave

Tipo

Padrão

Descrição

on_error

STRING

'ABORT'

Cadeia de caracteres (constante) que especifica o método de tratamento de erros para treinamento. Isto é mais útil ao treinar múltiplas séries. Os valores suportados são:

  • 'abort': anula o treinamento se um erro for encontrado em qualquer série temporal.

  • 'skip': ignore qualquer série temporal em que o treinamento encontre um erro. Isso permite que o treinamento seja bem-sucedido para outras séries temporais. Para ver quais séries falharam durante o treinamento do modelo, chame o método <nome>!SHOW_TRAINING_LOGS do modelo.

Notas de uso

  • Se os nomes das colunas especificados pelos argumentos TIMESTAMP_COLNAME, TARGET_COLNAME ou LABEL_COLNAME não existirem na tabela, exibição ou consulta especificada pelo argumento INPUT_DATA, ocorre um erro.

  • A replicação de instâncias de classe não é suportada atualmente.

SHOW SNOWFLAKE.ML.ANOMALY_DETECTION

Lista todos os modelos de detecção de anomalias.

Sintaxe

SHOW SNOWFLAKE.ML.ANOMALY_DETECTION [ LIKE <pattern> ];
  [ IN
      {
        ACCOUNT                  |

        DATABASE                 |
        DATABASE <database_name> |

        SCHEMA                   |
        SCHEMA <schema_name>     |
        <schema_name>
      }
   ]
Copy

Parâmetros

LIKE 'pattern'

Opcionalmente, filtra a saída do comando pelo nome do objeto. O filtro utiliza correspondência de padrão que não diferencia maiúsculas e minúsculas, com suporte para caracteres curinga SQL (% e _).

Por exemplo, os seguintes padrões retornam os mesmos resultados:

... LIKE '%testing%' ...
... LIKE '%TESTING%' ...

. padrão: sem valor (nenhuma filtragem é aplicada à saída).

[ IN ... ]

Opcionalmente, especifica o escopo do comando. Especifique um dos seguintes:

ACCOUNT

Retorna registros para toda a conta.

DATABASE, . DATABASE db_name

Retorna registros do banco de dados atual em uso ou de um banco de dados especificado (db_name).

Se você especificar DATABASE sem db_name e nenhum banco de dados estiver em uso, a palavra-chave não terá efeito sobre a saída.

SCHEMA, . SCHEMA schema_name, . schema_name

Retorna registros do esquema atual em uso ou de um esquema especificado (schema_name).

SCHEMA é opcional se um banco de dados estiver em uso ou se você especificar o schema_name totalmente qualificado (por exemplo, db.schema).

Se nenhum banco de dados estiver em uso, a especificação SCHEMA não terá efeito sobre a saída.

Padrão: depende se a sessão tem ou não um banco de dados em uso no momento:

  • Banco de dados: DATABASE é o padrão (ou seja, o comando retorna os objetos nos quais você tem privilégios para visualizar no banco de dados).

  • Sem banco de dados: ACCOUNT é o padrão (ou seja, o comando retorna os objetos que você tem privilégios de visualização em sua conta).

Saída

Propriedades de modelo e metadados nas colunas a seguir:

Coluna

Descrição

created_on

Data e hora em que o modelo foi criado

name

Nome do modelo

database_name

Banco de dados no qual o modelo está armazenado

schema_name

Esquema no qual o modelo está armazenado

current_version

A versão do algoritmo do modelo

comment

Comentário para o modelo

owner

Nome da função proprietária do modelo

DROP SNOWFLAKE.ML.ANOMALY_DETECTION

Remove o modelo especificado do esquema atual ou especificado. Os modelos descartados não podem ser recuperados; eles devem ser recriados.

Sintaxe

DROP SNOWFLAKE.ML.ANOMALY_DETECTION [IF EXISTS] <name>;
Copy

Parâmetros

name

Especifica o identificador do modelo a ser descartado. Se o identificador contiver espaços, caracteres especiais ou caracteres com letras maiúsculas e minúsculas, toda a cadeia de caracteres deve ser delimitada por aspas duplas. Os identificadores delimitados por aspas duplas também diferenciam letras maiúsculas de minúsculas.

Se o identificador do modelo não estiver totalmente qualificado (na forma de db_name.schema_name.name ou schema_name.name), o comando procura o modelo no esquema atual para a sessão.

<nome>!DETECT_ANOMALIES

Detecta e relata anomalias nos dados de entrada passados para o método. Este é um método do objeto de detecção de anomalia que você cria executando o comando CREATE SNOWFLAKE.ML.ANOMALY_DETECTION.

O método retorna uma tabela que rotula cada linha dos dados de entrada como anômala ou não.

Sintaxe

<name>!DETECT_ANOMALIES(
  INPUT_DATA => <reference_to_data_to_analyze>,
  TIMESTAMP_COLNAME => '<timestamp_column_name>',
  TARGET_COLNAME => '<target_column_name>',
  [ CONFIG_OBJECT => <configuration_object>, ]
  [ SERIES_COLNAME => '<series_column_name>' ]
)
Copy

Nota

name é o objeto que você cria executando o comando CREATE SNOWFLAKE.ML.ANOMALY_DETECTION.

Argumentos

Obrigatório:

INPUT_DATA => reference_to_data_to_analyze

Uma referência à tabela, exibição ou consulta que retorna os dados a serem analisados.

TIMESTAMP_COLNAME => 'timestamp_column_name'

O nome da coluna que contém os carimbos de data/hora (TIMESTAMP_NTZ) nos dados da série temporal.

TARGET_COLNAME => 'target_column_name'

O nome da coluna que contém os dados a serem analisados (tipo NUMERIC ou FLOAT).

Opcional:

SERIES_COLNAME => 'series_column_name'

Nome da coluna que contém o identificador da série (para série temporal múltipla). Esta coluna deve ser uma VARIANT pois pode ser qualquer tipo de valor ou valores de várias colunas em uma matriz.

CONFIG_OBJECT => config_object

Um OBJECT contendo pares chave-valor usados para configurar o trabalho de detecção da anomalia.

Chave

Tipo

Padrão

Descrição

prediction_interval

FLOAT

0,99

Valor entre 0 e 1 que especifica a porcentagem das observações que devem ser marcadas como anomalias:

  • Para uma detecção de anomalias menos rigorosa (ou seja, identificando menos observações marcadas como anomalias), especifique um valor mais alto.

  • Para uma detecção de anomalias mais rigorosa (ou seja, identificando mais observações como anomalias), reduza este valor.

on_error

STRING

'ABORT'

Cadeia de caracteres (constante) que especifica o tratamento do erro para a tarefa de detecção de anomalia. Isto é mais útil ao detectar anomalias em múltiplas séries. Os valores suportados são:

  • 'abort': anule a operação se um erro for encontrado em qualquer série temporal.

  • 'skip': ignore qualquer série temporal em que a detecção de anomalias encontre um erro. Isso permite que a detecção de anomalias seja bem-sucedida em outras séries temporais. As séries que falharam estão ausentes da saída.

Saída

A função retorna as seguintes colunas:

Nome da coluna

Tipo de dados

Descrição

TS

TIMESTAMP_NTZ

Os carimbos de data/hora dos dados

Y

FLOAT

Os valores da série temporal

FORECAST

FLOAT

O valor previsto no carimbo de data/hora.

LOWER_BOUND

FLOAT

O limite inferior do valor dentro do intervalo de previsão. Valores menores que isso são sinalizados como anomalias.

UPPER_BOUND

FLOAT

O limite superior do valor dentro do intervalo de previsão. Valores maiores do que isso são sinalizados como anomalias.

IS_ANOMALY

BOOLEAN

Verdadeiro se o valor for uma anomalia; se não for, falso.

PERCENTILE

FLOAT

O percentil correspondente do valor Y observado dado o intervalo de previsão.

Se o percentil estiver fora de ((1 - alpha) / 2, 1 - (1 - alpha) / 2), o valor será sinalizado como uma anomalia. Por exemplo, se o intervalo de previsão for 0,95, um percentil de 0,96 não seria uma anomalia, mas um percentil de 0,98 seria.

Se o campo prediction_interval não for especificado no objeto de configuração, o padrão será 0,99.

DISTANCE

FLOAT

O múltiplo do desvio padrão da coluna FORECAST (pontuação z)

Notas de uso

  • As colunas para os dados especificados no comando CREATE SNOWFLAKE.ML.ANOMALY_DETECTION (no argumento do construtor INPUT_DATA) deve corresponder às colunas dos dados especificados no argumento INPUT_DATAdeste método.

    Por exemplo, se você tiver passado o argumento SERIES_COLNAME para o comando CREATE SNOWFLAKE.ML.ANOMALY_DETECTION, você também deverá passar o argumento SERIES_COLNAME para este método. Se você tiver omitido o argumento SERIES_COLNAME no comando, você deverá omitir esse argumento aqui.

  • Se os nomes das colunas especificados pelos argumentos TIMESTAMP_COLNAME ou TARGET_COLNAMEnão existirem na tabela, exibição ou consulta especificada pelo argumento INPUT_DATA, ocorre um erro.

<nome>!EXPLAIN_FEATURE_IMPORTANCE

Retorna a importância relativa do recurso para cada recurso usado pelo modelo.

Sintaxe

<name>!EXPLAIN_FEATURE_IMPORTANCE();
Copy

Saída

Coluna

Tipo

Descrição

SERIES

VARIANT

Valor da série (presente apenas se o modelo foi treinado com várias séries temporais)

RANK

INTEGER

A classificação de importância de um recurso para uma série específica

FEATURE_NAME

VARCHAR

O nome do recurso usado para treinar o modelo. aggregated_endogenous_features representa todos os recursos derivados como transformações de sua variável de destino.

IMPORTANCE_SCORE

FLOAT

A pontuação de importância do recurso: um valor em [0, 1], com 0 sendo a importância mais baixa possível e 1 a mais alta.

FEATURE_TYPE

VARCHAR

A origem do recurso, uma das seguintes:

  • user_provided

  • derived_from_timestamp

  • derived_from_endogenous

<nome>!SHOW_TRAINING_LOGS

Retorna logs do treinamento do modelo. A saída é diferente de NULL somente quando 'ON_ERROR' = 'SKIP' é definido no CONFIG_OBJECT de treinamento.

Sintaxe

<name>!SHOW_TRAINING_LOGS();
Copy

Saída

A coluna SERIES está presente apenas para modelos de série múltipla. Os modelos de série única não possuem esta coluna.

Coluna

Tipo

Descrição

SERIES

VARIANT

Valor da série. Presente apenas se o modelo foi treinado com várias séries temporais.

LOGS

OBJECT

Um log de erros encontrados durante o treinamento. O valor da chave Errors é uma matriz de erros de treinamento. Se nenhum erro for encontrado, a coluna LOGS será NULL.

Exemplos

Consulte Detecção de anomalias.