<aside>

</aside>


πŸ“– 챕터 μ†Œκ°œ

11κ°•μ—μ„œ μš°λ¦¬λŠ” κ°€μž₯ λ›°μ–΄λ‚œ 단일 λͺ¨λΈλ“€μ„ μ°Ύμ•„λƒˆμŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ 졜고의 μ„ μˆ˜ ν•œ λͺ…μœΌλ‘œ νŒ€μ„ κΎΈλ¦¬λŠ” 것보닀, 각기 λ‹€λ₯Έ 강점을 κ°€μ§„ μ„ μˆ˜λ“€λ‘œ 'λ“œλ¦ΌνŒ€'을 λ§Œλ“€λ©΄ 더 쒋은 μ„±κ³Όλ₯Ό λ‚Ό 수 μžˆμ§€ μ•Šμ„κΉŒμš”? 이번 μ‹œκ°„μ—λŠ” κ°œλ³„ λͺ¨λΈλ“€μ„ λ¨Όμ € 졜적의 μƒνƒœλ‘œ νŠœλ‹ν•œ λ’€, 이듀을 κ²°ν•©ν•˜μ—¬ μ„±λŠ₯을 κ·ΉλŒ€ν™”ν•˜λŠ” μ „λ¬Έκ°€ μˆ˜μ€€μ˜ 앙상블(Ensemble) μ›Œν¬ν”Œλ‘œμš°λ₯Ό λ°°μ›Œλ³΄κ² μŠ΅λ‹ˆλ‹€. λ˜ν•œ λͺ¨λΈμ΄ λ‚΄λ†“λŠ” 예츑 'ν™•λ₯ '의 신뒰도λ₯Ό λ†’μ΄λŠ” **λͺ¨λΈ 보정(Calibration)**κΉŒμ§€ λ‹€λ€„λ³΄κ² μŠ΅λ‹ˆλ‹€. λͺ¨λΈμ˜ μ„±λŠ₯을 ν•œκ³„κΉŒμ§€ λŒμ–΄μ˜¬λ¦΄ μ€€λΉ„, λ˜μ…¨λ‚˜μš”?


🎯 챕터 λͺ©ν‘œ


πŸ’» 이번 μ±•ν„°μ˜ 전체 μ½”λ“œ 및 ν”„λ‘œμ νŠΈ ꡬ쑰

이번 μ±•ν„°μ˜ 핡심 μ½”λ“œ

πŸ’‘ [νŠœλ‹ ν›„ 앙상블]: μƒμœ„ λͺ¨λΈλ“€μ„ 각각 νŠœλ‹ν•˜μ—¬ κ°œλ³„ μ„±λŠ₯을 λ¨Όμ € λŒμ–΄μ˜¬λ¦° λ’€, 이 μ΅œμ ν™”λœ λͺ¨λΈλ“€μ„ μ•™μƒλΈ”ν•˜μ—¬ μ‹œλ„ˆμ§€λ₯Ό λ§Œλ“­λ‹ˆλ‹€.

# 1. 라이브러리 μ€€λΉ„
from pycaret.datasets import get_data
from pycaret.classification import setup, compare_models, tune_model
from pycaret.classification import blend_models, stack_models, create_model, calibrate_model, predict_model

# 2. μ‹€ν—˜ ν™˜κ²½ μ„€μ •
df = get_data('juice')
setup(data=df, target='Purchase', session_id=786, fold_shuffle=True)

# 3. F1 κΈ°μ€€ μƒμœ„ 3개 λͺ¨λΈ 선택 (ν™•λ₯  μ˜ˆμΈ‘μ„ μ§€μ›ν•˜μ§€ μ•ŠλŠ” λͺ¨λΈ μ œμ™Έ)
top3 = compare_models(sort='F1', n_select=3, exclude=['ridge','svm'])

# 4. μƒμœ„ λͺ¨λΈ 각각 νŠœλ‹
tuned_top3 = [tune_model(m, optimize='F1', choose_better=True) for m in top3]

# 5. νŠœλ‹λœ λͺ¨λΈλ“€λ‘œ 앙상블 μˆ˜ν–‰ 및 μ΅œμ’… μ„±λŠ₯ 검증
print("\\n--- 1. λΈ”λ Œλ”©(Blending) λͺ¨λΈ μ„±λŠ₯ ---")
blended_model = blend_models(estimator_list=tuned_top3, method='soft')
print("\\n[Holdout] Blending")
predict_model(blended_model)

print("\\n--- 2. μŠ€νƒœν‚Ή(Stacking) λͺ¨λΈ μ„±λŠ₯ ---")
stacked_model = stack_models(estimator_list=tuned_top3, meta_model=create_model('lr'))
print("\\n[Holdout] Stacking")
predict_model(stacked_model)

# (μ°Έκ³ ) 단일 λͺ¨λΈ 보정
print("\\n--- 3. λͺ¨λΈ 보정(Calibration) μ„±λŠ₯ ---")
calibrated_lda = calibrate_model(create_model('lda'))
print("\\n[Holdout] Calibrated LDA")
predict_model(calibrated_lda)

μ½”λ“œ μ‹€ν–‰ κ²°κ³Ό 미리보기

μ„±λŠ₯ ν–₯상 μš”μ•½

앙상블 기법듀이 단일 λͺ¨λΈμ˜ μ„±λŠ₯을 λ›°μ–΄λ„˜λŠ” 것을 확인할 수 μžˆμŠ΅λ‹ˆλ‹€. 특히 μŠ€νƒœν‚Ή λͺ¨λΈμ΄ ν™€λ“œμ•„μ›ƒ ν…ŒμŠ€νŠΈμ—μ„œ κ°€μž₯ 높은 F1 점수λ₯Ό κΈ°λ‘ν–ˆμŠ΅λ‹ˆλ‹€.

λͺ¨λΈ ꡐ차 검증 (CV) Mean F1 ν™€λ“œμ•„μ›ƒ (Test) F1
lr (단일 λͺ¨λΈ) 0.8193 -
lr (νŠœλ‹ ν›„) 0.8274 -
λΈ”λ Œλ”© λͺ¨λΈ 0.8209 0.8260
μŠ€νƒœν‚Ή λͺ¨λΈ 0.8240 0.8342 ✨