[AIS7] ML (12)

BBakHyeยท2022๋…„ 11์›” 23์ผ
0

๐Ÿฆ AI SCHOOL 7๊ธฐ

๋ชฉ๋ก ๋ณด๊ธฐ
33/52
post-thumbnail

๐Ÿค” ์ œ์กฐ์—…์—์„œ ๋ฐ์ดํ„ฐ ๊ณผํ•™๊ณผ ๋จธ์‹ ๋Ÿฌ๋‹์ด ์–ด๋–ค ๋„์›€์„ ์ค„ ์ˆ˜ ์žˆ์„๊นŒ?

1) ํ’ˆ์งˆ ๊ด€๋ฆฌ
์ œํ’ˆ์˜ ์ƒ์‚ฐ ๊ณผ์ •์— ์˜ํ–ฅ์„ ๋ฏธ์น  ์ˆ˜ ์žˆ๋Š” ๋‹ค์–‘ํ•œ ๋ณ€์ˆ˜๋“ค์„ ๋ชจ๋ธ ์•ˆ์—์„œ ๊ณ„์‚ฐํ•˜๊ณ  ํ†ต์ œํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด์„œ ์•ˆ์ •์ ์ธ ์ƒ์‚ฐ๊ณผ ๊ณต๊ธ‰์ด ๊ฐ€๋Šฅํ•ด์ง„๋‹ค.
2) ์˜ˆ๋ฐฉ ์ •๋น„
์žฅ๋น„๊ฐ€ ๊ณ ์žฅ๋‚˜๊ธฐ ์ „์— ์ง•ํ›„๋ฅผ ํ†ตํ•ด ๊ณ ์žฅ ์‹œ๊ธฐ๋ฅผ ์˜ˆ์ธกํ•˜๊ณ  ์˜ˆ๋ฐฉ ์ •๋น„๋ฅผ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋•๋Š”๋‹ค. ์žฅ๋น„ ๊ณ ์žฅ์œผ๋กœ ์ธํ•œ ์ƒ์‚ฐ๋Ÿ‰ ์ €ํ•˜๋ฅผ ๋ฐฉ์ง€ํ•˜๊ณ , ์žฅ๋น„ ์ •๋น„์— ๋“œ๋Š” ์‹œ๊ฐ„์„ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.
3) ์ˆ˜์š” ์˜ˆ์ธก
์ •ํ™•ํ•˜๊ฒŒ ์ˆ˜์š”๋ฅผ ์˜ˆ์ธกํ•จ์œผ๋กœ์จ ์ƒ์‚ฐ ๊ณ„ํš์„ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋œ๋‹ค. ๊ตฌ์ฒด์ ์ธ ์ƒ์‚ฐ ๊ณ„ํš์€ ์ƒ์‚ฐ์˜ ํšจ์œจ์„ฑ ๋ฟ ์•„๋‹ˆ๋ผ ์ˆ˜์ต์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ๋‹ค.
4) ํ”„๋กœ์„ธ์‹ฑ ์กฐ๊ฑด
์ƒ์‚ฐ ๊ณผ์ •์—์„œ ์—ฌ๋Ÿฌ ๋ณ€์ˆ˜๋“ค์˜ ์—ญํ•™๊ด€๊ณ„ ํŒŒ์•…์„ ์ž๋™ํ™”ํ•˜์—ฌ ๊ณต์ •์„ ์ตœ์ ํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค.
5) ์—ฐ๊ตฌ ๊ฐœ๋ฐœ
์ƒ์‚ฐ ๊ณผ์ •์—์„œ ์–ป์–ด๋‚ธ ๋น…๋ฐ์ดํ„ฐ์™€ ์ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ๋จธ์‹ ๋Ÿฌ๋‹์€ ์ƒˆ๋กœ์šด ์ œํ’ˆ์„ ๊ฐœ๋ฐœํ•˜๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ๊ธฐ์—…๊ณผ ํ˜‘์—…ํ•  ๋•Œ ์ข‹์€ ๊ธฐ๋ฐ˜์ด ๋œ๋‹ค.
6) ์Šค๋งˆํŠธ ์ œํ’ˆ
์ œํ’ˆ์˜ ์ƒ์‚ฐ ๊ณผ์ •์„ ๋ชจ๋ธํ™”ํ•จ์œผ๋กœ์จ ๊ฐœ๋ณ„ ๊ณ ๊ฐ์— ๋งž์ถคํ˜• ์ œํ’ˆ์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.


Bagging: ์˜ค๋ฒ„ํ”ผํŒ…์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ
Boosting: ๊ฐœ๋ณ„ ํŠธ๋ฆฌ์˜ ์„ฑ๋Šฅ์ด ์ค‘์š”ํ•  ๋•Œ ์‚ฌ์šฉ

Boosting model์€ ์‹œ๊ฐํ™”๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค. ์ˆœ์ฐจ์ ์œผ๋กœ ํŠธ๋ฆฌ๋ฅผ ๊ทธ๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์— "๋ช‡ ๋ฒˆ์งธ ํŠธ๋ฆฌ ๊ทธ๋ ค์ค˜"๋ผ๊ณ  ํ•˜๋ฉด ํ•ด๋‹น ํŠธ๋ฆฌ๋ฅผ ์‹œ๊ฐํ™”ํ•  ์ˆ˜ ์žˆ์Œ.

โ—๏ธ Gradient ๋ชจ๋ธ์€ learning rate์„ ์–ด๋–ป๊ฒŒ ์„ค์ •ํ•˜๋Š๋ƒ์— ๋”ฐ๋ผ ์„ฑ๋Šฅ์— ์ฐจ์ด๊ฐ€ ์žˆ์Œ

๐Ÿค” XGBoost

XGBoost๋Š” GBT์—์„œ ๋ณ‘๋ ฌ ํ•™์Šต์„ ์ง€์›ํ•˜์—ฌ ํ•™์Šต ์†๋„๊ฐ€ ๋นจ๋ผ์ง„ ๋ชจ๋ธ

  • ๊ธฐ๋ณธ GBT์— ๋น„ํ•ด ๋” ํšจ์œจ์ ์ด๊ณ , ๋‹ค์–‘ํ•œ ์ข…๋ฅ˜์˜ ๋ฐ์ดํ„ฐ์— ๋Œ€์‘ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ด์‹์„ฑ์ด ๋†’๋‹ค.

