추천시스템

Online Evaluation

metamong-data 2025. 4. 23. 18:26
728x90
반응형

한눈에 보는 요약

온라인 평가는 머신러닝 모델·알고리즘을 실제 운영 환경에서 실시간으로 검증하는 방법으로, 오프라인 평가가 제공하지 못하는 사용자 행동·비즈니스 지표를 직접 측정할 수 있다. 주요 기술은 A/B 테스트, 다중 슬롯(멀티-암드) 밴딧, 스트림 창 (window) 기반 측정, 개념 드리프트 탐지이며, 대규모 데이터 스트림 프레임워크(MOA·Flink 등)를 통해 구현된다. 실무에서는 오프라인 지표가 충분히 안정화된 후 온라인 평가를 적용하고, 통계적 유의성·실험 설계·실시간 모니터링으로 품질을 보증한다. (Shaped | Recommendations and Search, Medium, MOA, Optimizely)


개요

온라인 평가(Online Evaluation)는 실제 트래픽을 투입한 실험적 방법으로, 사용자 반응(클릭률·전환·체류 시간 등)을 직접 관측해 모델의 가치를 측정한다. 오프라인 평가와 달리 모델-환경 상호작용에 따른 동적 효과·개념 드리프트를 반영할 수 있다. (Shaped | Recommendations and Search, toloka.ai)


기본 개념

1. 특징

  1. 실험 단위: A/B 테스트가 가장 보편적이며, 트래픽을 Control(모델 A)·Treatment(모델 B)로 분할해 효과 차이를 검정한다. (Optimizely, SurveyMonkey)

  2. 지표 설계: 클릭률(CTR)·Conversion Rate 등 1차 지표와, Revenue Per Mille(RPM) 같은 종합 비즈니스 지표를 사용한다. (neptune.ai)

  3. 통계적 검정: p-value·신뢰구간으로 우연 차이를 배제한다. 효과 크기가 작을 수록 표본 수와 실험 기간이 커져야 한다. (SurveyMonkey)

2. 코드 예제 (Python)

import numpy as np
np.random.seed(42)

N = 1_000_000
control = np.random.binomial(1, 0.05, N // 2)
treatment = np.random.binomial(1, 0.055, N // 2)

ctr_control = np.mean(control)
ctr_treatment = np.mean(treatment)
lift = (ctr_treatment / ctr_control - 1.0) * 100

print(f"CTR(Control):    {ctr_control:.4f}")
print(f"CTR(Treatment):  {ctr_treatment:.4f}")
print(f"Lift:            {lift:.2f} %")

3. 출력 예시

CTR(Control):    0.0500
CTR(Treatment):  0.0550
Lift:            10.00 %

이 결과는 실제 트래픽에서 얻어진 CTR 변화를 기반으로 신규 모델의 효과를 정량적으로 비교할 수 있음을 보여준다.


고급 기능

1. 특징

  1. 다중 슬롯 밴딧(MAB): 모델을 팔(Arm)로 정의하고 Upper Confidence Bound(UCB)·Thompson Sampling으로 탐색-활용 균형을 자동화한다. (arXiv, cs.nyu.edu)

  2. 스트림 평가 윈도잉: 고정·가변 윈도(window)로 실시간 정확도·NDCG 등을 누적·가중 집계한다. (Proceedings of Machine Learning Research, Diva Portal)

  3. 개념 드리프트 탐지: 윈도 통계 변화를 CUSUM·ADWIN으로 감지해 모델을 재학습하거나 랭킹을 재조정한다. (arXiv)

  4. 프레임워크 사례:

    • MOA (자바): 수백 만 레코드 스트림에서도 실시간 평가 지원. (MOA)

    • Amazon Personalize: 온라인 지표를 자동 수집·시각화. (AWS Documentation)

    • Flink + Kafka: 대용량 로그를 윈도별로 집계해 메트릭 파이프라인을 구성. (Springer Link)

2. 코드 예제 (Python) – 슬라이딩 윈도 정밀도

from collections import deque
import random

def precision_sliding(y_true, y_pred, k):
    tp = sum(1 for i in range(k) if y_true[i] == y_pred[i] == 1)
    return tp / k

truth, pred = deque(), deque()
WINDOW = 1000

# 예시 스트림 데이터 시뮬레이션
def generate_event():
    label = random.randint(0, 1)
    prediction = label if random.random() > 0.2 else 1 - label
    return label, prediction

for _ in range(2000):
    y, y_hat = generate_event()
    truth.appendleft(y)
    pred.appendleft(y_hat)
    if len(truth) > WINDOW:
        truth.pop()
        pred.pop()
    if len(truth) == WINDOW:
        p = precision_sliding(truth, pred, WINDOW)
        print(f"[precision@W] = {p:.3f}")

3. 출력 예시

[precision@W] = 0.812

정밀도 하락이 지속되면 드리프트나 품질 저하 가능성을 탐지하고, 모델 리프레시 또는 정책 변경을 검토할 수 있다.


결론

온라인 평가는 실제 사용자와의 상호작용을 정량화하여 모델의 사업적 가치를 검증하는 필수 단계이다. A/B 테스트로 출발해 밴딧·드리프트 탐지·스트림 프레임워크로 고도화하면 데이터 규모가 증가해도 정확한 의사결정을 지속할 수 있다. 실무에서는 (1) 명확한 핵심 지표, (2) 충분한 표본 및 기간, (3) 자동 모니터링·알림 체계를 준비해 실험 오류·지표 왜곡을 방지해야 한다. (Shaped | Recommendations and Search, toloka.ai, contentsquare.com)

728x90

'추천시스템' 카테고리의 다른 글

추천 품질 평가 지표 정리 (Offline 중심)  (0) 2025.04.23
추천시스템 성능 지표  (0) 2025.04.23
고전적인 추천 알고리즘  (0) 2025.03.15
추천시스템 소개 및 특성  (0) 2025.03.14