DOCUMENTATION

Auto-Tuner 해부 ①: 엔진 개요와 설계 철학

EXAWin Auto-Tuner의 전체 구조를 해부한다. 6개 학습 대상, 5단계 데이터 성숙도, 그리고 "맞추는 것이 아니라 정확하게 만드는 것"이라는 설계 원칙을 상세히 설명한다.

이 문서 시리즈는 EXAWin의 Auto-Tuner 엔진 내부를 해부한다. 코드 한 줄 한 줄의 의미, 선택한 통계 기법의 이유, 그리고 각 파라미터가 왜 그 범위에 있어야 하는지를 강의하듯 풀어간다.

이 시리즈를 끝까지 읽으면, 당신은 Auto-Tuner의 모든 추천이 왜 그 값인지 설명할 수 있게 된다.



1. Auto-Tuner란 무엇인가

1.1 한 줄 정의

Auto-Tuner = 과거 프로젝트(Won/Lost)의 결과를 바탕으로, 베이지안 엔진의 파라미터를 "정확하게 만드는" 시스템

여기서 핵심은 "정확하게"다. P(Win)을 높이는 것이 아니라, Won 딜의 P(Win)은 높고 Lost 딜의 P(Win)은 낮게 — 즉 현실과 일치시키는 방향으로 파라미터를 조정한다.

1.2 자동차 비유

엔진(베이지안 수식) 자체는 바뀌지 않는다. Auto-Tuner가 하는 일은 연료 배합비를 조절하는 것이다:

엔진 부품자동차 비유EXAWin 대응
점화 임계값점화 시점 (이그니션 타이밍)T — 스테이지 임계값
연료 분사량인젝터 열림 시간Impact — 시그널 가중치
가속 반응스로틀 감도k — 기울기(Velocity)
배기 처리촉매 변환기 효율Dampening — 중복 시그널 감쇠
연료 누유 패널티누유 경보Silence Penalty — 활동 공백 패널티

1.3 설계 5원칙

① 맞추는 것이 아니라 정확하게 만드는 것
② 임피던스 이중구조를 보존
③ 추천 + 판단 근거를 함께 제공
④ 인간 승인 필수 — 자동 적용 없음
⑤ 저장 데이터 불변 — 시뮬레이션은 순수 계산

특히 ⑤는 중요하다. Auto-Tuner는 한 번도 DB를 수정하지 않는다. 분석 버튼을 누르면 메모리에서 시뮬레이션을 돌리고, 관리자가 "적용" 버튼을 눌러야만 비로소 DB가 업데이트된다.



2. 6개 학습 대상

Auto-Tuner가 분석하고 추천하는 파라미터는 정확히 6개다.

① Signal Lift — 판별력 분석

"이 시그널이 나타나면, Won 확률이 실제로 높아지는가?"

각 시그널의 Lift = (Won에서 출현율) / (Lost에서 출현율)을 계산한다. Lift > 1이면 양성 지표, Lift < 1이면 음성 지표다. 현재 분류(Positive/Negative)와 실제 판별력이 일치하는지 검증한다.

📌 상세: ② Signal Lift 해부편

② Impact Score — 최적 가중치

"Game Changer에 5.0이라는 값이 정말 최적인가?"

각 ImpactType의 점수를 ±범위 내에서 변경하면서, 분리도(Won avg P(Win) - Lost avg P(Win))가 가장 높아지는 값을 찾는다. Phase별로 탐색 범위가 확장된다.

📌 상세: ③ Grid Search 엔진 해부편

③ T — 임계값 최적화

"각 스테이지의 문턱값(Threshold)은 어디에 놓아야 Won과 Lost를 가장 잘 구분하는가?"

Youden J 통계량 = Sensitivity + Specificity - 1 을 최대화하는 T 지점을 찾는다. J < 0.20이면 "데이터가 이 스테이지에서 Won/Lost를 구분하지 못한다"는 뜻이므로 추천하지 않는다.

📌 상세: ④ Threshold · k 해부편

④ k — 기울기 (Velocity)

"P(Win)이 T를 넘길 때 얼마나 급격하게 반응해야 하는가?"

기존에는 증거량(α+β)의 비율에 기반한 경험적 공식 1 + ln(ratio)를 사용했으나, Grid Search 기반으로 전환하여 분리도를 직접 최대화하는 k를 찾는다. 상한은 이론서 기준 12이다.

📌 상세: ④ Threshold · k 해부편

⑤ Dampening — 중복 시그널 감쇠

"같은 미팅에서 시그널 3개가 동시에 나왔을 때, 모두 같은 가중치를 줘야 하는가?"

Compound Score = MAX(시그널들) + 나머지 × dampening. dampening이 0이면 가장 강한 시그널만, 1이면 모두 동일 가중치. 현재 기본값 0.25를 Grid Search로 최적화한다.

