이 페이지에서는 데이터 프로파일링으로 만든 메트릭 테이블에 대해 설명합니다. 프로필에서 만든 대시보드에 대한 자세한 내용은 데이터 프로파일링 대시보드를 참조하세요.
Databricks 테이블에서 프로필이 실행되면 프로필 메트릭 테이블과 드리프트 메트릭 테이블이라는 두 개의 메트릭 테이블을 만들거나 업데이트합니다.
- 프로필 메트릭 테이블에는 각 열 및 시간 창, 조각 및 그룹화 열의 각 조합에 대한 요약 통계가 포함되어 있습니다. 분석을 위해
InferenceLog분석 테이블에는 모델 정확도 메트릭도 포함되어 있습니다. - 드리프트 메트릭 테이블에는 메트릭에 대한 분포의 변경 내용을 추적하는 통계가 포함되어 있습니다. Drift 테이블을 사용하여 특정 값 대신 데이터의 변경 내용을 시각화하거나 경고할 수 있습니다. 다음과 같은 유형의 드리프트가 계산됩니다.
- 연속 드리프트는 창을 이전 시간 창과 비교합니다. 연속 드리프트는 지정된 세분성에 따라 집계 후 연속된 시간 창이 존재하는 경우에만 계산됩니다.
- 초기 계획 드리프트는 창과 기준 테이블의 기준 분포를 비교합니다. 기준선 드리프트는 기준 테이블이 제공되는 경우에만 계산됩니다.
메트릭 테이블이 있는 위치
메트릭 테이블은 {output_schema}.{table_name}_profile_metrics 및 {output_schema}.{table_name}_drift_metrics에 저장됩니다.
-
{output_schema}는 .에서 지정한 카탈로그 및 스키마입니다output_schema_name. -
{table_name}는 프로파일되는 테이블의 이름입니다.
프로필 통계를 계산하는 방법
메트릭 테이블의 각 통계 및 메트릭은 지정된 시간 간격("창"이라고 함)에 대해 계산됩니다. 분석의 경우 Snapshot 시간 창은 메트릭이 새로 고쳐진 시간에 해당하는 단일 시점입니다. 및 분석의 경우 TimeSeries 시간 창은 지정된 InferenceLog 세분성과 인수에 create_monitor 지정된 값을 기반으로 합니다timestamp_col.profile_type
메트릭은 항상 전체 테이블에 대해 계산됩니다. 또한 조각화 식을 제공하는 경우 식 값으로 정의된 각 데이터 조각에 대해 메트릭이 계산됩니다.
다음은 그 예입니다.
slicing_exprs=["col_1", "col_2 > 10"]
는 다음 조각을 생성합니다. 하나는 for col_2 > 10, for는 col_2 <= 10하나씩, 각각 고유 값에 대해 하나씩 생성됩니다 col1.
조각은 메트릭 테이블에서 열 이름과 slice_keyslice_value에 의해 식별됩니다. 이 예제에서 한 조각 키는 "col_2 > 10"이고 해당 값은 "true" 및 "false"입니다. 전체 테이블은 = NULL 및 = NULL과 slice_key 같습니다 slice_value . 조각은 단일 조각 키로 정의됩니다.
메트릭은 시간 창과 조각 키 및 값으로 정의된 모든 가능한 그룹에 대해 계산됩니다. 또한 분석을 위해 InferenceLog 메트릭은 각 모델 ID에 대해 계산됩니다. 자세한 내용은 생성된 테이블에 대한 열 스키마를 참조 하세요.
모델 정확도에 대한 추가 통계(InferenceLog 분석에만 해당)
분석을 위해 InferenceLog 추가 통계가 계산됩니다.
- 모델 품질은 둘 다
label_colprediction_col제공되는 경우 계산됩니다. - 조각은 .의
model_id_col고유 값에 따라 자동으로 만들어집니다. - 분류 모델의 경우 부울 값이 있는 조각에 대해 공정성 및 바이어스 통계 가 계산됩니다.
쿼리 분석 및 드리프트 메트릭 테이블
메트릭 테이블을 직접 쿼리할 수 있습니다. 다음 예제는 분석을 기반으로 InferenceLog 합니다.
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
생성된 테이블의 열 스키마
기본 테이블의 각 열에 대해 메트릭 테이블에는 그룹화 열의 각 조합에 대해 하나의 행이 포함됩니다. 각 행과 연결된 열이 열 column_name에 표시됩니다.
모델 정확도 메트릭과 같은 둘 이상의 열을 기반으로 하는 메트릭의 column_name 경우 로 설정 :table됩니다.
프로필 메트릭의 경우 다음 그룹화 열이 사용됩니다.
- 시간 창
- 세분성(
TimeSeries및InferenceLog분석만 해당) - 로그 형식 - 입력 테이블 또는 기준 테이블
- 조각 키 및 값
- 모델 ID(
InferenceLog분석 전용)
드리프트 메트릭의 경우 다음과 같은 추가 그룹화 열이 사용됩니다.
- 비교 기간
- 드리프트 형식(이전 창과 비교 또는 기준 테이블 비교)
메트릭 테이블의 스키마는 아래에 나와 있으며 데이터 프로파일링 API 참조 설명서에도 표시됩니다.
프로필 메트릭 테이블 스키마
다음 표에서는 프로필 메트릭 테이블의 스키마를 보여 줍니다. 메트릭을 행에 적용할 수 없는 경우 해당 셀은 null입니다.
| 열 이름 | 유형 | 설명 |
|---|---|---|
| 열 그룹화 | ||
| 창 | 구조체. 아래 [1]을 참조하세요. | 기간. |
| 세분성 | 문자열 | 매개 변수로 granularities 설정된 기간입니다. [2] |
| model_id_col | 문자열 | Optional. 분석 유형에 InferenceLog 만 사용됩니다. |
| 로그_유형 | 문자열 | 메트릭을 계산하는 데 사용되는 테이블입니다. 기준선 또는 입력입니다. |
| 슬라이스_키 | 문자열 | 조각 식입니다. 기본값은 모든 데이터인 NULL입니다. |
| 슬라이스 값 | 문자열 | 조각화 식의 값입니다. |
| column_name | 문자열 | 기본 테이블의 열 이름입니다.
:table 는 모델 정확도와 같이 전체 테이블에 적용되는 메트릭의 특수 이름입니다. |
| 데이터 유형 | 문자열 | 의 column_nameSpark 데이터 형식 |
| 로깅_테이블_커밋_버전 | int | 무시. |
| 모니터_버전 | 빅인트 (bigint) | 행의 메트릭을 계산하는 데 사용되는 프로필 구성의 버전입니다. 자세한 내용은 아래 [3]을 참조하세요. |
| 메트릭 열 - 요약 통계 | ||
| 개수 | 빅인트 (bigint) | null이 아닌 값의 수입니다. |
| num_nulls | 빅인트 (bigint) | 의 null 값 수입니다 column_name. |
| avg | 더블 | null을 무시하고 열의 산술 평균을 구합니다. |
| 분위수 | array<double> |
1000 분위수의 배열입니다. 아래 [4]를 참조하세요. |
| 고유_개수 | 빅인트 (bigint) |
column_name의 대략적인 고유 값 수입니다. 이 함수는 함수를 approx_count_distinct 사용하므로 결과가 정확하지 않을 수 있습니다. |
| min | 더블 | 의 최소값입니다 column_name. |
| max | 더블 | 의 최대값입니다 column_name. |
| 표준 개발 | 더블 | 의 표준 편차 column_name |
| num_zeros | 빅인트 (bigint) | 의 0개 수입니다 column_name. |
| num_nan | 빅인트 (bigint) | 의 NaN 값 수입니다 column_name. |
| 최소_크기 | 더블 | 에 있는 column_name배열 또는 구조체의 최소 크기입니다. |
| 최대_크기 | 더블 | 에서 배열 또는 구조 column_name체의 최대 크기입니다. |
| 평균_크기 | 더블 | 의 배열 또는 구조 column_name체의 평균 크기입니다. |
| 최소_길이 | 더블 | 에 있는 column_name문자열 및 이진 값의 최소 길이입니다. |
| max_len (최대 길이) | 더블 | 에서 문자열 및 이진 값 column_name의 최대 길이입니다. |
| 평균_길이 | 더블 | 에 있는 column_name문자열 및 이진 값의 평균 길이입니다. |
| 자주 사용하는 항목 | 구조체. 아래 [1]을 참조하세요. | 가장 자주 발생하는 상위 100개 항목 |
| non_null_columns | array<string> |
Null이 아닌 값이 하나 이상 있는 열 목록입니다. |
| 중앙값 | 더블 | 의 중간값입니다 column_name. |
| percent_null | 더블 | 에서 null 값의 백분율입니다 column_name. |
| 영 백분율 | 더블 | 에 0인 값의 백분율입니다.column_name |
| 고유 항목 백분율 | 더블 | 에서 구분 column_name되는 값의 백분율입니다. |
| 메트릭 열 - 분류 모델 정확 도 [5] | ||
| accuracy_score | 더블 | 다음과 같이 계산된 모델의 정확도:
Null 값은 무시됩니다. |
| 로그 손실 | 더블 | 분류 문제에 대한 로그 손실은 다음과 같이 계산됩니다.
prediction_proba_col가 필요합니다. NULL인 예측 또는 레이블은 무시됩니다. |
| roc_auc_score | 구조체. 아래 [1]을 참조하세요. | 이진 및 다중 클래스 분류에 대한 ROC AUC 점수입니다.
prediction_proba_col가 필요합니다. 1 대 1 가중치 및 매크로 평균 점수를 반환합니다. NULL인 레이블 또는 예측은 무시됩니다. |
| 혼동 행렬 | 구조체. 아래 [1]을 참조하세요. | |
| 정확성 | 구조체. 아래 [1]을 참조하세요. | |
| 재현율 | 구조체. 아래 [1]을 참조하세요. | |
| F1 점수 | 구조체. 아래 [1]을 참조하세요. | |
| 메트릭 열 - 회귀 모델 정확 도 [5] | ||
| 평균 제곱 오차 | 더블 | 사이 및 prediction_col. 사이의 label_col 평균 제곱 오차 |
| 루트 평균 제곱 오차 | 더블 | 루트 평균 제곱 오차 사이 prediction_col 및 label_col. |
| 평균 절대 오차 | 더블 | 사이의 prediction_col 평균 평균 오차입니다 label_col. |
| 평균 절대 백분율 오차 | 더블 | 사이의 절대 백분율 오차를 prediction_col 의미합니다 label_col. |
| 결정계수 (r2_score) | 더블 | 사이의 R 제곱 점수 prediction_col 와 .label_col |
| 메트릭 열 - 공정성 및 바이어스 [6] | ||
| 예측 균형성 | 더블 | 두 그룹이 예측된 모든 클래스에서 동일한 정밀도를 갖는지 여부를 측정합니다.
label_col은 필수입니다. |
| 예측 평등 | 더블 | 두 그룹이 예측된 모든 클래스에서 가양성 비율이 같은지 여부를 측정합니다.
label_col은 필수입니다. |
| 기회 균등 | 더블 | 두 그룹이 예측된 모든 클래스에서 동일한 회수를 갖는지 여부를 측정합니다.
label_col은 필수입니다. |
| 통계적 균형 | 더블 | 두 그룹의 수용률이 같은지 여부를 측정합니다. 여기서 수용률은 예측된 모든 클래스에서 특정 클래스로 예측될 경험적 확률로 정의됩니다. |
[1] confusion_matrix, precision, recall, f1_score 및 roc_auc_score에 대한 구조체 형식입니다.
| 열 이름 | 유형 |
|---|---|
| 창 | struct<start: timestamp, end: timestamp> |
| 자주 사용하는 항목 | array<struct<item: string, count: bigint>> |
| 혼동 행렬 | struct<prediction: string, label: string, count: bigint> |
| 정확성 | struct<one_vs_all: map<string,double>, macro: double, weighted: double> |
| 재현율 | struct<one_vs_all: map<string,double>, macro: double, weighted: double> |
| 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] 시계열 또는 유추 프로필의 경우 프로필은 프로필이 만들어진 시점으로부터 30일 후를 거슬러 올 수 있습니다. 이 차단으로 인해 첫 번째 분석에는 부분 창이 포함될 수 있습니다. 예를 들어 30일 제한은 1주일 또는 월 중간에 떨어질 수 있습니다. 이 경우 전체 주 또는 월이 계산에 포함되지 않습니다. 이 문제는 첫 번째 창에만 영향을 줍니다.
[3] 이 열에 표시된 버전은 행의 통계를 계산하는 데 사용된 버전이며 프로필의 현재 버전이 아닐 수 있습니다. 메트릭을 새로 고칠 때마다 프로필은 현재 프로필 구성을 사용하여 이전에 계산된 메트릭을 다시 계산하려고 시도합니다. 현재 프로필 버전은 API 및 Python 클라이언트에서 반환된 프로필 정보에 표시됩니다.
[4] 50번째 백분위 SELECT element_at(quantiles, int((size(quantiles)+1)/2)) AS p50 ...SELECT quantiles[500] ... 수 또는 .
[5] 프로필이 InferenceLog 분석 유형을 갖고, 모두 label_col과 prediction_col가 제공된 경우에만 표시됩니다.
[6] 프로필에 InferenceLog 분석 유형이 있고 problem_type이 classification인 경우에만 표시됩니다.
Drift 메트릭 테이블 스키마
다음 표에서는 드리프트 메트릭 테이블의 스키마를 보여 줍니다. 드리프트 테이블은 기준 테이블이 제공되거나 지정된 세분성에 따라 집계 후 연속된 시간 창이 있는 경우에만 생성됩니다. 메트릭을 행에 적용할 수 없는 경우 해당 셀은 null입니다.
| 열 이름 | 유형 | 설명 |
|---|---|---|
| 열 그룹화 | ||
| 창 | struct<start: timestamp, end: timestamp> |
기간. |
| window_cmp | struct<start: timestamp, end: timestamp> |
drift_type CONSECUTIVE비교 창입니다. |
| 드리프트 유형 | 문자열 | 기준선 또는 연속입니다. 드리프트 메트릭이 이전 기간 또는 기준 테이블과 비교되는지 여부입니다. |
| 세분성 | 문자열 | 매개 변수로 granularities 설정된 기간입니다. [7] |
| model_id_col | 문자열 | Optional. 분석 유형에 InferenceLog 만 사용됩니다. |
| 슬라이스_키 | 문자열 | 조각 식입니다. 기본값은 모든 데이터인 NULL입니다. |
| 슬라이스 값 | 문자열 | 조각화 식의 값입니다. |
| column_name | 문자열 | 기본 테이블의 열 이름입니다.
:table 는 모델 정확도와 같이 전체 테이블에 적용되는 메트릭의 특수 이름입니다. |
| 데이터 유형 | 문자열 | 의 column_nameSpark 데이터 형식 |
| 모니터_버전 | 빅인트 (bigint) | 행의 메트릭을 계산하는 데 사용되는 모니터 구성의 버전입니다. 자세한 내용은 아래 [8]을 참조하세요. |
| 메트릭 열 - 드리프트 | 차이점은 현재 창- 비교 창으로 계산됩니다. | |
| count_delta | 더블 | 의 count차이점 |
| avg_delta | 더블 | 의 avg차이점 |
| 퍼센트_널_델타 | 더블 | 의 percent_null차이점 |
| 백분율_제로_델타 | 더블 | 의 percent_zeros차이점 |
| 독특한 퍼센트 변화량 | 더블 | 의 percent_distinct차이점 |
| non_null_columns_delta | struct<added: int, missing: int> |
null이 아닌 값의 증가 또는 감소가 있는 열 수입니다. |
| chi_squared_test | struct<statistic: double, pvalue: double> |
분포에서 드리프트에 대한 카이 제곱 테스트. 범주 열에 대해서만 계산됩니다.
null 숫자 열의 경우 |
| ks_test | struct<statistic: double, pvalue: double> |
분포의 드리프트에 대한 KS 테스트입니다. 숫자 열에 대해서만 계산됩니다.
null 범주형 열에 대해. |
| TV 거리 | 더블 | 분포의 드리프트에 대한 총 변형 거리입니다. 범주 열에 대해서만 계산됩니다.
null 숫자 열의 경우 |
| l_무한_거리 | 더블 | 분포의 드리프트에 대한 L-무한대 거리입니다. 범주 열에 대해서만 계산됩니다.
null 숫자 열의 경우 |
| js_distance | 더블 | 젠슨 -분산에서 드리프트에 대한 섀넌 거리. 범주 열에 대해서만 계산됩니다.
null 숫자 열의 경우 |
| Wasserstein 거리("wasserstein_distance" 지표) | 더블 | Wasserstein 거리 메트릭을 사용하여 두 숫자 분포 사이를 드리프트합니다. 숫자 열에 대해서만 계산됩니다.
null 범주형 열에 대해. |
| 인구 안정성 지수 | 더블 | 모집단 안정성 인덱스 메트릭을 사용하여 두 숫자 분포 간의 드리프트를 비교하는 메트릭입니다. 자세한 내용은 아래 [9]를 참조하세요. 숫자 열에 대해서만 계산됩니다.
null 범주형 열에 대해. |
[7] 시계열 또는 유추 프로필의 경우 프로필은 프로필이 만들어진 시점으로부터 30일 후를 거슬러 오게 됩니다. 이 차단으로 인해 첫 번째 분석에는 부분 창이 포함될 수 있습니다. 예를 들어 30일 제한은 1주일 또는 월 중간에 떨어질 수 있습니다. 이 경우 전체 주 또는 월이 계산에 포함되지 않습니다. 이 문제는 첫 번째 창에만 영향을 줍니다.
[8] 이 열에 표시된 버전은 행의 통계를 계산하는 데 사용된 버전이며 프로필의 현재 버전이 아닐 수 있습니다. 메트릭을 새로 고칠 때마다 프로필은 현재 프로필 구성을 사용하여 이전에 계산된 메트릭을 다시 계산하려고 시도합니다. 현재 프로필 버전은 API 및 Python 클라이언트에서 반환된 프로필 정보에 표시됩니다.
[9] 모집단 안정성 인덱스의 출력은 두 분포가 얼마나 다른지를 나타내는 숫자 값입니다. 범위는 [0, inf)입니다. PSI < 0.1은 인구 변동이 크지 않음을 의미합니다. PSI < 0.2는 적당한 인구 변화를 나타냅니다. PSI >= 0.2는 상당한 모집단 변화를 나타냅니다.