๐Ÿ’ก ๋ถ€์ŠคํŒ… ํŒŒ๋ผ๋ฏธํ„ฐ

  • learning_rate[ ๊ธฐ๋ณธ๊ฐ’ : 0.1] : Learning rate๊ฐ€ ๋†’์„์ˆ˜๋ก ๊ณผ์ ํ•ฉ๋˜๊ธฐ ์‰ฌ์›€
  • n_estimators [๊ธฐ๋ณธ๊ฐ’ : 100] : ์ƒ์„ฑํ•  weaker learner ์ˆ˜, learning_rate๊ฐ€ ๋‚ฎ์„ ๋•, n_estimators๋ฅผ ๋†’์—ฌ์•ผ ๊ณผ์ ํ•ฉ์ด ๋ฐฉ์ง€๋จ, value๊ฐ€ ๋„ˆ๋ฌด ๋‚ฎ์œผ๋ฉด underfitting์ด ๋˜๊ณ  ์ด๋Š” ๋‚ฎ์€ ์ •ํ™•์„ฑ์˜ prediction์ด ๋˜๋Š”๋ฐ˜๋ฉด value๊ฐ€ ๋„ˆ๋ฌด ๋†’์œผ๋ฉด overfitting์ด ๋˜๊ณ  training data ์—๋Š” ์ •ํ™•ํ•œ prediction์„ ๋ณด์ด์ง€๋งŒ test data์—์„œ๋Š” ์ •ํ™•์„ฑ์ด ๋‚ฎ์€ prediction์„ ๊ฐ€์ง
  • max_depth [ ๊ธฐ๋ณธ๊ฐ’ : 3 ] : ํŠธ๋ฆฌ์˜ maximum depth, ์ ์ ˆํ•œ ๊ฐ’์ด ์ œ์‹œ๋˜์–ด์•ผ ํ•˜๊ณ  ๋ณดํ†ต 3-10 ์‚ฌ์ด ๊ฐ’์ด ์ ์šฉ๋จ, max_depth๊ฐ€ ๋†’์„์ˆ˜๋ก ๋ชจ๋ธ์˜ ๋ณต์žก๋„๊ฐ€ ์ปค์ ธ ๊ณผ์ ํ•ฉ๋˜๊ธฐ ์‰ฌ์›€
  • min_child_weight [ ๊ธฐ๋ณธ๊ฐ’ : 1 ] : ๊ด€์ธก์น˜์— ๋Œ€ํ•œ ๊ฐ€์ค‘์น˜ ํ•ฉ์˜ ์ตœ์†Œ๋ฅผ ๋งํ•จ, ๊ฐ’์ด ๋†’์„์ˆ˜๋ก ๊ณผ์ ํ•ฉ์ด ๋ฐฉ์ง€๋จ
  • gamma [ ๊ธฐ๋ณธ๊ฐ’ : 0 ] : ๋ฆฌํ”„๋…ธ๋“œ์˜ ์ถ”๊ฐ€๋ถ„ํ• ์„ ๊ฒฐ์ •ํ•  ์ตœ์†Œ์†์‹ค ๊ฐ์†Œ๊ฐ’, ํ•ด๋‹น๊ฐ’๋ณด๋‹ค ์†์‹ค์ด ํฌ๊ฒŒ ๊ฐ์†Œํ•  ๋•Œ ๋ถ„๋ฆฌ, ๊ฐ’์ด ๋†’์„์ˆ˜๋ก ๊ณผ์ ํ•ฉ์ด ๋ฐฉ์ง€๋จ
  • subsample [ ๊ธฐ๋ณธ๊ฐ’ : 1 ] : weak learner๊ฐ€ ํ•™์Šต์— ์‚ฌ์šฉํ•˜๋Š” ๋ฐ์ดํ„ฐ ์ƒ˜ํ”Œ๋ง ๋น„์œจ, ๋ณดํ†ต 0.5 ~ 1 ์‚ฌ์šฉ๋จ, ๊ฐ’์ด ๋‚ฎ์„์ˆ˜๋ก ๊ณผ์ ํ•ฉ์ด ๋ฐฉ์ง€๋จ
  • colsample_bytree [ ๊ธฐ๋ณธ๊ฐ’ : 1 ] : ๊ฐ tree ๋ณ„ ์‚ฌ์šฉ๋œ feature์˜ ํผ์„ผํ…Œ์ด์ง€, ๋ณดํ†ต 0.5 ~ 1 ์‚ฌ์šฉ๋จ, ๊ฐ’์ด ๋‚ฎ์„์ˆ˜๋ก ๊ณผ์ ํ•ฉ์ด ๋ฐฉ์ง€๋จ

๐Ÿ’ก ์ผ๋ฐ˜ ํŒŒ๋ผ๋ฏธํ„ฐ

  • booster [๊ธฐ๋ณธ๊ฐ’ = gbtree] : ์–ด๋–ค ๋ถ€์Šคํ„ฐ ๊ตฌ์กฐ๋ฅผ ์“ธ์ง€ ๊ฒฐ์ •, ์˜์‚ฌ๊ฒฐ์ •๊ธฐ๋ฐ˜๋ชจํ˜•(gbtree), ์„ ํ˜•๋ชจํ˜•(gblinear), dart
  • n_jobs : XGBoost๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๋ณ‘๋ ฌ ์Šค๋ ˆ๋“œ ์ˆ˜
  • verbosity [๊ธฐ๋ณธ๊ฐ’ = 1] : ๋กœ๊ทธ์ถœ๋ ฅ์—ฌ๋ถ€ 0 (๋ฌด์Œ), 1 (๊ฒฝ๊ณ ), 2 (์ •๋ณด), 3 (๋””๋ฒ„๊ทธ)
  • early_stopping_rounds : ์†์‹คํ•จ์ˆ˜ ๊ฐ’์ด n๋ฒˆ์ •๋„ ๊ฐœ์„ ์ด ์—†์œผ๋ฉด ํ•™์Šต์„ ์ค‘๋‹จ

๐Ÿ’ก ํ•™์Šต๊ณผ์ • ํŒŒ๋ผ๋ฏธํ„ฐ

  • eval_metric:
    • rmse: root mean square error
    • mae: mean absolute error
    • logloss: negative log-likelihood
    • error: Binary classification error rate (0.5 threshold)
    • merror: Multiclass classification error rate
    • mlogloss: Multiclass logloss
    • auc: Area under the curve
    • map (mean average precision)

๐Ÿ’ก ๋ฏผ๊ฐํ•˜๊ฒŒ ์กฐ์ •ํ•ด์•ผํ•˜๋Š” ๊ฒƒ

  • booster ๊ตฌ์กฐ
  • gbtree : ์˜์‚ฌ๊ฒฐ์ •๊ธฐ๋ฐ˜๋ชจํ˜•, gbliber : ์„ ํ˜•๋ชจํ˜•, dart
  • eval_metric(ํ‰๊ฐ€ํ•จ์ˆ˜) / objective(๋ชฉ์ ํ•จ์ˆ˜)
  • eta
  • L1 form (L1 ๋ ˆ๊ทค๋Ÿฌ๋ผ์ด์ œ์ด์…˜ ํผ์ด L2๋ณด๋‹ค ์•„์›ƒ๋ผ์ด์–ด์— ๋ฏผ๊ฐ)
  • L2 form

๐Ÿ’ก ๊ณผ์ ํ•ฉ ๋ฐฉ์ง€๋ฅผ ์œ„ํ•ด ์กฐ์ •ํ•ด์•ผํ•˜๋Š” ๊ฒƒ

  • n_estimators ๋†’์ด๊ธฐ
  • learning rate ๋‚ฎ์ถ”๊ธฐ
  • max_depth ๋‚ฎ์ถ”๊ธฐ
  • min_child_weight ๋†’์ด๊ธฐ
  • gamma ๋†’์ด๊ธฐ
  • subsample, colsample_bytree ๋‚ฎ์ถ”๊ธฐ

๐Ÿค” LightGBM (Light Gradient Boosting Machine)

