๋ฅ๋ฌ๋ ๊ธฐ๋ฐ ๊ฐ์ ๋ถ์ ํ๋ก์ ํธ
Kaggle์ Twitter US Airline Sentiment dataset์ ํ์ฉํ์ฌ ํธ์ ๋ด์ฉ์ ๊ธฐ๋ฐ์ผ๋ก ๊ฐ์ ์ ๋ถ๋ฅํ๋ ๋ฅ๋ฌ๋ ๋ชจ๋ธ์ ํ๋ จํ๊ณ , ์ด๋ฅผ ๋ฐํ์ผ๋ก ๊ธฐ์ ์๊ฒ ๋ง์ถคํ ์๋ฃจ์ ์ ์ ๊ณตํ๋ ์๋น์ค๋ก ๊ตฌํํ์ต๋๋ค. ์ ๋ ฅ๋ ์๊ฒฌ์ ๋ด๊ธด ๊ฐ์ ์ ๋ถ๋ฅํ ํ, GPT๋ฅผ ํ์ฉํ์ฌ ํด๋น ๊ฐ์ ๋ฐ ์๊ฒฌ์ ๋ง๋ ์กฐ์ธ์ ์ ๊ณตํฉ๋๋ค.
โ
ํ
์คํธ ๊ฐ์ ๋ถ์ (positive, neutral, negative)
โ
GPT ๊ธฐ๋ฐ ์กฐ์ธ ์ ๊ณต (์: ๋ถ์ ์ ์ธ ๊ฐ์ ์ ๊ฒฝ์ฐ ํด๊ฒฐ์ฑ
์ ์)
โ
Streamlit UI๋ฅผ ํตํ ๋ฐฐํฌ
โ SHAP ์๊ฐํ๋ฅผ ํตํ ๊ฐ์ ๋ถ๋ฅ ๊ทผ๊ฑฐ ์ ๊ณต
- ์ถ์ฒ: Twitter US Airline Sentiment (Kaggle)
- ๊ตฌ์ฑ:
- 2015๋ 2์ ์ฌํ๊ฐ๋ค์ ํธ์ ๋ฐ์ดํฐ
- ๊ฐ์ (label):
positive,neutral,negative - ์ด 14,640๊ฐ์ ์ํ ๋ฐ์ดํฐ
- HTML ํ๊ทธ, URL, ๋ฉ์ , ํด์ํ๊ทธ ์ ๊ฑฐ
- ๋ถํ์ํ ํน์๋ฌธ์ ๋ฐ ์ซ์ ์ ๊ฑฐ
thx/thanksโthank์ ๊ฐ์ด ๋จ์ด ์ ๊ทํ- ๋ถ์ฉ์ด ๋ฐ ํ์ ์ด ์ ๊ฑฐ : NLTK (Natural Language Toolkit), Word Cloud ์๊ฐํ ์ฌ์ฉ
- ํ ํฐํ : nltk ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํ์ฉ
- ํ ํฝ ์ ์ ์ : coherence ์ ์๋ฅผ ์ฐ์ถํ ํ, ๊ฐ์ฅ ๋์ ์ ์๋ฅผ ๋ณด์ธ 18๊ฐ์ ํ ํฝ์ผ๋ก ์ต์ข ๊ฒฐ์
- LDA ํ ํฝ ๋ชจ๋ธ๋ง
- Google์์ ๊ฐ๋ฐํ ์์ฐ์ด ์ฒ๋ฆฌ(NLP) ๋ชจ๋ธ
- ์๋ฐฉํฅ(Bidirectional) ๋ฌธ๋งฅ ์ดํด๋ฅผ ํตํด ๋ฌธ์ฅ์ ์๋ฏธ๋ฅผ ์ ํํ๊ฒ ํ์
- **์ฌ์ ํ์ต(Pre-training)**๋ ๋ชจ๋ธ๋ก, ๊ฐ์ฑ ๋ถ์์ ์ํด ํ์ธํ๋(Fine-tuning) ์งํ
| ๋ชจ๋ธ | ์ค๋ช |
|---|---|
| bert-base-uncased | ๊ธฐ๋ณธ BERT ๋ชจ๋ธ |
| bert-large-uncased | BERT-Base๋ณด๋ค ๋ ๊น์ ๋ชจ๋ธ (๋ ์ด์ด ์ ์ฆ๊ฐ) |
| roberta-base | BERT๋ณด๋ค 10๋ฐฐ ๋ง์ ๋ฐ์ดํฐ๋ก ํ์ต๋ ๋ชจ๋ธ (๋์ Masking ์ ์ฉ) |
| roberta-large | RoBERTa-Base๋ณด๋ค ๋ ํฌ๊ณ ๊ฐ๋ ฅํ ๋ชจ๋ธ |
| deberta-v3-large | Microsoft์์ ๊ฐ๋ฐํ 15์ต ๊ฐ์ ํ๋ผ๋ฏธํฐ๋ฅผ ๊ฐ์ง ๋ชจ๋ธ |
| twitter-roberta-base-sentiment | Twitter ๊ฐ์ ๋ถ์์ ํนํ๋ ๋ชจ๋ธ |
โ ์ด ์ค ๊ฐ์ฅ ์ ํฉํ ๋ชจ๋ธ์ ์ ์ ํ์ฌ ๊ฐ์ฑ ๋ถ์์ ์งํํจ. ๐
- Accuracy (์ ํ๋) : ์์ธกํ ๊ฐ์ฑ์ด ์ค์ ๊ฐ์ฑ๊ณผ ์ผ๋ง๋ ์ผ์นํ๋์ง ์ธก์
- Loss (์์ค ํจ์ ๊ฐ) : ๋ชจ๋ธ์ ์์ธก ์ค๋ฅ ์ ๋๋ฅผ ๋ํ๋ด๋ฉฐ, ๋ฎ์์๋ก ์ฑ๋ฅ์ด ์ข์
| Model | Train Accuracy | Validation Accuracy | Test Accuracy | Train Loss | Validation Loss | Test Loss |
|---|---|---|---|---|---|---|
| BERT-Base | 0.8730 | 0.8300 | 0.8220 | 0.3400 | 0.4150 | 0.4050 |
| BERT-Large | 0.8950 | 0.8500 | 0.8600 | 0.2850 | 0.4100 | 0.3980 |
| RoBERTa-Base | 0.8861 | 0.8402 | 0.8324 | 0.3241 | 0.4013 | 0.3961 |
| RoBERTa-Base (Dropout 0.2) | 0.8659 | 0.8443 | 0.8369 | 0.3505 | 0.4184 | 0.4112 |
| RoBERTa-Large | 0.8928 | 0.8624 | 0.8651 | 0.2695 | 0.4023 | 0.3997 |
| Twitter-RoBERTa-Base-Sentiment | 0.8786 | 0.8497 | 0.8465 | 0.3118 | 0.4037 | 0.3875 |
| DeBERTa-V3-Large | 0.8816 | 0.8370 | 0.8493 | 0.3201 | 0.4351 | 0.4081 |
๐ก ๋ชจ๋ธ ์ ํ ์ ๊ณผ์ ํฉ(Overfitting)๊ณผ ์ผ๋ฐํ ์ฑ๋ฅ์ ๊ณ ๋ คํ์ฌ ์๋ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ๋ชจ๋ธ์ ์ ์ ํจ.
1๏ธโฃ Train Accuracy vs Test Accuracy ์ฐจ์ด โค 5%
- Train(ํ๋ จ) ๋ฐ์ดํฐ์ Test(ํ ์คํธ) ๋ฐ์ดํฐ์์ ์ ํ๋์ ์ฐจ์ด๊ฐ 5% ์ด์์ด๋ฉด ๊ณผ์ ํฉ ๊ฐ๋ฅ์ฑ์ด ์์.
- ์ผ๋ฐํ ์ฑ๋ฅ์ด ์ข์ ๋ชจ๋ธ์ ์ ํํ๊ธฐ ์ํด ์ด ๊ธฐ์ค์ ์ ์ฉ.
2๏ธโฃ Test Loss โค 0.4
- Test ๋ฐ์ดํฐ์์ Loss๊ฐ 0.4 ์ดํ์ธ ๋ชจ๋ธ์ ์ฐ์ ์ ์ผ๋ก ๊ณ ๋ คํ์ฌ ์์ ์ ์ธ ์ฑ๋ฅ ํ๋ณด.
๐ก ์ต์ ์ ์ฑ๋ฅ์ ์ํด ์ฌ๋ฌ ํ์ดํผํ๋ผ๋ฏธํฐ๋ฅผ ์คํํ๋ฉฐ ์กฐ์ ํจ.
| ํ์ดํผํ๋ผ๋ฏธํฐ | ์ค์ ๊ฐ |
|---|---|
| Dropout (hidden, attention) | 0.1 ~ 0.2 (๊ณผ์ ํฉ ๋ฐฉ์ง) |
| Epochs | 2 ~ 4 (์ ์ ํ ํ์ต ํ์) |
| Batch Size (Train, Eval) | 16 ~ 32 (ํ์ต ์์ ์ฑ์ ๊ณ ๋ ค) |
| Learning Rate | 1e-5 ~ 2e-5 (AdamW ์ตํฐ๋ง์ด์ ์ฌ์ฉ) |
| Warmup Steps | ํ๋ จ ์ด๋ฐ 500~1000 ์คํ
๋์ ์์ ํ์ต๋ฅ ์ ์ง |
| Weight Decay | 0.001 ~ 0.01 (๊ณผ์ ํฉ ๋ฐฉ์ง ๋ฐ ์ผ๋ฐํ ์ฑ๋ฅ ๊ฐ์ ) |
์ด ๋ฐ์ดํฐ์ ์ ๋ฏธ๊ตญ ํญ๊ณต์ฌ์ ๋ํ ํธ์์ ๊ฐ์ฑ ๋ถ์ํ ๊ฒ์ผ๋ก, ๋ถ์ ์ ์ธ ๊ฐ์ฑ์ด ์๋์ ์ผ๋ก ๋ง์ ๋ฐ์ดํฐ ๋ถ๊ท ํ(imbalanced data)์ด ๋ฐ์ํ๋ ํน์ง์ด ์์.
| Sentiment | ๋น์จ (%) |
|---|---|
| Negative (๋ถ์ ์ ) | 62% |
| Neutral (์ค๋ฆฝ์ ) | 21% |
| Positive (๊ธ์ ์ ) | 16% |
๐ก ์ด๋ฌํ ๋ถ๊ท ํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ง ์์ผ๋ฉด, ๋ชจ๋ธ์ด negative ํด๋์ค์ ํธํฅ๋์ด ์์ธก ์ฑ๋ฅ์ด ์ ํ๋ ๊ฐ๋ฅ์ฑ์ด ์์.
- ๋ชจ๋ ํด๋์ค(positive/neutral/negative)๋ฅผ ๋์ผํ ์ค์๋๋ก ํ์ต
- ๋ฐ์ดํฐ ๋ถ๊ท ํ์ด ์ฌํ ๊ฒฝ์ฐ, ๋ค์ ํด๋์ค(negative) ์ค์ฌ์ผ๋ก ํ์ต ์งํ
- ๊ฒฐ๊ณผ์ ์ผ๋ก ์์ ํด๋์ค(positive, neutral)์ ์์ธก ์ ํ๋๊ฐ ๋ฎ์์ง ๊ฐ๋ฅ์ฑ์ด ํผ
Focal Loss๋ ์์ฃผ ๋ฑ์ฅํ๋ ์ฌ์ด ์ํ(negative)์ ๋ํ ๊ฐ์ค์น๋ฅผ ๋ฎ์ถ๊ณ , ์ด๋ ค์ด ์ํ(positive, neutral)์ ๋ ์ง์คํ๋๋ก ์ ๋ํ๋ ์์ค ํจ์
| Loss Function | ํน์ง | ๋ฐ์ดํฐ ๋ถ๊ท ํ ํด๊ฒฐ |
|---|---|---|
| CrossEntropyLoss | ๋ชจ๋ ํด๋์ค ๋์ผ ๊ฐ์ค์น | โ ๋ค์ ํด๋์ค(negative)์ ํธํฅ๋ ๊ฐ๋ฅ์ฑ |
| Focal Loss | ์ด๋ ค์ด ์ํ์ ๋ ์ง์ค | โ ์์ ํด๋์ค(positive, neutral)๋ ํ์ต ๊ฐ๋ฅ |
โ ์ ์ฉ ํจ๊ณผ
- ์์ ํด๋์ค(positive, neutral)์ ์์ธก ์ฑ๋ฅ ํฅ์
- ๊ณผ์ ํฉ ๋ฐฉ์ง ๋ฐ ๋ชจ๋ธ์ ์ผ๋ฐํ ์ฑ๋ฅ ๊ฐ์
ํ์ต๋ ๋ชจ๋ธ์ ์ฑ๋ฅ์ Train / Validation / Test ๋ฐ์ดํฐ์์์ ์ ํ๋(Accuracy)๋ก ํ๊ฐ
| ๋ฐ์ดํฐ์ | Accuracy (%) |
|---|---|
| Train (ํ๋ จ ๋ฐ์ดํฐ) | 90.39% |
| Validation (๊ฒ์ฆ ๋ฐ์ดํฐ) | 85.70% |
| Test (ํ ์คํธ ๋ฐ์ดํฐ) | 86.89% |
โ Train๊ณผ Test ์ฑ๋ฅ ์ฐจ์ด๊ฐ 5% ์ด๋ด๋ก ์ ์ง๋์ด, ๊ณผ์ ํฉ ์์ด ์์ ์ ์ธ ์ฑ๋ฅ
โ Validation๊ณผ Test ์ ํ๋๊ฐ ๋น์ทํ์ฌ ์ผ๋ฐํ ์ฑ๋ฅ์ด ์ฐ์
Focal Loss ์ ์ฉ ๋ฐ ํ์ดํผํ๋ผ๋ฏธํฐ ํ๋์ ํตํด ์ต์ ์ ์ฑ๋ฅ์ ๋ฌ์ฑํ์์ผ๋ฉฐ, ๋ชจ๋ธ์ด ํ๋ จ ๋ฐ์ดํฐ์ ๊ณผ์ ํฉํ์ง ์๊ณ ์๋ก์ด ์ ๋ ฅ ๋ฐ์ดํฐ์์๋ ๋ถ๋ฅ๋ฅผ ์ ํด๋์ ํ์ธ ๐๐ฅ
๐ [https://advicegenerator.streamlit.app/]
-
advice page
- ์ฌ์ฉ์์ ๊ธฐ์ ๋๋ฉ์ธ์ ์ ํํฉ๋๋ค.
- ์กฐ์ธ์ ์ป๊ณ ์ถ์ ๊ณ ๊ฐ์ ์๊ฒฌ์ ์ ๋ ฅ๋์ ์ ๋ ฅํฉ๋๋ค.
- ์๊ฒฌ์ ๋ด๊ธด ๊ฐ์ ์ ํ์ธํ๊ณ ๊ทธ์ ๋ง๋ advice๋ฅผ ํ์ธํฉ๋๋ค.
-
airline monitoring page