⑥ Silence Penalty — 활동 공백 패널티

"고객을 만나지 않는 기간이 길어지면, 얼마나 패널티를 줘야 하는가?"

β에 누적되는 패널티 비율을 Grid Search로 최적화한다.



3. 5단계 데이터 성숙도 (Phase)

Auto-Tuner는 데이터가 부족할 때 과적합을 방지하기 위해, Won/Lost 중 적은 쪽(min) 기준으로 5단계 신뢰 등급을 매긴다.

Phase조건Emoji조정 범위신뢰도
1min < 5분석 불가none
2min 5~9🟠방향성 참조만, 적용 불가low
3min 10~19🟡Impact, T, kmoderate
4min 20~49🟢Impact, T, k, Dampening, Silencehigh
5min ≥ 50🔵전체 + MCMC 사후분포stable

왜 min을 기준으로 하는가?

Won이 100건인데 Lost가 3건이면, Lost 3건만으로 "이 파라미터에서 Lost가 잘 구분된다"고 말할 수 없다. 통계적 유의성은 항상 작은 표본에 의해 제한된다.

Phase에 따라 변하는 것들

Phase가 올라가면 Auto-Tuner의 행동이 점진적으로 확장된다:

동작Phase 2Phase 3Phase 4Phase 5
Signal Lift 최소 출현3회5회8회10회
Grid Search 범위±20%±30%±40%±50%
T/k 조정
Dampening/Silence 조정
MCMC 사후분포
Prior α/β 추천수동적률법MLEMLE


4. 핵심 지표: 분리도 (Separation)

Auto-Tuner의 목적함수(objective function)는 분리도다.

Separation=P(Win)WonP(Win)Lost\text{Separation} = \overline{P(Win)}_{\text{Won}} - \overline{P(Win)}_{\text{Lost}}
  • Separation > 0.40: Excellent (A) — 파라미터가 현실을 잘 반영
  • 0.25 ~ 0.40: Good (B) — 개선 여지 있음
  • 0.10 ~ 0.25: Needs Improvement (C)
  • < 0.10: Urgent (D) — 파라미터 조정 필요

분리도의 한계와 AUC

분리도는 평균의 차이만 측정한다. 분포의 겹침을 고려하지 않는다.

예시:

  • 시나리오 A: Won 평균 0.70, Lost 평균 0.30 → Separation 0.40 → Excellent!
  • 시나리오 B: Won 범위 [0.20, 0.90], Lost 범위 [0.10, 0.80] → 평균 차이는 같지만 많이 겹침

이를 보완하기 위해 ROC AUC를 도입했다. AUC는 "무작위로 Won 하나, Lost 하나를 뽑았을 때, Won의 P(Win)이 더 높을 확률"이다. 겹침이 많으면 AUC는 낮아진다.

📌 상세: ⑤ 통계 검증 해부편



5. 시뮬레이션 엔진

Auto-Tuner의 핵심은 메모리 기반 시뮬레이션이다. DB에 저장된 실제 BayesianUpdate를 사용하지 않고, 원본 데이터(활동, 시그널, Prior)로부터 처음부터 다시 계산한다.

왜 재계산하는가?

파라미터를 바꿔보려면 "만약 Impact가 3.0이었다면 P(Win)이 어떻게 달라졌을까?"를 계산해야 한다. 이건 DB에 저장된 과거 결과로는 알 수 없다. 가상의 파라미터로 처음부터 시뮬레이션해야만 알 수 있다.

시뮬레이션 1회 흐름:
  α, β ← Prior 초기값
  for활동 (시간순):
    → 해당 활동의 시그널들로 Compound Score 계산
    → α += SWV × 양성 Compound
    → β += SWV × 음성 Compound
    → β += 침묵 패널티 (활동 공백 시)
  P(Win) = α / (α + β)

이 시뮬레이션을 모든 Won/Lost 프로젝트에 대해 반복하면, 그 파라미터에서의 분리도를 알 수 있다.

DB 쿼리 = 0

시뮬레이션 중 DB 쿼리는 단 한 번도 실행되지 않는다. 초기화 시 모든 데이터를 메모리에 프리로딩하고, 그 이후는 순수 계산만 수행한다. 이것이 원칙 ⑤의 구현이다.



6. 문서 시리즈 안내

제목내용
① [현재]엔진 개요와 설계 철학전체 구조, 6학습 대상, Phase, 분리도
Signal Lift 해부Lift 계산, Laplace smoothing, 분류 검증
Grid Search 엔진 해부Impact 최적화, Phase별 범위, Dampening, Silence
Threshold · k 해부Youden J, T 최적화, k Grid Search
통계 검증 해부AUC, K-fold CV, Prior 추천
MCMC 사후분포 해부Emcee Ensemble MCMC, 모델 정의, HDI, 수렴 진단