드리프트 평가를 구성할 때 시간이 지남에 따라 모델이 결과를 얼마나 잘 예측하는지 판단하는 데 도움이 되는 메트릭을 생성할 수 있습니다.
인사이트 대시보드에서 드리프트 평가 결과를 확인할 수 있습니다. 결과를 보기 위해 모델 배치 타일을 선택하고 드리프트 평가 섹션에서 화살표 를 클릭하여 마지막 평가에서 드리프트 메트릭의 요약을 표시할 수 있습니다. 자세한 정보는 드리프트 결과 검토를 참조하십시오.
드리프트 지표는 모델의 동작을 분석하고 자체 모델을 구축하여 모델이 데이터 포인트에 대한 정확한 예측을 생성하는지 예측하여 계산합니다. 이 드리프트 발견 모델은 페이로드 데이터를 처리하여 모델이 부정확한 예측을 작성하고 모델의 예측된 정확성을 생성하는 레코드 수를 식별합니다.
드리프트는 구조화된 데이터에 대해서만 지원되며 Python 함수를 지원하지 않습니다.
지원되는 드리프트 메트릭
드리프트 평가에는 다음과 같은 드리프트 메트릭이 지원됩니다:
정확도 하락
드리프트 평가는 학습 데이터와 비교했을 때 런타임에 모델의 정확도 저하를 추정합니다. 모델이 훈련 데이터에서 올바르게 평가하지 않은 트랜잭션과 유사한 트랜잭션이 증가하면 모델 정확도가 떨어집니다.
작업 방식
드리프트 모니터는 사전 프로덕션 및 프로덕션 환경에서 다르게 작동합니다.
사전 프로덕션 환경에서는 레이블이 있는 테스트 데이터를 업로드할 때 데이터가 피드백 및 페이로드 테이블에 추가됩니다. 레이블된 데이터는 페이로드 테이블에 어노테이션으로 추가됩니다. 레이블 지정된 데이터 열과 페이로드 테이블의 예측 열을 사용하여 정확도가 계산됩니다.
프로덕션 환경에서는 모델을 학습하고 테스트하는 데 사용된 데이터를 보고 드리프트 감지 모델을 만듭니다. 예를 들어, 테스트 데이터에서 모델의 정확도가 90%인 경우 이는 테스트 데이터에 대해 올바르지 않은 10% 예측을 제공한다는 의미입니다. 데이터 포인트를 받아들이고 해당 데이터 포인트가 모델이 잘못(10%) 또는 정확하게(90%) 예측한 데이터와 유사한지 여부를 예측하는 이진 분류 모델이 구축됩니다.
드리프트 감지 모델이 생성된 후 런타임에 클라이언트 모델이 수신하는 모든 데이터를 사용하여 이 모델의 점수가 매겨집니다. 예를 들어 클라이언트 모델이 지난 3시간 동안 1000개의 레코드를 수신했다면, 드리프트 감지 모델은 동일한 1000개의 데이터 포인트를 대상으로 실행됩니다. 이는 훈련 시 모델이 오류를 작성한 10%의 레코드와 유사한 레코드 수를 계산합니다. 해당 레코드 중 200개가 10%와 유사한 경우, 이는 모델 정확도가 대략 80%일 수 있음을 나타냅니다. 훈련 시 모델 정확도가 90%였기 때문에 모델에서 정확도 드리프트는 10%임을 의미합니다.
드리프트가 감지된 후 이를 완화하려면 문제를 수정하는 새 버전의 모델을 빌드해야 합니다. 바람직한 시작점은 드리프트의 원인으로 강조표시된 데이터 점입니다. 드리프트된 트랜잭션에 수동으로 레이블을 지정하고 이를 사용하여 모델을 재훈련한 후 예측 모델에 새 데이터를 도입하십시오.
계산하기
정확도 메트릭의 드롭은 구조화된 2진 및 다중 클래스 분류 모델에 대해서만 계산됩니다. 각 트랜잭션을 분석하여 모델 예측이 정확한지 추정합니다. 모델 예측이 부정확하면 트랜잭션은 드리프트로 표시됩니다. 그런 다음, 추정된 정확성은 분석된 총 트랜잭션 수에 대한 드리프트되지 않은 트랜잭션의 비율로 계산됩니다. 기본 정확도는 테스트 데이터의 모델 정확도입니다. 정확도 편차의 정도는 기본 정확도와 예상 정확도의 차이로 계산됩니다. 또한, 드리프트된 모든 트랜잭션을 계산한 다음 정확도 드리프트에 대한 각 기능의 기여도 유사성을 기준으로 트랜잭션을 그룹화합니다. 각 클러스터에서 정확도 편차에 기여한 중요 피처를 추정하고 피처의 영향력을 크거나, 일부, 작음으로 분류합니다.
데이터 일관성 하락
작업 방식
각 트랜잭션은 런타임 트랜잭션과 학습 데이터의 트랜잭션 패턴을 비교하여 데이터 불일치 여부를 분석합니다. 트랜잭션이 하나 이상의 훈련 데이터 패턴을 위반하는 경우 트랜잭션은 불일치로 식별됩니다. 데이터 일관성 저하를 계산하기 위해 총 트랜잭션 수를 일관성이 없는 것으로 확인된 트랜잭션 수로 나눕니다. 예를 들어, 10개의 트랜잭션이 100개의 트랜잭션 세트와 일치하지 않는 것으로 식별되는 경우 데이터 일관성의 감소는 10%입니다.
계산하기
데이터 불일치를 식별하기 위해 입력 데이터가 따라야 하는 규칙을 지정하는 constraints.json
파일을 생성하여 드리프트 감지를 구성할 때 스키마가 생성됩니다. 스키마는 지정된 제약 조건에 맞지 않는 이상값을 식별하여 데이터의 드리프트 여부를 평가하는 데 사용됩니다. 스키마는 다음 예에 표시된 대로 훈련 데이터를 설명하는 columns
및 constraints
배열이 있는 JSON 오브젝트로 지정됩니다.
{
"columns": [
{
"name": "CheckingStatus",
"dtype": "categorical",
"count": 5000,
"sparse": false,
"skip_learning": false
},
"constraints": [
{
"name": "categorical_distribution_constraint",
"id": "f0476d40-d7df-4095-9be5-82564511432c",
"kind": "single_column",
"columns": [
"CheckingStatus"
],
"content": {
"frequency_distribution": {
"0_to_200": 1304,
"greater_200": 305,
"less_0": 1398,
"no_checking": 1993
}
}
}
컬럼
Values are specified for the name
, dtype
, count
,sparse
, and skip_learning
keys to describe a column.
name
및 dtype
키는 열의 레이블 및 데이터 유형을 설명합니다. dtype
키로 지정된 다음 값은 데이터 유형을 설명합니다.
categorical
numeric_discrete
numeric_continuous
지정된 데이터 유형은 키를 사용하여 추가 통계 특성을 설명하는지 여부를 판별합니다 (예: min
, max
및 mean
). 예를 들어, numeric_discrete
또는 numeric_continuous
데이터 유형이 지정된 경우 특성은 다음 예제에 표시된 대로 설명됩니다.
{
"name": "LoanDuration",
"dtype": "numeric_discrete",
"count": 5000,
"sparse": false,
"skip_learning": false,
"min": 4,
"max": 53,
"mean": 21.28820697954272,
"std": 10.999096037050032,
"percentiles": [
13.0,
21.0,
29.0
],
"count_actual": 4986
}
count
키는 컬럼의 행 수를 지정합니다. 부울 값은 열의 sparse
및 skip_learning
키를 설명하기 위해 지정됩니다. sparse
키는 열이 희소인지 여부를 지정하고 skip_learning
키는 열이 스키마에 설명된 규칙의 학습을 건너뛰는지 여부를 지정합니다. 25th 백분위수와 75th 백분위수의 값이 같으면 열은 희소성이 있는 열입니다.
제한조건
name
키는 제한조건 유형을 지정합니다. 제한조건 유형을 설명하기 위해 다음 값이 지정됩니다.
categorical_distribution_constraint
numeric_range_constraint
numeric_distribution_constraint
catnum_range_constraint
catnum_distribution_constraint
catcat_distribution_constraint
id
키는 UUID (Universally Unique Identifier) 를 사용하여 제한조건을 식별합니다. kind
키는 제한조건이 single_column
또는 two-column
제한조건인지 여부를 지정합니다.
columns
키는 컬럼 이름의 배열을 지정합니다. 키가 kind
single_column
제약 조건을 지정하면 배열에 설명하려는 열과 연관된 값이 포함됩니다. 키가 kind
two-column
제약 조건을 지정하면 배열에 관련 데이터가 포함된 열과 상관 관계가 있는 값이 포함됩니다.
content
키는 데이터의 통계 특성을 설명하는 속성을 지정합니다. name
키를 사용하여 지정되는 제한조건 유형은 다음 표에 표시된 대로 content
키에 지정되는 속성을 판별합니다.
속성 | 제한조건 |
---|---|
빈도 분포 | 카테고리 분배 제한조건 |
범위 | numeric_range_constraint, catnum_range_constraint |
분포 | numeric_distribution_constraint, catnum_distribution_constraint |
Rare_combination | catcat_distribution_constraint |
소스 컬럼 | catcat_distribution_constraint, catnum_range_constraint, catnum_distribution_constraint |
대상 컬럼 | catcat_distribution_constraint, catnum_range_constraint, catnum_distribution_constraint |
다음 절에서는 각 제한조건 유형이 지정되는 방법에 대한 예를 제공합니다.
범주형 분포 제한조건
{
"name": "categorical_distribution_constraint",
"id": "f0476d40-d7df-4095-9be5-82564511432c",
"kind": "single_column",
"columns": [
"CheckingStatus"
],
"content": {
"frequency_distribution": {
"0_to_200": 1304,
"greater_200": 305,
"less_0": 1398,
"no_checking": 1993
}
}
}
훈련 데이터에서 CheckingStatus
열에는 frequency_distribution
속성으로 지정된 네 개의 값이 포함되어 있습니다. frequency_distribution
속성은 0_to_200
와 같은 카테고리에 대한 값이 있는 빈도 수를 지정합니다. 페이로드 데이터에서 frequency_distribution
속성 값과 다른 값을 지정하는 레코드가 발견되면 해당 레코드는 드리프트로 식별됩니다.
숫자 범위 제한조건
{
"name": "numeric_range_constraint",
"id": "79f3a1f5-30a1-4c7f-91a0-1613013ee802",
"kind": "single_column",
"columns": [
"LoanAmount"
],
"content": {
"ranges": [
{
"min": 250,
"max": 11676,
"count": 5000
}
]
}
}
LoanAmount
열에는 훈련 데이터의 범위를 설정하기 위해 ranges
속성으로 지정된 최소값 및 최대값이 포함되어 있습니다. ranges
속성은 컬럼의 고밀도 영역을 지정합니다. 훈련 데이터에서 거의 발생하지 않는 범위는 포함되지 않습니다. 페이로드 데이터에서 범위와 사전 정의된 버퍼에 맞지 않는 레코드가 발견되면 해당 레코드는 드리프트로 식별됩니다.
숫자 분배 제한조건
{
"name": "numeric_distribution_constraint",
"id": "3a97494b-0cd7-483e-a1c6-adb7755c1cb0",
"kind": "single_column",
"columns": [
"LoanAmount"
],
"content": {
"distribution": {
"name": "norm",
"parameters": {
"loc": 3799.62,
"scale": 1920.0640064678398
},
"p-value": 0.22617155797563282
}
}
}
LoanAmount
열에는 훈련 데이터에 대한 정규 분포를 설정하기 위해 distribution
속성으로 지정된 값이 포함되어 있습니다. 페이로드 데이터에서 정규 분포에 맞지 않는 레코드가 발견되면 해당 레코드는 드리프트로 식별됩니다. 그 안에 맞는 분포는 균등 분포, 지수 분포 또는 정규 분포입니다. 이러한 분포에 맞는 레코드가 발견되지 않으면 이 제약 조건은 학습되지 않습니다.
범주형-범주형 분포 제한조건
{
"name": "catcat_distribution_constraint",
"id": "99468600-1924-44d9-852c-1727c9c414ee",
"kind": "two_column",
"columns": [
"CheckingStatus",
"CreditHistory"
],
"content": {
"source_column": "CheckingStatus",
"target_column": "CreditHistory",
"rare_combinations": [
{
"source_value": "no_checking",
"target_values": [
"no_credits"
]
}
]
}
}
CheckingStatus
및 CreditHistory
열의 경우 rare_combinations
속성은 훈련 데이터에서 거의 발생하지 않는 값의 조합을 지정합니다. 페이로드 데이터에서 해당 조합이 포함된 레코드가 발견되면 해당 레코드는 드리프트로 식별됩니다.
범주형-숫자 범위 제한조건
{
"name": "catnum_range_constraint",
"id": "f252033c-1635-4974-8976-3f7904d0c37d",
"kind": "two_column",
"columns": [
"CheckingStatus",
"LoanAmount"
],
"content": {
"source_column": "CheckingStatus",
"target_column": "LoanAmount",
"ranges": {
"no_checking": [
{
"min": 250,
"max": 11676,
"count": 1993
}
],
"less_0": [
{
"min": 250,
"max": 7200,
"count": 1398
}
],
"0_to_200": [
{
"min": 250,
"max": 9076,
"count": 1304
}
],
"greater_200": [
{
"min": 250,
"max": 9772,
"count": 305
}
]
}
}
}
ranges
속성은 훈련 데이터의 범위를 설정하는 CheckingStatus
및 LoanAmount
열의 최소값 및 최대값을 지정합니다. 페이로드 데이터에서 범위와 사전 정의된 버퍼에 맞는 LoanAmount
및 CheckingStatus
열 값을 포함하지 않는 레코드가 발견되면 해당 레코드는 드리프트로 식별됩니다.
범주형-숫자 분포 제한조건
{
"name": "catnum_distribution_constraint",
"id": "3a97494b-0cd7-483e-a1c6-adb7755c1cb0",
"kind": "two_column",
"columns": [
"CheckingStatus",
"LoanAmount"
],
"content": {
"source_column": "CheckingStatus",
"target_column": "LoanAmount",
"distribution": {
"greater_200": {
"name": "norm",
"parameters": {
"loc": 3799.62,
"scale": 1920.0640064678398
},
"p-value": 0.22617155797563282
}
}
}
}
LoanAmount
및 CheckingStatus
열에는 훈련 데이터에 대한 정규 분포를 설정하기 위해 distribution
속성으로 지정된 값이 포함되어 있습니다. 페이로드 데이터에서 정규 분포에 맞는 LoanAmount
및 CheckingStatus
열 값을 포함하지 않는 레코드가 발견되면 해당 레코드는 드리프트가 있는 것으로 식별됩니다.
드리프트가 감지된 후 이를 완화하려면 문제를 수정하는 새 버전의 모델을 빌드해야 합니다. 바람직한 시작점은 드리프트의 원인으로 강조표시된 데이터 점입니다. 드리프트된 트랜잭션에 수동으로 레이블을 지정하고 이를 사용하여 모델을 재훈련한 후 예측 모델에 새 데이터를 도입하십시오.
자세한 정보
상위 주제: 드리프트 메트릭