← ํ”„๋กœ์ ํŠธ ๋ชฉ๋ก์œผ๋กœ

๐Ÿ… ์ธ๊ณต์ง€๋Šฅ ๊ฒฝ์ง„๋Œ€ํšŒ ํ”Œ๋žซํผ DACON 2๋“ฑ ์ˆ˜์ƒ (์ด 236๊ฐœ ํŒ€ ์ฐธ์—ฌ)

์‹ ์šฉ์นด๋“œ ๊ณ ๊ฐ ์„ธ๊ทธ๋จผํŠธ ๋ถ„๋ฅ˜ AI ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ฐœ๋ฐœ

2025/03/10 โ†’ 2025/04/30

์‚ฐ์—…/๋ถ„์•ผ
๊ธˆ์œต์นด๋“œ์‚ฌAI
์ง๋ฌด/๊ธฐ์ˆ 
PythonAI๊ณ ๊ฐ์„ธ๋ถ„ํ™”๋ชจ๋ธ๋ง๋ถ„๋ฅ˜
์‹ ์šฉ์นด๋“œ ๊ณ ๊ฐ ์„ธ๊ทธ๋จผํŠธ ๋ถ„๋ฅ˜ AI ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ฐœ๋ฐœ ์ปค๋ฒ„ ์ด๋ฏธ์ง€
DACON ์‹ ์šฉ์นด๋“œ ๊ณ ๊ฐ ์„ธ๊ทธ๋จผํŠธ ๋ถ„๋ฅ˜ AI ๊ฒฝ์ง„๋Œ€ํšŒ ์ˆ˜์ƒ ์ธ์ฆ์„œ
DACON ์‹ ์šฉ์นด๋“œ ๊ณ ๊ฐ ์„ธ๊ทธ๋จผํŠธ ๋ถ„๋ฅ˜ AI ๊ฒฝ์ง„๋Œ€ํšŒ ์ˆ˜์ƒ ์ธ์ฆ์„œ

๊ฒฝ์ง„๋Œ€ํšŒ ๋ชฉํ‘œ

  • ์นด๋“œ์‚ฌ ์‹ ์šฉ์นด๋“œ ๊ณ ๊ฐ ๋“ฑ๊ธ‰์„ ๋ถ„๋ฅ˜ํ•˜๋Š” AI ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ฐœ๋ฐœ
  • ๊ฐ ๊ณ ๊ฐ๋“ค์˜ ๋“ฑ๊ธ‰์„ ์˜ˆ์ธกํ•˜๋Š” ๋ชจ๋ธ ์„ค๊ณ„
  • ๋งˆ์ผ€ํŒ… ์ „๋žต(๊ณ ๊ฐ ๋งž์ถคํ˜• ์„œ๋น„์Šค ๋“ฑ) ๋ฐ ๊ณ ๊ฐ ๊ด€๋ฆฌ ๊ธฐ์—ฌ

Step1. ๋ฐ์ดํ„ฐ ํ’ˆ์งˆ ๊ด€๋ฆฌ

๊ณ ๊ฐ๋ณ„ ๊ธˆ์œตํ™œ๋™ ๋ฐ์ดํ„ฐ (2018.07 ~ 2018.12)

Train Data โ€” 240๋งŒ ๊ฑด + 872๊ฐœ ๋ณ€์ˆ˜

  • ํšŒ์› ์ •๋ณด: 78๊ฐœ ๋ณ€์ˆ˜
  • ์‹ ์šฉ ์ •๋ณด: 42๊ฐœ ๋ณ€์ˆ˜
  • ์Šน์ธ๋งค์ถœ ์ •๋ณด: 406๊ฐœ ๋ณ€์ˆ˜
  • ์ฒญ๊ตฌ์ž…๊ธˆ ์ •๋ณด: 46๊ฐœ ๋ณ€์ˆ˜
  • ์ž”์•ก ์ •๋ณด: 82๊ฐœ ๋ณ€์ˆ˜
  • ์ฑ„๋„ ์ •๋ณด: 105๊ฐœ ๋ณ€์ˆ˜
  • ๋งˆ์ผ€ํŒ… ์ •๋ณด: 64๊ฐœ ๋ณ€์ˆ˜
  • ์„ฑ๊ณผ ์ •๋ณด: 49๊ฐœ ๋ณ€์ˆ˜
  • Segment (๊ณ ๊ฐ ๋“ฑ๊ธ‰): 1๊ฐœ ๋ณ€์ˆ˜

