Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Esta página descreve as tabelas métricas criadas pela criação de perfil de dados. Para informações sobre o painel criado por um perfil, consulte Painel de perfil de dados.
Quando um perfil é executado em uma tabela Databricks, ele cria ou atualiza duas tabelas métricas: uma tabela de métricas de perfil e uma tabela de métricas de desvio.
- A tabela de métricas de perfil contém estatísticas de resumo para cada coluna e para cada combinação de janela de tempo, fatia e colunas de agrupamento. Para
InferenceLoganálise, a tabela de análise também contém métricas de precisão do modelo. - A tabela de métricas de desvio contém estatísticas que controlam as alterações na distribuição de uma métrica. As tabelas de desvio podem ser usadas para visualizar ou alertar sobre alterações nos dados em vez de valores específicos. São calculados os seguintes tipos de deriva:
- O desvio consecutivo compara uma janela com a janela de tempo anterior. O desvio consecutivo só é calculado se existir uma janela de tempo consecutiva após a agregação de acordo com as granularidades especificadas.
- O desvio da linha de base compara uma janela com a distribuição da linha de base determinada pela tabela da linha de base. O desvio da linha de base só é calculado se for fornecida uma tabela de base.
Onde as tabelas métricas estão localizadas
As tabelas métricas são salvas em {output_schema}.{table_name}_profile_metrics e {output_schema}.{table_name}_drift_metrics, onde:
-
{output_schema}é o catálogo e o esquema especificados poroutput_schema_name. -
{table_name}é o nome da tabela que está a ser analisada.
Como as estatísticas de perfil são calculadas
Cada estatística e métrica nas tabelas métricas é calculada para um intervalo de tempo especificado (chamado de "janela"). Para Snapshot análise, a janela de tempo é um único ponto no tempo correspondente ao tempo em que a métrica foi atualizada. Para TimeSeries e InferenceLog análise, a janela de tempo é baseada nas granularidades especificadas e create_monitor nos valores especificados timestamp_col no profile_type argumento.
As métricas são sempre calculadas para toda a tabela. Além disso, se você fornecer uma expressão de fatiamento, as métricas serão calculadas para cada fatia de dados definida por um valor da expressão.
Por exemplo:
slicing_exprs=["col_1", "col_2 > 10"]
gera as seguintes fatias: uma para col_2 > 10, uma para col_2 <= 10e uma para cada valor exclusivo em col1.
As fatias são identificadas nas tabelas de métricas pelos nomes slice_key das colunas e slice_value. Neste exemplo, uma chave de fatia seria "col_2 > 10" e os valores correspondentes seriam "true" e "false". A tabela inteira é equivalente a slice_key = NULL e slice_value = NULL. As fatias são definidas por uma única chave de fatia.
As métricas são calculadas para todos os grupos possíveis definidos pelas janelas de tempo e chaves e valores de fatia. Além disso, para InferenceLog análise, as métricas são calculadas para cada id do modelo. Para obter detalhes, consulte Esquemas de coluna para tabelas geradas.
Estatísticas adicionais para precisão do modelo (InferenceLog apenas análise)
Estatísticas adicionais são calculadas para InferenceLog análise.
- A qualidade do modelo é calculada se ambos
label_colforemprediction_colfornecidos. - As fatias são criadas automaticamente com base nos valores distintos de
model_id_col. - Para modelos de classificação, as estatísticas de equidade e viés são calculadas para fatias que têm um valor booleano.
Análise de consultas e tabelas de métricas de desvio
Você pode consultar as tabelas de métricas diretamente. O exemplo a seguir é baseado na InferenceLog análise:
SELECT
window.start, column_name, count, num_nulls, distinct_count, frequent_items
FROM census_monitor_db.adult_census_profile_metrics
WHERE model_id = 1 — Constrain to version 1
AND slice_key IS NULL — look at aggregate metrics over the whole data
AND column_name = "income_predicted"
ORDER BY window.start
Esquemas de coluna para tabelas geradas
Para cada coluna da tabela primária, as tabelas de métricas contêm uma linha para cada combinação de colunas de agrupamento. A coluna associada a cada linha é mostrada na coluna column_name.
Para métricas baseadas em mais de uma coluna, como métricas de precisão do modelo, column_name é definido como :table.
Para métricas de perfil, as seguintes colunas de agrupamento são usadas:
- Janela de tempo
- granularidade (
TimeSeriesInferenceLogapenas e análise) - tipo de log - tabela de entrada ou tabela de linha de base
- Chave e valor da fatia
- ID do modelo (
InferenceLogapenas análise)
Para métricas de desvio, as seguintes colunas de agrupamento adicionais são usadas:
- janela de tempo de comparação
- tipo de desvio (comparação com a janela anterior ou comparação com a tabela de linha de base)
Os esquemas das tabelas métricas são mostrados abaixo e também são mostrados na documentação de referência da API de criação de perfil de dados.
Esquema da tabela de métricas de perfil
A tabela a seguir mostra o esquema da tabela de métricas de perfil. Quando uma métrica não é aplicável a uma linha, a célula correspondente é nula.
| Nome da coluna | Tipo | Descrição |
|---|---|---|
| Agrupamento de colunas | ||
| janela | Estruturar. Ver [1] infra. | Janela de tempo. |
| granularidade | cadeia (de caracteres) | Duração da janela, definida por granularities parâmetro. [2] |
| model_id_col | cadeia (de caracteres) | Opcional. Usado apenas para InferenceLog o tipo de análise. |
| tipo_de_registo | cadeia (de caracteres) | Tabela usada para calcular métricas. LINHA DE BASE ou ENTRADA. |
| slice_key | cadeia (de caracteres) | Expressão de fatia. NULL por padrão, que são todos os dados. |
| slice_value | cadeia (de caracteres) | Valor da expressão de fatiamento. |
| nome_da_coluna | cadeia (de caracteres) | Nome da coluna na tabela primária.
:table é um nome especial para métricas que se aplicam a toda a tabela, como precisão do modelo. |
| tipo de dados | cadeia (de caracteres) | Tipo de dados Spark de column_name. |
| versão_de_commit_da_tabela_de_registo | int | Ignorar. |
| versão do monitor | bigint | Versão da configuração de perfil usada para calcular as métricas na linha. Ver [3] infra para mais pormenores. |
| Colunas de métricas - estatísticas de resumo | ||
| contagem | bigint | Número de valores não nulos. |
| Número de nulos | bigint | Número de valores nulos em column_name. |
| avg | duplo | Média aritmética da coluna, ignorando nulos. |
| Quantis | array<double> |
Matriz de 1000 quantis. Ver [4] infra. |
| contagem_distinta | bigint | Número aproximado de valores distintos em column_name. Isso usa a approx_count_distinct função, então o resultado pode não ser exato. |
| min | duplo | Valor mínimo em column_name. |
| max | duplo | Valor máximo em column_name. |
| Stddev | duplo | Desvio padrão de column_name. |
| num_zeros | bigint | Número de zeros em column_name. |
| num_nan | bigint | Número de valores de NaN em column_name. |
| tamanho_mínimo | duplo | Tamanho mínimo de matrizes ou estruturas em column_name. |
| tamanho_máximo | duplo | Tamanho máximo de matrizes ou estruturas em column_name. |
| tamanho médio | duplo | Tamanho médio de matrizes ou estruturas em column_name. |
| comprimento mínimo | duplo | Comprimento mínimo da cadeia de caracteres e valores binários em column_name. |
| max_len | duplo | Comprimento máximo da cadeia de caracteres e valores binários em column_name. |
| avg_len | duplo | Comprimento médio da cadeia de caracteres e valores binários em column_name. |
| itens frequentes | Estruturar. Ver [1] infra. | Top 100 itens que ocorrem com mais frequência. |
| colunas não nulas | array<string> |
Lista de colunas com pelo menos um valor não nulo. |
| mediana | duplo | Valor mediano de column_name. |
| percent_null | duplo | Porcentagem de valores nulos em column_name. |
| percentual_de_zeros | duplo | Porcentagem de valores que são zero em column_name. |
| percentagem_distinta | duplo | Porcentagem de valores distintos em column_name. |
| Colunas métricas - precisão do modelo de classificação [5] | ||
| Pontuação_de_precisão | duplo | Precisão do modelo, calculada como:
Os valores nulos são ignorados. |
| perda logarítmica | duplo | Perda logarítmica para problemas de classificação, calculada como:
Requer prediction_proba_col. Previsões ou rótulos que são NULOS são ignorados. |
| roc_auc_score | Estruturar. Ver [1] infra. | Pontuação ROC AUC para classificação binária e multiclasse. Requer prediction_proba_col. Apresenta pontuações ponderadas e médias macro um contra um. Rótulos ou previsões que são NULOS são ignorados. |
| matriz de confusão | Estruturar. Ver [1] infra. | |
| precisão | Estruturar. Ver [1] infra. | |
| revocação | Estruturar. Ver [1] infra. | |
| pontuação F1 | Estruturar. Ver [1] infra. | |
| Colunas métricas - precisão do modelo de regressão [5] | ||
| erro quadrático médio | duplo | Erro quadrático médio entre prediction_col e label_col. |
| erro quadrático médio da raiz | duplo | Erro quadrático médio da raiz entre prediction_col e label_col. |
| erro médio absoluto | duplo | Erro médio médio entre prediction_col e label_col. |
| erro percentual absoluto médio | duplo | Erro percentual absoluto médio entre prediction_col e label_col. |
| índice de determinação R2 | duplo | Pontuação R-quadrada entre prediction_col e label_col. |
| Colunas de métricas - equidade e parcialidade [6] | ||
| paridade preditiva | duplo | Mede se os dois grupos têm precisão igual em todas as classes previstas.
label_col é obrigatório. |
| igualdade preditiva | duplo | Mede se os dois grupos têm igual taxa de falsos positivos em todas as classes previstas.
label_col é obrigatório. |
| igualdade_de_oportunidades | duplo | Mede se os dois grupos têm igual recordação em todas as classes previstas.
label_col é obrigatório. |
| paridade estatística | duplo | Mede se os dois grupos têm igual taxa de aceitação. A taxa de aceitação aqui é definida como a probabilidade empírica de ser prevista como uma determinada classe, em todas as classes previstas. |
[1] Formato da estrutura para confusion_matrix, precision, recall, f1_score, e roc_auc_score:
| Nome da coluna | Tipo |
|---|---|
| janela | struct<start: timestamp, end: timestamp> |
| itens frequentes | array<struct<item: string, count: bigint>> |
| matriz de confusão | struct<prediction: string, label: string, count: bigint> |
| precisão | struct<one_vs_all: map<string,double>, macro: double, weighted: double> |
| revocação | struct<one_vs_all: map<string,double>, macro: double, weighted: double> |
| pontuação F1 | struct<one_vs_all: map<string,double>, macro: double, weighted: double> |
| roc_auc_score | struct<one_vs_one: struct<weighted: double, macro: double>> |
[2] Para séries cronológicas ou perfis de inferência, o perfil retrocede 30 dias a partir do momento em que o perfil é criado. Devido a este ponto de corte, a primeira análise pode incluir uma janela parcial. Por exemplo, o limite de 30 dias pode cair a meio de uma semana ou mês, caso em que a semana ou mês completo não é incluído no cálculo. Esse problema afeta apenas a primeira janela.
[3] A versão mostrada nesta coluna é a versão que foi usada para calcular as estatísticas na linha e pode não ser a versão atual do perfil. Cada vez que você atualiza as métricas, o perfil tenta recalcular as métricas calculadas anteriormente usando a configuração de perfil atual. A versão atual do perfil aparece nas informações de perfil retornadas pela API e pelo Python Client.
[4] Código de exemplo para recuperar o percentil 50: SELECT element_at(quantiles, int((size(quantiles)+1)/2)) AS p50 ... ou SELECT quantiles[500] ... .
[5] Só mostrado se o perfil tiver o tipo de análise InferenceLog e ambos label_col e prediction_col forem fornecidos.
[6] Só é apresentado se o perfil possuir o tipo de análise InferenceLog e problem_type for classification.
Esquema da tabela de métricas de desvio
A tabela a seguir mostra o esquema da tabela de métricas de deriva. A tabela de desvio só é gerada se uma tabela de linha de base for fornecida, ou se existir uma janela de tempo consecutiva após a agregação de acordo com as granularidades especificadas. Quando uma métrica não é aplicável a uma linha, a célula correspondente é nula.
| Nome da coluna | Tipo | Descrição |
|---|---|---|
| Agrupamento de colunas | ||
| janela | struct<start: timestamp, end: timestamp> |
Janela de tempo. |
| window_cmp | struct<start: timestamp, end: timestamp> |
Janela de comparação para drift_type CONSECUTIVE. |
| tipo_de_deriva | cadeia (de caracteres) | LINHA DE BASE ou CONSECUTIVA. Se as métricas de desvio se comparam com a janela de tempo anterior ou com a tabela de linha de base. |
| granularidade | cadeia (de caracteres) | Duração da janela, definida por granularities parâmetro. [7] |
| model_id_col | cadeia (de caracteres) | Opcional. Usado apenas para InferenceLog o tipo de análise. |
| slice_key | cadeia (de caracteres) | Expressão de fatia. NULL por padrão, que são todos os dados. |
| slice_value | cadeia (de caracteres) | Valor da expressão de fatiamento. |
| nome_da_coluna | cadeia (de caracteres) | Nome da coluna na tabela primária.
:table é um nome especial para métricas que se aplicam a toda a tabela, como precisão do modelo. |
| tipo de dados | cadeia (de caracteres) | Tipo de dados Spark de column_name. |
| versão do monitor | bigint | Versão da configuração do monitor usada para calcular as métricas na linha. Ver [8] infra para mais pormenores. |
| Colunas de métricas - desvio | As diferenças são calculadas como janela atual - janela de comparação. | |
| count_delta | duplo | Diferença em count. |
| avg_delta | duplo | Diferença em avg. |
| percent_null_delta | duplo | Diferença em percent_null. |
| variação_percentual_de_zeros | duplo | Diferença em percent_zeros. |
| percentagem_delta_distinta | duplo | Diferença em percent_distinct. |
| non_null_columns_delta | struct<added: int, missing: int> |
Número de colunas com qualquer aumento ou diminuição em valores não nulos. |
| chi_squared_test | struct<statistic: double, pvalue: double> |
Teste qui-quadrado para desvio na distribuição. Calculado apenas para colunas categóricas.
null para colunas numéricas. |
| ks_test | struct<statistic: double, pvalue: double> |
Teste KS para deriva na distribuição. Calculado apenas para colunas numéricas.
null para colunas categóricas. |
| distância para TV | duplo | Distância de variação total para deriva na distribuição. Calculado apenas para colunas categóricas.
null para colunas numéricas. |
| distância l_infinito | duplo | Distância L-infinito para deriva na distribuição. Calculado apenas para colunas categóricas.
null para colunas numéricas. |
| js_distance | duplo | Distância Jensen-Shannon para deriva na distribuição. Calculado apenas para colunas categóricas.
null para colunas numéricas. |
| wasserstein_distance | duplo | Deriva entre duas distribuições numéricas usando a métrica de distância de Wasserstein. Calculado apenas para colunas numéricas.
null para colunas categóricas. |
| índice de estabilidade populacional | duplo | Métrica para comparar a deriva entre duas distribuições numéricas usando a métrica do índice de estabilidade populacional. Ver [9] infra para mais pormenores. Calculado apenas para colunas numéricas.
null para colunas categóricas. |
[7] Para séries cronológicas ou perfis de inferência, o perfil retrocede 30 dias a partir do momento em que o perfil é criado. Devido a este ponto de corte, a primeira análise pode incluir uma janela parcial. Por exemplo, o limite de 30 dias pode cair a meio de uma semana ou mês, caso em que a semana ou mês completo não é incluído no cálculo. Esse problema afeta apenas a primeira janela.
[8] A versão apresentada nesta coluna é a versão que foi utilizada para calcular as estatísticas na linha e pode não ser a versão atual do perfil. Cada vez que você atualiza as métricas, o perfil tenta recalcular as métricas calculadas anteriormente usando a configuração de perfil atual. A versão atual do perfil aparece nas informações de perfil retornadas pela API e pelo Python Client.
[9] A produção do índice de estabilidade da população é um valor numérico que representa a diferença entre duas distribuições. O intervalo é [0, inf). PSI < 0.1 significa que não houve alteração significativa da população. O PSI < 0.2 indica uma mudança moderada da população. PSI >= 0,2 indica mudança populacional significativa.