Model Drift Check Library, Evidently AI

Model Drift Check Library, Evidently AI
Photo by Karol Smoczynski / Unsplash

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

Read more

다중공선성은 잘못된 인과추론 결과를 만들어낼 수 있습니다.

다중공선성은 잘못된 인과추론 결과를 만들어낼 수 있습니다.

다중공선성(Multi Collinearity) * **Multi-Collinearity(다중공선성)**는 독립 변수들 간의 강한 상관관계가 존재할 때 발생합니다. 즉, 한 독립 변수가 다른 독립 변수에 의해 설명될 수 있을 정도로 상관관계가 높은 상황을 의미합니다. * 이 문제는 주로 회귀 분석에서 나타나며, 변수들 간의 관계를 해석하는 데 있어 큰 장애물이 될 수 있습니다. * 일반적인 회귀식을 $Y=

Bayesian P-Value는 불확실성을 감안하여 모델의 적합도를 평가합니다.

Bayesian P-Value는 불확실성을 감안하여 모델의 적합도를 평가합니다.

Bayesian P- Value * Bayesian P-Value는 **모델의 적합도(goodness-of-fit)**를 평가하는 데 사용됩니다. * 사후 분포(posterior distribution)를 이용하여 실제 데이터와 모델이 생성한 예상 데이터를 비교함으로써, 관측된 데이터가 모델에 의해 얼마나 잘 설명되는지를 평가합니다. * 빈도주의 p-값은 "관찰된 데이터보다 극단적인 데이터가 나올 확률"을 계산하지만, Bayesian P-Value는 "모델이 실제

Non-Identifiability는 Model Parameter를 고유하게 식별할 수 없는 현상입니다.

Non-Identifiability는 Model Parameter를 고유하게 식별할 수 없는 현상입니다.

Non Identifiability * Non-Identifiability는 주어진 데이터와 모델에 대해 특정 파라미터를 고유하게 식별할 수 없는 상황을 의미합니다. 즉, 여러 파라미터 값들이 동일한 데이터를 생성할 수 있으며, 이로 인해 특정 파라미터 값을 확정적으로 추정하기 어렵게 됩니다. * 베이지안 추론에서 Non-Identifiability는 사후 분포가 특정 파라미터 값에 대해 명확하게 수렴하지 않고, 여러 값들에 대해 비슷한 확률을

Rootgram은 큰 분산을 갖거나 비정규 형태의 데이터를 위한 히스토그램입니다.

Rootgram은 큰 분산을 갖거나 비정규 형태의 데이터를 위한 히스토그램입니다.

Rootgram * 히스토그램의 변형으로 데이터가 비정규적이거나 큰 분산을 가지는 경우, 정확한 분포를 파악하기 위해 사용됩니다. * 일반적으로 히스토그램은 데이터의 빈도를 직접적으로 나타내기 때문에, 큰 값이 빈번하게 발생하는 경우 상대적으로 작은 값을 잘 드러내지 못하는 경향이 있습니다. 반면, Rootgram은 빈도를 제곱근 형태로 변환하여, 데이터 분포의 차이를 더 잘 시각화할 수 있도록 돕습니다 * 여기서