<aside>

</aside>


๐Ÿ“– ์ฑ•ํ„ฐ ์†Œ๊ฐœ

์ถ•ํ•˜ํ•ฉ๋‹ˆ๋‹ค! ์šฐ๋ฆฌ๋Š” ์ง€๋‚œ ์‹œ๊ฐ„๊นŒ์ง€ ์„ฑ๋Šฅ์ด ๋›ฐ์–ด๋‚œ ๋ชจ๋ธ๋“ค์„ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๋งŒ์•ฝ ์„ฑ๋Šฅ์ด ๊ฐ€์žฅ ์ข‹์€ ๋ชจ๋ธ์ด ๊ทธ ํŒ๋‹จ ๊ทผ๊ฑฐ๋ฅผ ์ „ํ˜€ ์„ค๋ช…ํ•  ์ˆ˜ ์—†๋Š” '๋ธ”๋ž™๋ฐ•์Šค'๋ผ๋ฉด ์–ด๋–จ๊นŒ์š”? ๋น„์ฆˆ๋‹ˆ์Šค ํ˜„์žฅ์—์„œ๋Š” '์™œ?'๋ผ๋Š” ์งˆ๋ฌธ์— ๋‹ตํ•  ์ˆ˜ ์—†๋Š” ๋ชจ๋ธ์€ ์‹ ๋ขฐ๋ฐ›๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ์‹œ๊ฐ„์—๋Š” ์„ฑ๋Šฅ๊ณผ ํ•ด์„ ๊ฐ€๋Šฅ์„ฑ์˜ ๊ท ํ˜•์„ ๋งž์ถ”๋Š” ์ „๋ฌธ๊ฐ€์ ์ธ ์ ‘๊ทผ๋ฒ•์„ ๋ฐฐ์šฐ๊ณ , interpret_model๊ณผ SHAP์„ ์‚ฌ์šฉํ•ด ๋ธ”๋ž™๋ฐ•์Šค ๋ชจ๋ธ์˜ ๋จธ๋ฆฟ์†์„ ๋“ค์—ฌ๋‹ค๋ณด๋Š” ๋ฐฉ๋ฒ•์„ ์ตํž™๋‹ˆ๋‹ค.


๐ŸŽฏ ์ฑ•ํ„ฐ ๋ชฉํ‘œ


๐Ÿ’ป ์ด๋ฒˆ ์ฑ•ํ„ฐ์˜ ์ „์ฒด ์ฝ”๋“œ ๋ฐ ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ

์ด๋ฒˆ ์ฑ•ํ„ฐ์˜ ํ•ต์‹ฌ ์ฝ”๋“œ

๐Ÿ’ก ํ•ด์„์ด ์šฉ์ดํ•œ lda ๋ชจ๋ธ๊ณผ ์„ฑ๋Šฅ์ด ๋›ฐ์–ด๋‚œ lightgbm ๋ชจ๋ธ์„ ๋น„๊ตํ•˜๊ณ , SHAP์„ ์ง€์›ํ•˜๋Š” lightgbm ๋ชจ๋ธ์˜ ๋‚ด๋ถ€๋ฅผ ํ•ด์„ํ•ด ๋ด…๋‹ˆ๋‹ค.

# 1. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ค€๋น„
from pycaret.datasets import get_data
from pycaret.classification import setup, create_model, tune_model, interpret_model, predict_model

# 2. ์‹คํ—˜ ํ™˜๊ฒฝ ์„ค์ •
df = get_data('juice')
setup(data=df, target='Purchase', session_id=786, fold_shuffle=True)

# 3. (๊ธฐ์ค€ ๋ชจ๋ธ) ํ•ด์„ ๊ฐ€๋Šฅํ•œ LDA ๋ชจ๋ธ ์„ฑ๋Šฅ ํ™•์ธ
print("--- 1. ๊ธฐ์ค€ ๋ชจ๋ธ(LDA) ์ƒ์„ฑ ๋ฐ ์ตœ์ข… ์„ฑ๋Šฅ ---")
lda = create_model('lda')
predict_model(lda)

# 4. (ํ•ด์„ ๋Œ€์ƒ) LightGBM ๋ชจ๋ธ ํŠœ๋‹ ๋ฐ ์ตœ์ข… ์„ฑ๋Šฅ ํ™•์ธ
print("\\n--- 2. ํ•ด์„ ๋Œ€์ƒ ๋ชจ๋ธ(LightGBM) ์ƒ์„ฑ ๋ฐ ์ตœ์ข… ์„ฑ๋Šฅ ---")
lgbm = create_model('lightgbm')
tuned_lgbm = tune_model(lgbm, optimize='F1', choose_better=True)
predict_model(tuned_lgbm)

# 5. ํŠœ๋‹๋œ LightGBM ๋ชจ๋ธ ํ•ด์„ (SHAP)
print("\\n--- 3. Global Interpretation (SHAP Summary Plot) ---")
interpret_model(tuned_lgbm)

print("\\n--- 4. Local Interpretation (SHAP Reason Plot) ---")
interpret_model(tuned_lgbm, plot='reason', observation=0)

์ฝ”๋“œ ์‹คํ–‰ ๊ฒฐ๊ณผ ๋ฏธ๋ฆฌ๋ณด๊ธฐ

์„ฑ๋Šฅ ๋น„๊ต ์š”์•ฝ

ํฅ๋ฏธ๋กญ๊ฒŒ๋„, ์ด ๊ฒฝ์šฐ์—๋Š” ๋” ๋‹จ์ˆœํ•˜๊ณ  ํ•ด์„ ๊ฐ€๋Šฅํ•œ lda ๋ชจ๋ธ์ด ๋ณต์žกํ•œ tuned_lgbm ๋ชจ๋ธ๋ณด๋‹ค ํ™€๋“œ์•„์›ƒ ํ…Œ์ŠคํŠธ์—์„œ ๋” ๋†’์€ F1 ์ ์ˆ˜๋ฅผ ๊ธฐ๋กํ–ˆ์Šต๋‹ˆ๋‹ค!

๋ชจ๋ธ ๊ต์ฐจ ๊ฒ€์ฆ (CV) Mean F1 ํ™€๋“œ์•„์›ƒ (Test) F1 SHAP ํ•ด์„ ๊ฐ€๋Šฅ
lda (๋‹จ์ˆœ ๋ชจ๋ธ) 0.8186 0.8310 โœจ โŒ
tuned_lgbm (๋ณต์žก ๋ชจ๋ธ) 0.8113 0.8228 โœ…

interpret_model(tuned_lgbm) ์‹คํ–‰ ๊ฒฐ๊ณผ (Summary Plot)