Test Data โ€” 60๋งŒ ๊ฑด + 871๊ฐœ ๋ณ€์ˆ˜ (๋™์ผ ์นดํ…Œ๊ณ ๋ฆฌ, Segment ์ œ์™ธ)

EDA

๊ฐ ๋“ฑ๊ธ‰๋ณ„ ์ธ์› ์ˆ˜ ํ™•์ธ โ†’ ๋ฌธ์ œ ํ™•์ธ โ†’ ๋ฐฉํ–ฅ ์„ค์ •

  • train data์˜ ํด๋ž˜์Šค ๊ฐ„ ๋ถˆ๊ท ํ˜•์ด ๋งค์šฐ ์‹ฌํ–ˆ์Œ (E ๋“ฑ๊ธ‰์ด ์•ฝ 80% ์ฐจ์ง€ & A/B ๋“ฑ๊ธ‰์€ ๋งค์šฐ ์ ์Œ) โ†’ A/B ๋“ฑ๊ธ‰ ๊ณ ๊ฐ์„ ์ž˜ ๊ตฌ๋ถ„ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ฐฉํ–ฅ ์„ค์ •
  • Box Plot โ†’ ๋ถ„ํฌ ํ™•์ธ
  • ์ƒ๊ด€๊ด€๊ณ„ ๋ถ„์„: ์ƒ๊ด€๊ณ„์ˆ˜ ๊ณ„์‚ฐ ๋ฐ heatmap ์‹œ๊ฐํ™” โ†’ ๋“ฑ๊ธ‰๊ณผ ๋‹ค๋ฅธ ๋ณ€์ˆ˜ ๊ฐ„์˜ ์ƒ๊ด€๊ด€๊ณ„ ํŒŒ์•…
Segment๋ณ„ ๊ณ ๊ฐ ์ˆ˜ ๋ถ„ํฌ โ€” E ๋“ฑ๊ธ‰์ด ์•ฝ 80% ์ฐจ์ง€ํ•˜๋Š” ํด๋ž˜์Šค ๋ถˆ๊ท ํ˜•
Segment๋ณ„ ๊ณ ๊ฐ ์ˆ˜ ๋ถ„ํฌ (ํด๋ž˜์Šค ๋ถˆ๊ท ํ˜• ํ™•์ธ)

๋ฐ์ดํ„ฐ ์ „์ฒ˜๋ฆฌ

๊ฒฐ์ธก์น˜ ์ฒ˜๋ฆฌ / ์ž๋ฃŒํ˜• ๋ณ€ํ™˜ / ํŒŒ์ƒ๋ณ€์ˆ˜ ์ƒ์„ฑ / ๋ณ€์ˆ˜ ์‚ญ์ œ

Step2. ๋“ฑ๊ธ‰๋ณ„ ์†Œ๋น„ ํŒจํ„ด ๋ถ„์„

์‹œ๊ฐํ™”๋ฅผ ํ†ตํ•ด ๋“ฑ๊ธ‰๋ณ„ ํŠน์ง• ํŒŒ์•…

๋ณ€์ˆ˜ ๋ถ„ํฌ ์‹œ๊ฐํ™” (box plot) โ†’ ํŠน์ • ๋“ฑ๊ธ‰์˜ ํŠน์ง•์„ ๋ฐ˜์˜ํ•œ ํŒŒ์ƒ๋ณ€์ˆ˜ ์ƒ์„ฑ

(์˜ˆ์‹œ) ๊ณ ๊ฐ ๋“ฑ๊ธ‰๋ณ„ โ€˜1์ˆœ์œ„ ์นด๋“œ ์ด์šฉ๊ธˆ์•กโ€™ ๋ถ„ํฌ

Segment๋ณ„ 1์ˆœ์œ„ ์นด๋“œ์ด์šฉ๊ธˆ์•ก ๋ถ„ํฌ ๋ฐ•์Šคํ”Œ๋กฏ
Segment๋ณ„ '1์ˆœ์œ„ ์นด๋“œ์ด์šฉ๊ธˆ์•ก' ๋ถ„ํฌ

