๐ ์ธ๊ณต์ง๋ฅ ๊ฒฝ์ง๋ํ ํ๋ซํผ DACON 2๋ฑ ์์ (์ด 236๊ฐ ํ ์ฐธ์ฌ)
์ ์ฉ์นด๋ ๊ณ ๊ฐ ์ธ๊ทธ๋จผํธ ๋ถ๋ฅ AI ์๊ณ ๋ฆฌ์ฆ ๊ฐ๋ฐ
2025/03/10 โ 2025/04/30
๊ฒฝ์ง๋ํ ๋ชฉํ
- ์นด๋์ฌ ์ ์ฉ์นด๋ ๊ณ ๊ฐ ๋ฑ๊ธ์ ๋ถ๋ฅํ๋ 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 ์๊ฐํ โ ๋ฑ๊ธ๊ณผ ๋ค๋ฅธ ๋ณ์ ๊ฐ์ ์๊ด๊ด๊ณ ํ์
๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ
๊ฒฐ์ธก์น ์ฒ๋ฆฌ / ์๋ฃํ ๋ณํ / ํ์๋ณ์ ์์ฑ / ๋ณ์ ์ญ์
Step2. ๋ฑ๊ธ๋ณ ์๋น ํจํด ๋ถ์
์๊ฐํ๋ฅผ ํตํด ๋ฑ๊ธ๋ณ ํน์ง ํ์
๋ณ์ ๋ถํฌ ์๊ฐํ (box plot) โ ํน์ ๋ฑ๊ธ์ ํน์ง์ ๋ฐ์ํ ํ์๋ณ์ ์์ฑ
(์์) ๊ณ ๊ฐ ๋ฑ๊ธ๋ณ โ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๋ฐฐ ํฅ์์ํด