<aside>
</aside>
11κ°μμ μ°λ¦¬λ κ°μ₯ λ°μ΄λ λ¨μΌ λͺ¨λΈλ€μ μ°Ύμλμ΅λλ€. νμ§λ§ μ΅κ³ μ μ μ ν λͺ μΌλ‘ νμ 꾸리λ κ²λ³΄λ€, κ°κΈ° λ€λ₯Έ κ°μ μ κ°μ§ μ μλ€λ‘ 'λλ¦Όν'μ λ§λ€λ©΄ λ μ’μ μ±κ³Όλ₯Ό λΌ μ μμ§ μμκΉμ? μ΄λ² μκ°μλ κ°λ³ λͺ¨λΈλ€μ λ¨Όμ μ΅μ μ μνλ‘ νλν λ€, μ΄λ€μ κ²°ν©νμ¬ μ±λ₯μ κ·Ήλννλ μ λ¬Έκ° μμ€μ μμλΈ(Ensemble) μν¬νλ‘μ°λ₯Ό λ°°μλ³΄κ² μ΅λλ€. λν λͺ¨λΈμ΄ λ΄λλ μμΈ‘ 'νλ₯ 'μ μ λ’°λλ₯Ό λμ΄λ **λͺ¨λΈ 보μ (Calibration)**κΉμ§ λ€λ€λ³΄κ² μ΅λλ€. λͺ¨λΈμ μ±λ₯μ νκ³κΉμ§ λμ΄μ¬λ¦΄ μ€λΉ, λμ ¨λμ?
blend_models()
(soft voting)λ₯Ό μ¬μ©νμ¬ μ¬λ¬ νλλ λͺ¨λΈμ ν¨κ³Όμ μΌλ‘ κ²°ν©ν μ μμ΅λλ€.stack_models()
(stacking)λ₯Ό μ¬μ©νμ¬ νλλ λͺ¨λΈλ€ μμ λ©ν λͺ¨λΈμ νμ΅μμΌ μ±λ₯μ κ·Ήλνν μ μμ΅λλ€.calibrate_model()
ν¨μλ₯Ό μ¬μ©νμ¬ λͺ¨λΈμ μμΈ‘ νλ₯ κ°μ μ λ’°λλ₯Ό λμΌ μ μμ΅λλ€.π‘ [νλ ν μμλΈ]: μμ λͺ¨λΈλ€μ κ°κ° νλνμ¬ κ°λ³ μ±λ₯μ λ¨Όμ λμ΄μ¬λ¦° λ€, μ΄ μ΅μ νλ λͺ¨λΈλ€μ μμλΈνμ¬ μλμ§λ₯Ό λ§λλλ€.
# 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 β¨ |