예측 분석 (Predictive Analytics)¶
개요¶
예측 분석은 과거 데이터를 기반으로 미래 결과를 예측하는 분석 기법이다. 통계 모델, 머신러닝, 데이터 마이닝 기술을 활용하여 비즈니스 의사결정을 지원한다.
예측 분석 유형¶
| 유형 | 목적 | 예시 |
|---|---|---|
| 분류 예측 | 카테고리 예측 | 이탈 여부, 구매 여부 |
| 회귀 예측 | 수치 예측 | 매출액, 수요량 |
| 시계열 예측 | 시간 흐름 예측 | 주가, 트래픽 |
| 확률 예측 | 확률 분포 예측 | 리스크 스코어 |
예측 분석 프로세스¶
비즈니스 활용 사례¶
1. 고객 이탈 예측 (Churn Prediction)¶
목적: 이탈 가능성 높은 고객 사전 식별
핵심 피처:
| 카테고리 | 피처 | 설명 |
|---|---|---|
| 행동 | 최근 활동일 | Recency |
| 행동 | 이용 빈도 추세 | 감소 패턴 |
| 거래 | 구매액 변화 | MoM 비교 |
| 서비스 | CS 문의 건수 | 불만 신호 |
| 인구통계 | 가입 기간 | Tenure |
모델링 접근:
# 이탈 예측 파이프라인
from sklearn.ensemble import GradientBoostingClassifier
from sklearn.model_selection import cross_val_score
# 피처 생성
features = [
'days_since_last_activity',
'activity_trend_30d',
'purchase_amount_change',
'cs_contact_count',
'tenure_months'
]
# 모델 학습
model = GradientBoostingClassifier(n_estimators=100)
scores = cross_val_score(model, X[features], y, cv=5, scoring='roc_auc')
print(f"AUC: {scores.mean():.3f} (+/- {scores.std()*2:.3f})")
액션 연계:
| 이탈 확률 | 액션 | 예산 |
|---|---|---|
| > 80% | 즉시 연락 + 특별 혜택 | 높음 |
| 50-80% | 리텐션 캠페인 | 중간 |
| 30-50% | 이메일 마케팅 | 낮음 |
| < 30% | 정기 커뮤니케이션 | 최소 |
2. 수요 예측 (Demand Forecasting)¶
목적: 상품/서비스 수요량 예측
핵심 피처:
| 카테고리 | 피처 | 설명 |
|---|---|---|
| 시간 | 요일, 월, 계절 | 주기성 |
| 이벤트 | 프로모션, 휴일 | 외부 요인 |
| 가격 | 가격 변동 | 탄력성 |
| 경쟁 | 경쟁사 가격 | 시장 상황 |
| 외부 | 날씨, 경제지표 | 환경 요인 |
모델링 접근:
# 시계열 수요 예측
from prophet import Prophet
import pandas as pd
# Prophet 모델
model = Prophet(
yearly_seasonality=True,
weekly_seasonality=True,
holidays=holidays_df
)
# 외부 회귀변수 추가
model.add_regressor('promotion')
model.add_regressor('price')
model.add_regressor('weather')
model.fit(df)
forecast = model.predict(future)
활용: - 재고 최적화 - 인력 배치 - 생산 계획 - 마케팅 예산 배분
3. 신용 리스크 예측 (Credit Risk)¶
목적: 대출 상환 능력 평가
핵심 피처:
| 카테고리 | 피처 | 설명 |
|---|---|---|
| 신용 | 신용점수, 연체 이력 | 과거 이력 |
| 소득 | 연소득, 고용 안정성 | 상환 능력 |
| 부채 | DTI, 기존 대출 | 부채 부담 |
| 자산 | 담보, 자산 규모 | 보증 능력 |
모델링:
# 신용 스코어링
from sklearn.linear_model import LogisticRegression
from sklearn.calibration import CalibratedClassifierCV
# 해석 가능한 모델 선호
base_model = LogisticRegression(penalty='l1', solver='saga')
calibrated = CalibratedClassifierCV(base_model, cv=5, method='isotonic')
calibrated.fit(X_train, y_train)
# 확률 예측
default_prob = calibrated.predict_proba(X_test)[:, 1]
규제 고려사항: - 모델 해석 가능성 (XAI) - 공정성 검증 (Fairness) - 규제 준수 (Basel, IFRS9)
4. 가격 최적화 (Price Optimization)¶
목적: 수익 극대화 가격 설정
핵심 분석:
| 분석 유형 | 목적 | 방법 |
|---|---|---|
| 가격 탄력성 | 가격-수요 관계 | 회귀 분석 |
| 경쟁 분석 | 시장 포지셔닝 | 크롤링 + 비교 |
| 세분화 | 고객별 지불 의향 | 클러스터링 |
모델링:
# 가격 탄력성 추정
import statsmodels.api as sm
# 로그-로그 모델
model = sm.OLS(
np.log(df['quantity']),
sm.add_constant(np.log(df['price']))
).fit()
elasticity = model.params['log_price']
print(f"가격 탄력성: {elasticity:.2f}")
# -1.5 → 가격 1% 상승 시 수요 1.5% 감소
예측 모델 선택 가이드¶
문제 유형별 추천 모델¶
| 문제 | 추천 모델 | 이유 |
|---|---|---|
| 이탈 예측 | XGBoost, LightGBM | 정확도, 피처 중요도 |
| 수요 예측 | Prophet, LSTM | 시계열, 계절성 |
| 신용 스코어 | LR, GAM | 해석 가능성, 규제 |
| 가격 최적화 | 인과 모델, DML | 인과관계 추정 |
| 이미지 분류 | CNN, ViT | 이미지 특화 |
| 텍스트 분류 | BERT, RoBERTa | 언어 이해 |
정확도 vs 해석 가능성¶
모델 평가 지표¶
분류 문제¶
| 지표 | 설명 | 적합한 경우 |
|---|---|---|
| AUC-ROC | 분류 성능 종합 | 균형 데이터 |
| PR-AUC | 정밀도-재현율 | 불균형 데이터 |
| F1 Score | 정밀도/재현율 조화 | 비용 균형 |
| Precision@K | 상위 K개 정밀도 | 마케팅 타겟팅 |
회귀 문제¶
| 지표 | 설명 | 적합한 경우 |
|---|---|---|
| RMSE | 오차 제곱 평균 | 큰 오차 패널티 |
| MAE | 오차 절대 평균 | 이상치 민감도 낮음 |
| MAPE | 백분율 오차 | 스케일 독립 |
| R-squared | 설명력 | 모델 비교 |
예측 분석 성공 요소¶
데이터 품질¶
| 요소 | 체크 포인트 |
|---|---|
| 완전성 | 결측치 비율 < 5% |
| 정확성 | 이상치 검증 |
| 일관성 | 형식 통일 |
| 시의성 | 데이터 지연 최소화 |
모델 운영¶
| 단계 | 핵심 활동 |
|---|---|
| 배포 | A/B 테스트, 카나리 배포 |
| 모니터링 | 드리프트 감지, 성능 추적 |
| 재학습 | 주기적 업데이트, 트리거 기반 |
| 피드백 | 실제 결과 반영 |
참고 자료¶
마지막 업데이트: 2026-02-11