Step3. ๊ณ ๊ฐ ์„ธ๋ถ„ํ™” AI ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ฐœ๋ฐœ

๋ฌธ์ œ ํ•ด๊ฒฐ

๋ฌธ์ œ1. ๋งŽ์€ ๋ณ€์ˆ˜ โ†’ ํ•™์Šต ์†๋„ ์ €ํ•˜ ๋ฐ ๊ณผ์ ํ•ฉ

  • ํ”ผ์ฒ˜ ์ค‘์š”๋„(feature importance) ์‚ฐ์ถœ โ†’ ์ƒ์œ„ ๋ณ€์ˆ˜ ์ถ”์ถœ (100๊ฐœ, 200๊ฐœ, 300๊ฐœ) โ†’ ์กฐํ•ฉ๋ณ„ ๋ชจ๋ธ ์„ฑ๋Šฅ ๋น„๊ต
  • ๋ฐ์ดํ„ฐ ํƒ€์ž… ์ตœ์ ํ™”: 64๋น„ํŠธ โ†’ 32๋น„ํŠธ

๋ฌธ์ œ2. ํด๋ž˜์Šค ๋ถˆ๊ท ํ˜• (A/B ํด๋ž˜์Šค ๋ฐ์ดํ„ฐ ๋ถ€์กฑ)

  • SMOTE ์˜ค๋ฒ„์ƒ˜ํ”Œ๋ง โ†’ ๋‹ค์–‘ํ•œ ๋น„์œจ์˜ ์กฐํ•ฉ ์‹คํ—˜
  • ๊ท ํ˜•์žกํžŒ ํด๋ž˜์Šค ๊ฐ€์ค‘์น˜ ์ ์šฉ
  • mlogloss, macro F1-score ๊ธฐ์ค€ ๋น„๊ต

๋ชจ๋ธ๋ง

Google Colab T4 GPU๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ชจ๋ธ๋ง ์ง„ํ–‰

  • GPU ์ง€์›์ด ๊ฐ€๋Šฅํ•˜๊ณ  ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋ธ ์„ ์ • โ†’ 3๊ฐ€์ง€ ๋ชจ๋ธ: XGBoost, CatBoost, LightGBM
  • Optuna๋ฅผ ํ†ตํ•œ Hyperparameter tuning: ๊ฐ๊ฐ 9๊ฐœ, 6๊ฐœ, 11๊ฐœ์˜ parameter๋กœ ์ง„ํ–‰ โ†’ ๋ชจ๋ธ ์„ฑ๋Šฅ ๊ทน๋Œ€ํ™”
  • Soft voting โ†’ ๋‹จ์ผ ๋ชจ๋ธ ๋Œ€๋น„ ์•ˆ์ •์ ์ด๊ณ  ๋†’์€ ์„ฑ๋Šฅ ํ™•๋ณด
    • XGBoost 40% + LightGBM 30% + CatBoost 30%
    • XGBoost ๊ธฐ์ค€ ์ค‘์š”๋„ ์ƒ์œ„ 300๊ฐœ ๋ณ€์ˆ˜ ๋ฐ GPU ์‚ฌ์šฉ
  • ๊ฐ ๋ชจ๋ธ์—์„œ predict_proba()๋กœ ํด๋ž˜์Šค๋ณ„ ์˜ˆ์ธก ํ™•๋ฅ  ์ถ”์ถœ
  • ๋ชจ๋ธ ๋ณ„ ํ™•๋ฅ  ๊ฐ€์ค‘ ํ‰๊ท  โ†’ ๋‹ค์–‘ํ•œ ๊ฐ€์ค‘์น˜ ๋น„์œจ ์กฐํ•ฉ ์‹คํ—˜
  • np.argmax()๋ฅผ ํ†ตํ•ด ๊ฐ€์žฅ ๋†’์€ ํ™•๋ฅ ์˜ ํด๋ž˜์Šค ์„ ํƒ

๊ณ ๊ฐ ์„ธ๋ถ„ํ™”

  • ์ด 5๋“ฑ๊ธ‰์œผ๋กœ ๊ณ ๊ฐ๊ตฐ ์„ธ๋ถ„ํ™”
  • F1-score ์•ฝ 2๋ฐฐ ํ–ฅ์ƒ์‹œํ‚ด