Pular para o conteúdo principal

Use métricas personalizadas com perfil de dados

Esta página descreve como criar métricas personalizadas no perfil de dados. Além das análises e estatísticas de deriva que são calculadas automaticamente, você pode criar métricas personalizadas. Por exemplo, você pode querer acompanhar uma média ponderada que capture algum aspecto da lógica de negócios ou usar uma pontuação de qualidade de modelo personalizada. Você também pode criar métricas de deriva personalizadas que rastreiam as alterações nos valores da tabela principal (em comparação com a linha de base ou o período anterior).

Para obter mais detalhes sobre como usar a API MonitorMetric , consulte a referência da API.

Tipos de métricas personalizadas

perfil de dados inclui os seguintes tipos de métricas personalizadas:

  • Métricas agregadas, que são calculadas com base nas colunas da tabela principal. As métricas agregadas são armazenadas na tabela de métricas de perfil.
  • Métricas derivadas, que são calculadas com base em métricas agregadas previamente computadas e não utilizam diretamente dados da tabela primária. As métricas derivadas são armazenadas na tabela de métricas de perfil.
  • As métricas de deriva comparam métricas agregadas ou derivadas previamente calculadas a partir de duas janelas de tempo diferentes, ou entre a tabela primária e a tabela de referência. As métricas de deriva são armazenadas na tabela de métricas de deriva.

Utilizar métricas derivadas e de deriva sempre que possível minimiza o recálculo em toda a tabela primária. Somente as métricas agregadas acessam dados da tabela principal. As métricas derivadas e de deriva podem então ser calculadas diretamente a partir dos valores das métricas agregadas.

Parâmetros de métricas personalizadas

Para definir uma métricas personalizadas, você cria um padrão Jinja para uma expressão de coluna SQL . As tabelas desta seção descrevem os parâmetros que definem as métricas e os parâmetros utilizados no padrão Jinja.

Parâmetro

Descrição

type

Um de MonitorMetricType.CUSTOM_METRIC_TYPE_AGGREGATE, MonitorMetricType.CUSTOM_METRIC_TYPE_DERIVEDou MonitorMetricType.CUSTOM_METRIC_TYPE_DRIFT.

name

Nome da coluna para as métricas personalizadas nas tabelas de métricas.

input_columns

Lista dos nomes das colunas na tabela de entrada para as quais os parâmetros devem ser calculados. Para indicar que mais de uma coluna é usada no cálculo, use :table. Veja os exemplos neste artigo.

definition

Jinja padrão para uma expressão SQL que especifica como compute os metros. Consulte Criar definição.

output_data_type

O tipo de dados Spark da saída dos métricas está em formato de string JSON .

Criar definition

O parâmetro definition deve ser uma expressão de string única no formato de um padrão Jinja. Não pode conter junções ou subconsultas.

A tabela a seguir lista os parâmetros que você pode usar para criar um padrão Jinja SQL para especificar como calcular as medidas.

Parâmetro

Descrição

{{input_column}}

Coluna utilizada para compute as métricas personalizadas.

{{prediction_col}}

Coluna contendo previsões do modelo de ML . Utilizado com análise InferenceLog .

{{label_col}}

Coluna contendo os dados de referência do modelo de aprendizado ML . Utilizado com análise InferenceLog .

{{current_df}}

Para comparação com a janela de tempo anterior. Dados do período anterior.

{{base_df}}

Para comparação da deriva com a tabela de referência. Dados de referência.

Exemplo de agregado de unidades

O exemplo a seguir calcula a média do quadrado dos valores em uma coluna e é aplicado às colunas f1 e f2. O resultado é salvo como uma nova coluna na tabela de métricas de perfil e é mostrado nas linhas de análise correspondentes às colunas f1 e f2. Os nomes de coluna aplicáveis são substituídos pelo parâmetro Jinja {{input_column}}.

