콘텐츠로 이동

최적화 엔진 — MIP/CP로 IV 최대화

1.1 문제 정식화

Pre-binning으로 생성된 \(n\)개 Fine Bin을 어떻게 합병해야 IV가 최대가 되는지를 수학적 최적화로 푼다.

목적함수:

\[\max \sum_{i,j} V_{ij} \cdot x_{ij} \tag{1}\]
  • \(x_{ij}\): 이진 결정 변수 — Fine Bin \(j\)부터 \(i\)까지를 하나의 Coarse Bin으로 합병하면 1
  • \(V_{ij}\): 해당 합병 조합의 IV 기여분 (사전 계산된 divergence 행렬)

제약조건:

제약 수학적 의미 대응 파라미터
유일 할당 각 Fine Bin은 정확히 하나의 Coarse Bin에 소속
인접성 합병은 연속된 Fine Bin끼리만 가능
단조성 합병 후 Event Rate가 단조증가/감소 monotonic_trend
Bin 수 최종 Bin 수의 상한/하한 min_n_bins, max_n_bins
최소 샘플 각 Coarse Bin의 최소 샘플 비율 min_bin_size
p-value 인접 Coarse Bin 간 통계적 유의성 max_pvalue

1.2 Solver 선택

optb = OptimalBinning(
    solver="cp",        # 제약 프로그래밍 (기본값, 권장)
    # solver="mip",     # 혼합정수계획법
)
Solver 내부 엔진 특징
"cp" Google OR-Tools CP-SAT 제약 전파(constraint propagation) 기반. Pre-bin 20개 이상일 때 효율적
"mip" Google OR-Tools BOP/CBC 분기한정법(branch-and-bound). Pre-bin 20개 이하에서 빠름

실무 권장

기본값 "cp"를 거의 모든 경우에 사용한다. "mip"은 변수 수가 수백 개이고 Pre-bin이 적을 때만 고려.