: Microsoft์—์„œ ๊ฐœ๋ฐœํ•œ ๋จธ์‹ ๋Ÿฌ๋‹์„ ์œ„ํ•œ ๋ฌด๋ฃŒ ์˜คํ”ˆ์†Œ์Šค ๋ถ„์‚ฐ ๊ทธ๋ž˜๋””์–ธํŠธ ๋ถ€์ŠคํŒ… ํ”„๋ ˆ์ž„์›Œํฌ

  • XGBoost์— ๋น„ํ•ด ์„ฑ๋Šฅ์€ ๋น„์Šทํ•˜์ง€๋งŒ ํ•™์Šต ์‹œ๊ฐ„์„ ๋‹จ์ถ•์‹œํ‚จ ๋ชจ๋ธ์ด๋‹ค.
  • XGBoost์— ๋น„ํ•ด ๋” ์ ์€ ์‹œ๊ฐ„, ๋” ์ ์€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

EFB(Exclusive Feature Bundling) & GOSS(Gradient based One Side Sampling)

GOSS: ํ–‰์„ ์ค„์ธ๋‹ค.

  • ํŠน์„ฑ๊ฐ’์„ ๊ตฌ๊ฐ„์œผ๋กœ ๋‚˜๋ˆ„์–ด ๋…ธ๋“œ ๋ถ„ํ• ์„ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋น ๋ฆ„
  • ๊ธฐ๋ณธ์ ์œผ๋กœ 256๊ฐœ์˜ ๊ตฌ๊ฐ„์„ ์‚ฌ์šฉํ•˜๋ฉฐ, max_bin ์œผ๋กœ ์กฐ์ •์ด ๊ฐ€๋Šฅ
  • ๊ตฌ๊ฐ„ ์ค‘ ํ•˜๋‚˜๋ฅผ ๋ˆ„๋ฝ๋œ ๊ฐ’์„ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฒฐ์ธก์น˜๋ฅผ ์ „์ฒ˜๋ฆฌํ•  ํ•„์š”๊ฐ€ ์—†์Œ

EFB: ์—ด์„ ์ค„์ธ๋‹ค.

์ผ๋ฐ˜์ ์ธ GBM ๊ณ„์—ด์˜ ํŠธ๋ฆฌ ๋ถ„ํ•  ๋ฐฉ์‹์€ ๊ท ํ˜• ํŠธ๋ฆฌ ๋ถ„ํ• (Level Wise) ๋ฐฉ์‹์„ ์ด์šฉ

  • ์žฅ์ : ์ตœ๋Œ€ํ•œ ๊ท ํ˜• ์žกํžŒ ํŠธ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•˜๋ฉด์„œ ํŠธ๋ฆฌ์˜ ๊นŠ์ด๋ฅผ ์ตœ์†Œํ™” ํ•  ์ˆ˜ ์žˆ์Œ
  • ๋‹จ์ : ๊ณผ์ ํ•ฉ ๋ฌธ์ œ์— ๋” ๊ฐ•ํ•œ ๊ตฌ์กฐ๋ฅผ ๊ฐ–๊ฒŒ ๋˜์ง€๋งŒ ๊ท ํ˜•์„ ๋งž์ถ”๊ธฐ ์œ„ํ•œ ์‹œ๊ฐ„์ด ํ•„์š”ํ•˜๋‹ค๋Š” ๋‹จ์ 

๋ฐ˜๋ฉด์—,

  • LightGBM์˜ ๊ฒฝ์šฐ ์ผ๋ฐ˜์ ์ธ ๊ท ํ˜• ํŠธ๋ฆฌ ๋ถ„ํ•  ๋ฐฉ์‹๊ณผ ๋‹ค๋ฅด๊ฒŒ ๋ฆฌํ”„ ์ค‘์‹ฌ ํŠธ๋ฆฌ ๋ถ„ํ• (Leaf Wise) ๋ฐฉ์‹์„ ์ด์šฉ
  • ๊ท ํ˜•์„ ๋งž์ถ”์ง€ ์•Š๊ณ  ์ตœ๋Œ€ ์†์‹ค ๊ฐ’(max delta loss)์„ ๊ฐ€์ง€๋Š” ๋ฆฌํ”„ ๋…ธ๋“œ๋ฅผ ์ง€์†์ ์œผ๋กœ ๋ถ„ํ• ํ•˜์—ฌ ํŠธ๋ฆฌ๊ฐ€ ๊นŠ์–ด์ง€๊ณ  ๋น„๋Œ€์นญ์ ์ธ ํŠธ๋ฆฌ ๊ตฌ์กฐ ์ƒ์„ฑํ•˜์—ฌ ์˜ˆ์ธก ์˜ค๋ฅ˜ ์†์‹ค์„ ์ตœ์†Œํ™”

