Model Drift Check Library, Evidently AI
Evidently AI
Evidently AI는 머신러닝 모델의 성능과 데이터 분포의 변화를 시각적으로 분석하고 모니터링할 수 있는 Python 라이브러리입니다. 이 라이브러리는 모델의 드리프트를 탐지하고, 이를 기반으로 모델의 성능 저하를 사전에 예방하는 데 유용합니다.
주요 기능
- 데이터 드리프트 감지: 현재 데이터와 과거 데이터 간의 분포 차이를 분석합니다.
- 대규모 데이터 처리: 대규모 데이터에 대해 성능이 다소 떨어질 수 있으며, 리소스 사용이 증가할 수 있습니다.
- 모델 성능 모니터링: 예측된 결과와 실제 결과 간의 차이를 모니터링하여 모델의 성능을 분석합니다.
- 시각화 보고서 생성: 다양한 시각화 도구를 통해 모델의 성능 변화를 쉽게 이해할 수 있는 보고서를 생성합니다.
- 커스터마이징 제한: 제공되는 지표와 시각화 도구가 기본적으로 설정되어 있어, 특정 상황에 맞춘 커스터마이징이 어려울 수 있습니다.
Sample
import numpy as np
import pandas as pd
# 데이터 생성 파라미터
n_samples = 1000
np.random.seed(42)
# 시간대에 따른 배달 시간 설정
def generate_delivery_time(hour, rider_acceptance_rate, num_riders):
base_time = 25 # 전체 배달 시간 평균 25분
# 점심, 저녁 시간대 배달 시간 증가
if 11 <= hour <= 13 or 18 <= hour <= 20:
variance = np.random.normal(loc=10, scale=2) # 배달시간이 늘어짐
else:
variance = np.random.normal(loc=5, scale=1) # 기본 배달시간
# 라이더 배차 수락율과 규모에 따른 배달시간 조정
rider_effect = 1 / (rider_acceptance_rate * num_riders + 1)
return base_time + variance * rider_effect
# 가상의 데이터 생성
hours = np.random.randint(0, 24, n_samples)
rider_acceptance_rates = np.random.uniform(0.5, 1.0, n_samples)
num_riders = np.random.randint(10, 50, n_samples)
delivery_times = [generate_delivery_time(hour, rate, riders)
for hour, rate, riders in zip(hours, rider_acceptance_rates, num_riders)]
# 데이터프레임으로 정리
df = pd.DataFrame({
'hour': hours,
'rider_acceptance_rate': rider_acceptance_rates,
'num_riders': num_riders,
'delivery_time': delivery_times
})
from evidently.report import Report
from evidently.metric_preset import DataDriftPreset
# 데이터 프레임을 두 개의 기간으로 나누어 모델 드리프트 확인
reference_data = df[:500] # 첫 번째 시점의 데이터
current_data = df[500:] # 두 번째 시점의 데이터
# Evidently 리포트 생성
report = Report(metrics=[DataDriftPreset()])
report.run(reference_data=reference_data, current_data=current_data)
# 리포트 출력
report