Python
from databricks.sdk.service.catalog import MonitorMetric, MonitorMetricType
from pyspark.sql import types as T

MonitorMetric(
type=MonitorMetricType.CUSTOM_METRIC_TYPE_AGGREGATE,
name="squared_avg",
input_columns=["f1", "f2"],
definition="avg(`{{input_column}}`*`{{input_column}}`)",
output_data_type=T.StructField("output", T.DoubleType()).json(),
)

O código a seguir define uma métrica personalizada que calcula a média da diferença entre as colunas f1 e f2. Este exemplo mostra o uso de [":table"] no parâmetro input_columns para indicar que mais de uma coluna da tabela é usada no cálculo.

Python
from databricks.sdk.service.catalog import MonitorMetric, MonitorMetricType
from pyspark.sql import types as T

MonitorMetric(
type=MonitorMetricType.CUSTOM_METRIC_TYPE_AGGREGATE,
name="avg_diff_f1_f2",
input_columns=[":table"],
definition="avg(f1 - f2)",
output_data_type=T.StructField("output", T.DoubleType()).json(),
)

Este exemplo calcula uma pontuação ponderada de qualidade do modelo. Para observações onde a coluna critical é True, uma penalidade maior é atribuída quando o valor previsto para essa linha não corresponde à verdade fundamental. Como é definida nas colunas brutas (prediction e label), é definida como uma métrica agregada. A coluna :table indica que esta medida é calculada a partir de múltiplas colunas. Os parâmetros Jinja {{prediction_col}} e {{label_col}} são substituídos pelo nome das colunas de rótulo de previsão e verdade fundamental para o perfil.

Python
from databricks.sdk.service.catalog import MonitorMetric, MonitorMetricType
from pyspark.sql import types as T

MonitorMetric(
type=MonitorMetricType.CUSTOM_METRIC_TYPE_AGGREGATE,
name="weighted_error",
input_columns=[":table"],
definition="""avg(CASE
WHEN {{prediction_col}} = {{label_col}} THEN 0
WHEN {{prediction_col}} != {{label_col}} AND critical=TRUE THEN 2
ELSE 1 END)""",
output_data_type=T.StructField("output", T.DoubleType()).json(),
)

Exemplo de meme derivado

O código a seguir define uma métrica personalizada que calcula a raiz quadrada da métrica squared_avg definida anteriormente nesta seção. Como se trata de uma métrica derivada, ela não faz referência aos dados da tabela primária e, em vez disso, é definida em termos das métricas agregadas squared_avg . O resultado é salvo como uma nova coluna na tabela de métricas do perfil.

Python
from databricks.sdk.service.catalog import MonitorMetric, MonitorMetricType
from pyspark.sql import types as T

MonitorMetric(
type=MonitorMetricType.CUSTOM_METRIC_TYPE_DERIVED,
name="root_mean_square",
input_columns=["f1", "f2"],
definition="sqrt(squared_avg)",
output_data_type=T.StructField("output", T.DoubleType()).json(),
)

Exemplo de métricas de deriva

O código a seguir define uma métrica de deriva que rastreia a mudança nas métricas weighted_error definidas anteriormente nesta seção. Os parâmetros {{current_df}} e {{base_df}} permitem que os métodos referenciem os valores weighted_error da janela atual e da janela de comparação. A janela de comparação pode ser tanto os dados de referência quanto os dados da janela de tempo anterior. As métricas de deriva são salvas na tabela de métricas de deriva.

Python
from databricks.sdk.service.catalog import MonitorMetric, MonitorMetricType
from pyspark.sql import types as T

MonitorMetric(
type=MonitorMetricType.CUSTOM_METRIC_TYPE_DRIFT,
name="error_rate_delta",
input_columns=[":table"],
definition="{{current_df}}.weighted_error - {{base_df}}.weighted_error",
output_data_type=T.StructField("output", T.DoubleType()).json(),
)