๐Ÿ’ก Parameters

  • max_depth : ๋‚˜๋ฌด์˜ ๊นŠ์ด. ๋‹จ์ผ ๊ฒฐ์ •๋‚˜๋ฌด์—์„œ๋Š” ์ถฉ๋ถ„ํžˆ ๋ฐ์ดํ„ฐ๋ฅผ ๊ณ ๋ คํ•˜๊ธฐ ์œ„ํ•ด depth๋ฅผ ์ ๋‹นํ•œ ๊นŠ์ด๋กœ ๋งŒ๋“ค์ง€๋งŒ, ๋ณด์ •๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋ถ€์ŠคํŒ…์—์„œ๋Š” ๊นŠ์ด ํ•˜๋‚˜์งœ๋ฆฌ๋„ ๋งŒ๋“œ๋Š” ๋“ฑ, ๊นŠ์ด๊ฐ€ ์งง์€๊ฒƒ์ด ํฌ๋ฆฌํ‹ฐ์ปฌํ•˜์ง€ ์•Š์Œ
  • min_data_in_leaf : ์žŽ์ด ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ์ตœ์†Œ ๋ ˆ์ฝ”๋“œ ์ˆ˜, ๊ธฐ๋ณธ๊ฐ’์€ 20, ๊ณผ์ ํ•ฉ์„ ๋‹ค๋ฃจ๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ feature_fraction : ๋ถ€์ŠคํŒ… ๋Œ€์ƒ ๋ชจ๋ธ์ด ๋žœ๋คํฌ๋ ˆ์ŠคํŠธ์ผ๋•Œ, ๋žœ๋คํฌ๋ ˆ์ŠคํŠธ๋Š” feature์˜ ์ผ๋ถ€๋งŒ์„ ์„ ํƒํ•˜์—ฌ ํ›ˆ๋ จํ•˜๋Š”๋ฐ, ์ด๋ฅผ ํ†ต์ œํ•˜๊ธฐ ์œ„ํ•œ ํŒŒ๋ผ๋ฏธํ„ฐ, 0.8์ด๋ผ๋ฉด LightGBM์ด ๊ฐ ๋ฐ˜๋ณต์—์„œ 80%์˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๋ฌด์ž‘์œ„๋กœ ์„ ํƒํ•˜์—ฌ ํŠธ๋ฆฌ๋ฅผ ์ƒ์„ฑ
  • bagging_fraction : ๋ฐ์ดํ„ฐ์˜ ์ผ๋ถ€๋งŒ์„ ์‚ฌ์šฉํ•˜๋Š” bagging์˜ ๋น„์œจ ์˜ˆ๋ฅผ๋“ค์–ด ์˜ค๋ฒ„ํ”ผํŒ…์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๋ฐ์ดํ„ฐ์˜ ์ผ๋ถ€๋งŒ์„ ๊ฐ€์ ธ์™€์„œ ํ›ˆ๋ จ์‹œํ‚ค๋Š”๋ฐ, ์ด๋Š” ์˜ค๋ฒ„ํ”ผํŒ…์„ ๋ฐฉ์ง€ํ•˜๋ฉฐ ์•ฝํ•œ์˜ˆ์ธก๊ธฐ๋ฅผ ๋ชจ๋‘ ํ•ฉ์น ๊ฒฝ์šฐ๋Š” ์˜คํžˆ๋ ค ์˜ˆ์ธก์„ฑ๋Šฅ์ด ์ข‹์•„์งˆ ์ˆ˜ ์žˆ์Œ ํ›ˆ๋ จ ์†๋„๋ฅผ ๋†’์ด๊ณ  ๊ณผ์ ํ•ฉ์„ ๋ฐฉ์ง€ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ
  • early_stopping_round : ๋”์ด์ƒ validation๋ฐ์ดํ„ฐ์—์„œ ์ •ํ™•๋„๊ฐ€ ์ข‹์•„์ง€์ง€ ์•Š์œผ๋ฉด ๋ฉˆ์ถฐ๋ฒ„๋ฆผ ํ›ˆ๋ จ๋ฐ์ดํ„ฐ๋Š” ๊ฑฐ์˜ ์—๋Ÿฌ์œจ์ด 0์— ๊ฐ€๊น๊ฒŒ ์ข‹์•„์ง€๊ธฐ ๋งˆ๋ จ์ธ๋ฐ, validation๋ฐ์ดํ„ฐ๋Š” ํ›ˆ๋ จ์— ์‚ฌ์šฉ๋˜์ง€ ์•Š๊ธฐ๋•Œ๋ฌธ์— ์ผ์ •์ด์ƒ ์ข‹์•„์ง€์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ
  • lambda : ์ •๊ทœํ™”์— ์‚ฌ์šฉ๋˜๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ, ์ผ๋ฐ˜์ ์ธ ๊ฐ’์˜ ๋ฒ”์œ„๋Š” 0 ~ 1
  • min_gain_to_split : ๋ถ„๊ธฐ๊ฐ€ ๋˜๋Š” ์ตœ์†Œ ์ •๋ณด์ด๋“, ํŠธ๋ฆฌ์—์„œ ์œ ์šฉํ•œ ๋ถ„ํ•  ์ˆ˜๋ฅผ ์ œ์–ดํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ
  • max_cat_group : ๋ฒ”์ฃผํ˜• ๋ณ€์ˆ˜๊ฐ€ ๋งŽ์œผ๋ฉด, ํ•˜๋‚˜๋กœ ํ‰์ณ์„œ ์ฒ˜๋ฆฌํ•˜๊ฒŒ๋” ๋งŒ๋“œ๋Š” ์ตœ์†Œ๋‹จ์œ„
  • objective : lightgbm์€ regression, binary, multiclass ๋ชจ๋‘ ๊ฐ€๋Šฅ
  • boosting: gbdt(gradient boosting decision tree), rf(random forest), dart(dropouts meet multiple additive regression trees), goss(Gradient-based One-Side Sampling)
  • num_leaves: ๊ฒฐ์ •๋‚˜๋ฌด์— ์žˆ์„ ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ์žŽ์‚ฌ๊ท€ ์ˆ˜. ๊ธฐ๋ณธ๊ฐ’์€ 0.31
  • learning_rate : ๊ฐ ์˜ˆ์ธก๊ธฐ๋งˆ๋‹ค์˜ ํ•™์Šต๋ฅ  learning_rate์€ ์•„๋ž˜์˜ num_boost_round์™€๋„ ๋งž์ถฐ์ฃผ์–ด์•ผ ํ•จ
  • num_boost_round : boosting์„ ์–ผ๋งˆ๋‚˜ ๋Œ๋ฆด์ง€ ์ง€์ •ํ•œ๋‹ค. ๋ณดํ†ต 100์ •๋„๋ฉด ๋„ˆ๋ฌด ๋น ๋ฅด๊ฒŒ ๋๋‚˜๋ฉฐ, ์‹œํ—˜์šฉ์ด ์•„๋‹ˆ๋ฉด 1000์ •๋„ ์„ค์ •ํ•˜๋ฉฐ, early_stopping_round๊ฐ€ ์ง€์ •๋˜์–ด์žˆ์œผ๋ฉด ๋”์ด์ƒ ์ง„์ „์ด ์—†์„ ๊ฒฝ์šฐ ์•Œ์•„์„œ ๋ฉˆ์ถค
  • device : gpu, cpu
  • metric: loss๋ฅผ ์ธก์ •ํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ์ค€. mae (mean absolute error), mse (mean squared error), ๋“ฑ
  • max_bin : ์ตœ๋Œ€ bin
  • categorical_feature : ๋ฒ”์ฃผํ˜• ๋ณ€์ˆ˜ ์ง€์ •
  • ignore_column : ์ปฌ๋Ÿผ์„ ๋ฌด์‹œํ•œ๋‹ค. ๋ฌด์‹œํ•˜์ง€ ์•Š์„๊ฒฝ์šฐ ๋ชจ๋‘ training์— ๋„ฃ๋Š”๋ฐ, ๋ญ”๊ฐ€ ๋‚จ๊ฒจ๋†“์•„์•ผํ•  ์ปฌ๋Ÿผ์ด ์žˆ์œผ๋ฉด ์„ค์ •
  • save_binary: True ๋ฉ”๋ชจ๋ฆฌ ์ ˆ์•ฝ

๐Ÿค” CatBoost

๊ธฐ์กด ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ ๋น„๊ตํ•˜์—ฌ ์ˆœ์—ด ๊ธฐ๋ฐ˜ ๋Œ€์•ˆ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฒ”์ฃผํ˜• ๊ธฐ๋Šฅ์„ ํ•ด๊ฒฐํ•˜๋ ค๊ณ  ์‹œ๋„ํ•˜๋Š” ๊ทธ๋ ˆ๋””์–ธํŠธ ๋ถ€์ŠคํŒ… ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ œ๊ณตํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ œ๊ณต

  • ๋ฒ”์ฃผํ˜• ๋ฐ์ดํ„ฐ๋ฅผ ๋”ฐ๋กœ ์ธ์ฝ”๋”ฉํ•  ํ•„์š”๊ฐ€ ์—†์ง€๋งŒ ๋ชจ๋ธ ํ›ˆ๋ จ์‹œ ์–ด๋–ค ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฒ”์ฃผํ˜•์ธ์ง€ ์•Œ๋ ค์ฃผ์–ด์•ผ ํ•จ.
  • XGBoost ์ฒ˜๋Ÿผ ๊นŠ์ด๋ณ„ ํŠธ๋ฆฌ ์„ฑ์žฅ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜์ง€๋งŒ ๋Œ€์นญ์ ์ธ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง
    ์ž์ฒด์ ์œผ๋กœ grid_search() ์™€ randomized_search()๋ฅผ ์ œ๊ณต
  • ๊ธฐ์กด GBT์˜ ๋Š๋ฆฐ ํ•™์Šต ์†๋„์™€ ๊ณผ๋Œ€์ ํ•ฉ ๋ฌธ์ œ๋ฅผ ๊ฐœ์„ ํ•œ ๋ชจ๋ธ์ž…๋‹ˆ๋‹ค.

๐Ÿ’ก ์žฅ์ 
1) ๊ณผ์ ํ•ฉ์„ ๊ทน๋ณตํ•˜๊ธฐ ์œ„ํ•ด ๋ถ€์ŠคํŒ… ์ฃผ๋ฌธ
2) ๋ฒ”์ฃผํ˜• ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ์ฒ˜๋ฆฌ
3) ๋น ๋ฅธ GPU ํ›ˆ๋ จ
4) ๋ชจ๋ธ ๋ฐ ๊ธฐ๋Šฅ ๋ถ„์„์„ ์œ„ํ•œ ์‹œ๊ฐํ™” ๋ฐ ๋„๊ตฌ
5) ๊ณผ์ ํ•ฉ์„ ๊ทน๋ณตํ•˜๊ธฐ ์œ„ํ•ด ์ˆœ์„œ๊ฐ€ ์žˆ๋Š” ๋ถ€์ŠคํŒ…์„ ์‚ฌ์šฉ
6) ์ด๋ฆ„ ๊ทธ๋Œ€๋กœ ๋ฒ”์ฃผํ˜• ํŠน์„ฑ์„ ์ž˜ ์ฒ˜๋ฆฌํ•จ
7) ๋” ๋น ๋ฅธ ์‹คํ–‰์„ ์œ„ํ•ด Oblivious Trees ๋˜๋Š” Symmetric Trees ์‚ฌ์šฉ

๐Ÿ’ก ๋‹จ์ 
1) CatBoost ๋Š” ํฌ์†Œ ํ–‰๋ ฌ์„ ์ง€์› ํ•˜์ง€ ์•Š์Œ
2) ๋ฐ์ดํ„ฐ ์„ธํŠธ์— ์ˆ˜์น˜ํ˜• ํƒ€์ž…์ด ๋งŽ์„ ๋•Œ CatBoost๋Š” LightGBM๋ณด๋‹ค ํ›ˆ๋ จํ•˜๋Š” ๋ฐ ์ƒ๋Œ€์ ์œผ๋กœ ๋งŽ์€ ์‹œ๊ฐ„์ด ์†Œ์š”

๐Ÿ’ก ํŠน์ง•

  • ์ˆ˜ํ‰ํŠธ๋ฆฌ (Level-wise Tree)
  • ์ •๋ ฌ๋œ ๋ถ€์ŠคํŒ… (Orderd Boosting)
  • ์ž„์˜ ์ˆœ์—ด (Random Permutation)
  • ์ •๋ ฌ๋œ ๋Œ€์ƒ ์ธ์ฝ”๋”ฉ (Ordered Target Encoding)
  • ๋ฒ”์ฃผํ˜• Feauture ์กฐํ•ฉ (Categorical Feauture Combinations)
  • ์›ํ•ซ ์ธ์ฝ”๋”ฉ (One-hot Encoding)
  • ์ตœ์ ํ™”๋œ ํŒŒ๋ผ๋ฏธํ„ฐ ํŠœ๋‹ (Optimized Parameter tuning)
  • ์ค‘๋ณต๋˜๋Š” ๋ฒ”์ฃผํ˜• ๋ณ€์ˆ˜ ์ฒ˜๋ฆฌ
    : Class๋ฅผ ๋ช…ํ™•ํ•˜๊ฒŒ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๋Š” ์ค‘๋ณต๋˜๋Š” ๋ณ€์ˆ˜๊ฐ€ 2๊ฐœ ์ด์ƒ ์กด์žฌํ•œ๋‹ค๊ณ  ํ•  ๋•Œ, ์ด๋ฅผ ํ•˜๋‚˜์˜ ๋ณ€์ˆ˜๋กœ ํ†ตํ•ฉํ•ด ์ฒ˜๋ฆฌ - ํ”ผ์ฒ˜๊ฐ€ ๋Š˜์–ด๋‚˜๋Š” ๋ฌธ์ œ๋ฅผ ์ค„์—ฌ computing cost๋„ ๋‚ฎ์ถœ ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ’ก Main parameters

  • cat_features: ๋ฒ”์ฃผํ˜• ๋ณ€์ˆ˜ ์ธ๋ฑ์Šค ๊ฐ’
  • loss_function: ์†์‹ค ํ•จ์ˆ˜๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
  • eval_metric: ํ‰๊ฐ€ ๋ฉ”ํŠธ๋ฆญ์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
  • iterations: ๋จธ์‹ ๋Ÿฌ๋‹ ์ค‘ ๋งŒ๋“ค์–ด์งˆ ์ˆ˜ ์žˆ๋Š” ํŠธ๋ฆฌ์˜ ์ตœ๋Œ€ ๊ฐฏ์ˆ˜๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
    (๋‹ค๋ฅธ ๋ชจ๋ธ์˜ n_estimator์™€ ๊ฐ™๋‹ค)
  • learning_rate: ๋ถ€์ŠคํŒ… ๊ณผ์ • ์ค‘ ํ•™์Šต๋ฅ ์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
  • subsample: ๋ฐฐ๊น…์„ ์œ„ํ•œ ์„œ๋ธŒ์ƒ˜ํ”Œ ๋น„์œจ์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
  • max_leaves: ์ตœ์ข… ํŠธ๋ฆฌ์˜ ์ตœ๋Œ€ ๋ฆฌํ”„ ๊ฐœ์ˆ˜๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

0803 ์‹ค์Šต

(ํ•ด๋‹น ์‹ค์Šต์€ ์„ค์น˜ ์ด์Šˆ๋กœ ์ธํ•ด colab์œผ๋กœ ์ง„ํ–‰ํ•จ)

๐Ÿ’ก XGBoost ์‹œ๊ฐํ™”

xgb.plot_tree(model_xgb, num_trees=1)
fig = plt.gcf()
fig.set_size_inches(30, 20)

๐Ÿ’ก

  • ๋ฐ์ดํ„ฐ๊ฐ€ category ํƒ€์ž…์œผ๋กœ ๋˜์–ด์žˆ์œผ๋ฉด LightGBM, CatBoost์—์„œ ์ธ์ฝ”๋”ฉ์ด ํ•„์š”์—†๋‹ค.
  • ๋ฐ์ดํ„ฐ๋ฅผ ์ „์ฒ˜๋ฆฌํ•˜์ง€ ์•Š๊ณ  category ํ˜•ํƒœ๋กœ ๋„ฃ์–ด์ฃผ๋ฉด ์•Œ์•„์„œ ํ•™์Šตํ•œ๋‹ค.

์ด์ง„ ๋ถ„๋ฅ˜์˜ ํ‰๊ฐ€

์ •ํ™•๋„(Accuracy)๊ฐ€ ๋†’๋‹ค๊ณ  ํ•ด์„œ ์‹ ์šฉํ•˜๊ธฐ ์–ด๋ ต๋‹ค. ํฌ์†Œํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ •ํ™•ํ•˜๊ฒŒ ์˜ˆ์ธกํ•˜๋Š” ๊ฒƒ์ด, ์ „์ฒด ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์ •ํ™•๋„๋ณด๋‹ค ์ค‘์š”ํ•  ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค.

ํ˜„์‹ค์—์„œ ๋งˆ์ฃผ์น˜๋Š” ๋งŽ์€ ๋ฐ์ดํ„ฐ๋“ค์ด ๋ถˆ๊ท ํ˜• ๋ฐ์ดํ„ฐ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ •ํ™•๋„ ์™ธ์— ๋‹ค๋ฅธ ์ธก์ •์ง€ํ‘œ๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

๋ถˆ๊ท ํ˜•๋ฐ์ดํ„ฐ์—์„œ ํ˜ผ๋™ํ–‰๋ ฌ์ด ํ•„์š”ํ•œ ์ด์œ ๋Š”, ๋งŒ์•ฝ์— ๋‚ด๊ฐ€ ๋งŒ๋“  ๋ชจ๋ธ์ด ํŠน์ • ์งˆ๋ณ‘์„ ํƒ์ง€ํ•˜๋Š” ๋ชจ๋ธ์ด๋ผ๊ณ  ํ• ๋•Œ ์‹ค์ œ๋กœ ๋งŒ๋“ค์–ด์ง„ ๋ชจ๋ธ์ด ์ „๋ถ€ ๋ณ‘์— ๊ฑธ๋ ธ๋‹ค๊ณ  ํŒ๋‹จํ•˜๋Š” ๋ฉ์ฒญํ•œ ๋ชจ๋ธ์ด ๋งŒ๋“ค์–ด์กŒ๋‹คํ•ด๋„, ์‹ค์ œ ์ƒ˜ํ”Œ ๋ฐ์ดํ„ฐ๊ฐ€ 100๋งŒ๊ฐœ๊ฐ€ ์งˆ๋ณ‘์ด ๊ฑธ๋ฆฐ ์‚ฌ๋žŒ์˜ ์ƒ˜ํ”Œ์ด๊ณ  10๊ฐœ๋งŒ ์งˆ๋ณ‘์ด ๊ฑธ๋ฆฌ์ง€ ์•Š์€ ์‚ฌ๋žŒ์˜ ์ƒ˜ํ”Œ์ด๋ผ๋ฉด 99.99ํ”„๋กœ๋กœ ๋‚ด๊ฐ€ ๋งŒ๋“  ๋ชจ๋ธ์ด ์ •ํ™•ํ•˜๊ฒŒ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ ์ฒ˜๋Ÿผ ๋ณด์ผ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด๋Ÿฐ Accuracy์˜ ๋งน์ ์„ ๋ณด์™„ํ•˜๊ธฐ์œ„ํ•ด Precision๊ณผ Recall ๊ฐ™์€ ์ง€ํ‘œ๊ฐ€ ํ•„์š”ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค!

๐Ÿค” Confusion Matrix (ํ˜ผ๋™ ํ–‰๋ ฌ) - Scikit-learn ๊ธฐ์ค€

๐Ÿ’ก "1์ข… ์˜ค๋ฅ˜ == ๋‚จ์ž ์ž„์‹ " ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ์กฐ๊ธˆ ๋” ์ž˜ ์™ธ์›Œ์งˆ์ง€๋„..?

TN(True Negative, Negative Negative)
์‹ค์ œ๋Š” ์ž„์‹ ์ด ์•„๋‹ˆ๊ณ (0), ์ž„์‹ ์ด ์•„๋‹Œ ๊ฒƒ(0)์œผ๋กœ ์ž˜ ์˜ˆ์ธกํ•จ.

FP(False Positive, Negative Positive) - 1์ข… ์˜ค๋ฅ˜
์‹ค์ œ๋Š” ์ž„์‹ ์ด ์•„๋‹Œ๋ฐ(0), ์ž„์‹ (1)๋กœ ์˜ˆ์ธก
์ŠคํŒธ๋ฉ”์ผ์ด ์•„๋‹Œ๋ฐ ์ŠคํŒธ๋ฉ”์ผ๋กœ ์˜ˆ์ธก
๋ฌด๊ณ ํ•œ ํ”ผ๊ณ ์ธ์—๊ฒŒ ์œ ์ฃ„๋ฅผ ์„ ๊ณ 

FN(False Negative, Positive Negative) - 2์ข… ์˜ค๋ฅ˜
์‹ค์ œ๋Š” ์ž„์‹ ์ธ๋ฐ(1), ์ž„์‹ ์ด ์•„๋‹Œ ๊ฒƒ(0)์œผ๋กœ ์˜ˆ์ธก
์•”์ธ๋ฐ ์•”์ด ์•„๋‹Œ ๊ฒƒ์œผ๋กœ ์˜ˆ์ธก
ํ™”์žฌ๊ฐ€ ๋‚ฌ๋Š”๋ฐ ํ™”์žฌ๊ฐ€ ์•„๋‹ˆ๋ผ๊ณ  ์˜ˆ์ธก

TP(True Positive, Positive Positive)
์‹ค์ œ๋Š” ์ž„์‹ ์ธ๋ฐ(1), ์ž„์‹ (1)์œผ๋กœ ์ž˜ ์˜ˆ์ธกํ•จ.

๐Ÿ’ก

  • Precision: ์˜ˆ์ธก๊ฐ’์ด 1์ธ ๊ฒƒ์„ ๊ธฐ์ค€์œผ๋กœ ํ•˜๋Š” ๊ณ„์‚ฐ
  • Recall: ์‹ค์ œ๊ฐ’์ด 1์ธ ๊ฒƒ์„ ๊ธฐ์ค€์œผ๋กœ ํ•˜๋Š” ๊ณ„์‚ฐ
    (TIP) ์˜ˆํ”„๋ฆฌ: ์˜ˆ์ธก 1 == ํ”„๋ฆฌ์‹œ์ „, ์‹ค๋ฆฌ์ฝœ: ์‹ค์ œ 1 == ๋ฆฌ์ฝœ
  • F1 score: precision๊ณผ recall์˜ ์กฐํ™”ํ‰๊ท 

๐Ÿค” "์ •๋‹ต์ธ๋ฐ ๋ชป ์ฐพ์€ ๊ฒƒ์ด ๋งŽ๋‹ค."๋ผ๋Š” ๊ฒฐ๊ณผ๋Š” ์–ธ์ œ ๋‚˜์˜ฌ๊นŒ?
Recall์ด ๋‚ฎ์„ ๋•Œ

๐Ÿค” "์ •๋‹ต์ด ์•„๋‹Œ๋ฐ๋„ ์ •๋‹ต์ด๋ผ๊ณ  ํ•œ ๊ฒƒ์ด ๋งŽ๋‹ค."๋ผ๋Š” ๊ฒฐ๊ณผ๋Š” ์–ธ์ œ ๋‚˜์˜ฌ๊นŒ?
Precision ์ด ๋‚ฎ์„ ๋•Œ

๐Ÿค” Precision์ด ์ค‘์š”ํ•œ ๊ฒฝ์šฐ
ex) ์ŠคํŒธ ๋ฉ”์ผ ๊ฒ€์ถœ์˜ ๊ฒฝ์šฐ
์ŠคํŒธ ๋ฉ”์ผ์ด๋ฉด ์ฐธ, ์ŠคํŒธ ๋ฉ”์ผ์ด ์•„๋‹ˆ๋ฉด ๊ฑฐ์ง“์ด๋ผ๊ณ  ํ•  ๋•Œ.
์ŠคํŒธ ๋ฉ”์ผ์ด ์•„๋‹Œ๋ฐ ์ŠคํŒธ ๋ฉ”์ผ๋กœ ํŒ๋‹จํ•ด์„œ ์ฐจ๋‹จํ•ด๋ฒ„๋ฆฌ๋ฉด ์ค‘์š”ํ•œ ๋ฉ”์ผ์„ ๋ฐ›์ง€ ๋ชปํ•  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿค” Recall์ด ์ค‘์š”ํ•œ ๊ฒฝ์šฐ
ex) ์•” ๊ฒ€์ถœ์˜ ๊ฒฝ์šฐ
์•”์ด ๊ฒ€์ถœ๋˜๋ฉด ์ฐธ, ๊ฒ€์ถœ๋˜์ง€ ์•Š์œผ๋ฉด ๊ฑฐ์ง“์ด๋ผ๊ณ  ํ•  ๋•Œ.
์‹ค์ œ๋กœ ์•”์— ๊ฑธ๋ ธ๋Š”๋ฐ, ๊ฑธ๋ฆฌ์ง€ ์•Š์•˜๋‹ค๊ณ  ํŒ๋‹จํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๊ฐ€์žฅ ์œ„ํ—˜

ex) ์ง€์ง„
์ง€์ง„์ด ์•ˆ ๋‚ฌ์œผ๋‚˜ ๋Œ€ํ”ผ๋ช…๋ น์„ ํ•œ ๊ฒƒ์€ ์ƒ๋ช…๊ณผ๋Š” ์ง€์žฅ์ด ์—†์ง€๋งŒ ์ง€์ง„์ด ๋‚ฌ๋Š”๋ฐ ๋Œ€ํ”ผ๋ช…๋ น์ด ์—†๋‹ค๋ฉด ์ƒ๋ช…์— ์œ„ํ—˜


๐Ÿ™‹๐Ÿปโ€โ™€๏ธ ์งˆ๋ฌธ

Q: ์œ„ ํ…Œ์ด๋ธ”์—์„œ ๊ธฐ์กด ํŠธ๋ฆฌ๋ชจ๋ธ์— ์—†์—ˆ๋˜ ํŒŒ๋ผ๋ฏธํ„ฐ ์ค‘์— ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ• ๊ฒƒ์œผ๋กœ ๋ณด์—ฌ์ง€๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ ๋ฌด์—‡์ด ์žˆ์„๊นŒ์š”?
A: learning rate

Q: ์™œ learning_rate๊ฐ€ ๋‚ฎ์„๋•Œ n_estimator ๊ฐ’์„ ๋†’์—ฌ์•ผ ๊ณผ์ ํ•ฉ์ด ๋ฐฉ์ง€๋ ๊นŒ์š”?
A: ํ•™์Šตํ•˜์ง€ ๋ง์•„์•ผ ํ•  ๊ฒƒ๊นŒ์ง€ ๋„ˆ๋ฌด ์ž์„ธํžˆ ํ•™์Šตํ•˜๋‹ค ๋ณด๋ฉด ์ผ๋ฐ˜ํ™” ํ•˜๊ธฐ ์–ด๋ ต๊ธฐ ๋•Œ๋ฌธ์— ๊ณผ๋Œ€์ ํ•ฉ์ด ๋ฉ๋‹ˆ๋‹ค.

learning_rate๋ฅผ ์ค„์ธ๋‹ค๋ฉด ๊ฐ€์ค‘์น˜ ๊ฐฑ์‹ ์˜ ๋ณ€๋™ํญ์ด ๊ฐ์†Œํ•ด์„œ, ์—ฌ๋Ÿฌ ํ•™์Šต๊ธฐ๋“ค์˜ ๊ฒฐ์ • ๊ฒฝ๊ณ„(decision boundary) ์ฐจ์ด๊ฐ€ ์ค„์–ด๋“ค๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. n_estimators( == ํŠธ๋ฆฌ์˜ ์ˆ˜; ํ•™์ŠตํšŸ์ˆ˜) ๋ฅผ ๋Š˜๋ฆฐ๋‹ค๋ฉด ์ƒ์„ฑํ•˜๋Š” ์•ฝํ•œ ๋ชจ๋ธ(weak learner == ๊ฐ๊ฐ์˜ ํŠธ๋ฆฌ)๊ฐ€ ๋Š˜์–ด๋‚˜๊ฒŒ ๋˜๊ณ , ์•ฝํ•œ ๋ชจ๋ธ์ด ๋งŽ์•„์ง„๋งŒํผ ๊ฒฐ์ • ๊ฒฝ๊ณ„(decision boundary)๊ฐ€ ๋งŽ์•„์ง€๋ฉด์„œ ๋ชจ๋ธ์ด ๋ณต์žกํ•ด์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
์ฆ‰, ๋ถ€์ŠคํŒ…์•Œ๊ณ ๋ฆฌ์ฆ˜์—์„œ n_estimators์™€ learning_rate๋Š” trade-off ๊ด€๊ณ„์ž…๋‹ˆ๋‹ค.
n_estimators(๋˜๋Š” learning_rate)๋ฅผ ๋Š˜๋ฆฌ๊ณ , learning_rate(๋˜๋Š” n_estimators)์„ ์ค„์ธ๋‹ค๋ฉด ์„œ๋กœ ํšจ๊ณผ๊ฐ€ ์ƒ์‡„๋ฉ๋‹ค.

Q: ๋ถ€์ŠคํŒ… ๋ชจ๋ธ์€ ์™œ ์˜ค๋ฒ„ํ”ผํŒ…์— ๋ฏผ๊ฐํ• ๊นŒ์š”?
A: ์˜ค๋‹ต๋…ธํŠธ๋ฐฉ์‹์œผ๋กœ ์ด์ „ ํŠธ๋ฆฌ(์ด์ „ ํ•™์Šต)๊ฐ€ ๋‹ค์Œ ํŠธ๋ฆฌ(๋‹ค์Œ ํ•™์Šต)์— ์˜ํ–ฅ์„ ์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ํ•œ๋ฒˆ ์ž˜๋ชป๋ถ„๋ฅ˜๋˜๋ฉด ๋น ์ ธ๋‚˜์˜ค๊ธฐ ํž˜๋“ค๋‹ค.

Q: ๋ฐฐ๊น… ๋ชจ๋ธ์€ ์‹œ๊ฐํ™”๊ฐ€ ์–ด๋ ค์›Œ 3rd party ๋„๊ตฌ๋ฅผ ๋”ฐ๋กœ ์„ค์น˜ํ•ด์•ผ ์‹œ๊ฐํ™” ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ๋„ ๊ฐœ๋ณ„ ํŠธ๋ฆฌ๋ฅผ ์‹œ๊ฐํ™” ํ•˜๋Š” ๊ฒƒ์€ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๋ถ€์ŠคํŒ… ๋ชจ๋ธ์€ ์™œ ์‹œ๊ฐํ™”๊ฐ€ ๊ฐ€๋Šฅํ• ๊นŒ์š”?
A: ๋ฐฐ๊น…๋ชจ๋ธ์€ ๋ณ‘๋ ฌ์ ์œผ๋กœ ํŠธ๋ฆฌ๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๋ถ€์ŠคํŒ…์€ ์ˆœ์ฐจ์ ์œผ๋กœ ์ƒ์„ฑํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

Q: cv์— kfold ๋ฅผ ์ง€์ •ํ•ด์ฃผ๋ฉด ๊ทธ๋ƒฅ cv=์ˆซ์ž๋ฅผ ์ง€์ •ํ•  ๋•Œ์™€ ์–ด๋–ค ์ฐจ์ด๊ฐ€ ์žˆ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์„๊นŒ์š”?
A: random_state๊ฐ’์„ ๊ณ ์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

Q: cat_features๋ฅผ ์ง€์ •ํ•ด์„œ ์‹ค์Šตํ•œ ์ด์œ ?
A: ์ „์ฒ˜๋ฆฌ, ์ธ์ฝ”๋”ฉ ์—†์ด ์‰ฝ๊ฒŒ ํ•ด๋ณด๊ธฐ ์œ„ํ•ด

Q: ํ˜„์‹ค์„ธ๊ณ„์˜ ๋ถˆ๊ท ํ˜•ํ•œ ๋ฐ์ดํ„ฐ์˜ ์˜ˆ๊ฐ€ ๋ฌด์—‡์ด ์žˆ์„๊นŒ์š”?
A: ์‹ค์ƒํ™œ์— ์ž˜ ์ผ์–ด๋‚˜์ง€ ์•Š๋Š” ์ผ. e.g. ์•”ํ™˜์ž ์—ฌ๋ถ€, ์ƒ์‚ฐ๊ณผ์ • ์–‘๋ถˆ(์–‘ํ’ˆ, ๋ถˆ๋Ÿ‰ํ’ˆ)์—ฌ๋ถ€, ์€ํ–‰ ๋Œ€์ถœ ์—ฌ๋ถ€ ํŒ๋‹จ, ์ž์—ฐ์žฌํ•ด, ๊ฒŒ์ž„์ด๋‚˜ ๊ด‘๊ณ  ์–ด๋ทฐ์ง•

Q: confusion matrix๊ฐ€ ์ฑ…, ๋ธ”๋กœ๊ทธ, ์œ„ํ‚ค ๊ทธ๋ฆฌ๊ณ  ์‚ฌ์ดํŠธ๋งˆ๋‹ค ์ˆœ์„œ๊ฐ€ ๋‹ค ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ์–ด๋–ค ๊ธฐ์ค€์œผ๋กœ ๋ด์•ผ ํ• ๊นŒ์š”?
A: ์‚ฌ์ดํ‚ท๋Ÿฐ์—์„œ๋„ ์œ„ํ‚ค๋‚˜ ์ฑ…์˜ ์ˆœ์„œ์™€ ๋‹ค๋ฅด๊ฒŒ ๊ทธ๋ ค์ง€๋Š”๋ฐ ์‚ฌ์ดํ‚ท๋Ÿฐ ๊ธฐ์ค€์œผ๋กœ ๋ณด๋Š”๊ฒŒ ๊ทธ๋‚˜๋งˆ ๋œ ํ˜ผ๋ž€์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค.

Q: Precision์„ ์‚ฌ์šฉํ•ด์•ผ ํ•  ๋•Œ?
A: ๋ฌด๊ณ ํ•œ ํ”ผ๊ณ ์ธ์—๊ฒŒ ์œ ์ฃ„ ์„ ๊ณ 

๐Ÿ’ก TIP
๋ฐ์ดํ„ฐ๊ฐ€ json ํ˜•์‹์ผ ๋•Œ, pd.read_json ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜๋ฉด json์„ dataframe์œผ๋กœ ๋ณ€ํ™˜์‹œ์ผœ์ค๋‹ˆ๋‹ค. ์žฅ๋ฅด๋Š” ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„์œผ๋กœ ๋ณ€ํ™˜ํ•˜๊ณ  join, merge ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ „์ฒ˜๋ฆฌํ•˜๊ธฐ ์ข‹์Šต๋‹ˆ๋‹ค!


๐Ÿฆ ์งˆ๋ฌธ

Q: precision์„ ์‚ฌ์šฉํ•ด์•ผํ•  ๋•Œ ์ค‘์— ์•ฝ ํšจ๊ณผ ์žˆ์Œ๋„ ์žˆ์„๊นŒ์š”?
A: ์•ฝํšจ๊ณผ๊ฐ€ ์—†๋Š”๋ฐ ์žˆ๋‹ค๊ณ  ํ•ด์„œ ์ž˜๋ชป๋จน์–ด ๋ถ€์ž‘์šฉ์ด ์ƒ๊ฒผ๋‹ค๋ฉด ๊ทธ๊ฒƒ๋„ ๋ฌธ์ œ๊ฐ€ ๋  ์ˆ˜ ์žˆ๊ฒ ์ฃ . ์ž˜๋ชป๋จน์—ˆ๋Š”๋ฐ ์•„๋ฌด ๋ฌธ์ œ๊ฐ€ ์—†๋‹ค๋ฉด ์ƒ๊ด€ ์—†๊ฒ ์ฃ . ์ƒํ™ฉ์„ ๋ณด๊ณ  ํŒ๋‹จํ•˜๋Š”๊ฒŒ ๋งž์•„๋ณด์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๋งŒ์•ฝ ์ž˜๋ชป๋จน์–ด ๋ถ€์ž‘์šฉ์ด ์ƒ๊ฒผ๋‹ค๋ฉด Precision์„ ๋ด๋„ ๊ดœ์ฐฎ์•„ ๋ณด์ž…๋‹ˆ๋‹ค.


โœ๏ธ TIL

  • ์‚ฌ์‹ค(Fact): Boosting 3๋Œ€์žฅ์— ๋Œ€ํ•ด ์‹ค์Šตํ–ˆ๊ณ , ํ˜ผ๋™ ํ–‰๋ ฌ์— ๋Œ€ํ•ด ๋ฐฐ์› ๋‹ค.
  • ๋Š๋‚Œ(Feeling): ํ˜ผ๋ž€์Šค๋Ÿฝ๋‹ค.
  • ๊ตํ›ˆ(Finding): ์ •์‹  ๋ฐ”์ง ์ฐจ๋ฆฌ์ž.
profile
๋ฐ์ดํ„ฐ ๋ถ„์„๊ฐ€๊ฐ€ ๋˜๊ธฐ ์œ„ํ•œ ๊ธฐ๋ก โœ๏ธ

0๊ฐœ์˜ ๋Œ“๊ธ€