๋จธ์ ๋ฌ๋
์ค๋ฌด์์ ์์ฃผ ์ฌ์ฉ๋๋ ๋จธ์ ๋ฌ๋ ๊ธฐ๋ฒ์ ํ์ตํฉ๋๋ค. ๊ณ ๊ฐ ์ธ๊ทธ๋ฉํ ์ด์ , ์ดํ ์์ธก, ๋งค์ถ ์์ธก ๋ฑ ๋น์ฆ๋์ค ๋ฌธ์ ํด๊ฒฐ์ ์ด์ ์ ๋ง์ถฅ๋๋ค.
๋จธ์ ๋ฌ๋ vs ํต๊ณ
| ๊ด์ | ํต๊ณ | ๋จธ์ ๋ฌ๋ |
|---|---|---|
| ๋ชฉ์ | ์ถ๋ก , ๊ฐ์ค ๊ฒ์ฆ | ์์ธก, ํจํด ๋ฐ๊ฒฌ |
| ํด์ | ๋ชจ๋ธ ํด์ ์ค์ | ์์ธก ์ฑ๋ฅ ์ค์ |
| ๋ฐ์ดํฐ | ์์ ํ๋ณธ์์๋ ์ ํจ | ๋๊ท๋ชจ ๋ฐ์ดํฐ ํ์ |
| ์ ๊ทผ๋ฒ | ๊ฐ์ ๊ธฐ๋ฐ | ๋ฐ์ดํฐ ๊ธฐ๋ฐ |
์ปค๋ฆฌํ๋ผ
1. ํด๋ฌ์คํฐ๋ง
์ค๊ธ๋น์ง๋ ํ์ต์ผ๋ก ๊ณ ๊ฐ ์ธ๊ทธ๋ฉํ ์ด์ ์ ์ํํฉ๋๋ค.
- K-Means ํด๋ฌ์คํฐ๋ง
- ์ต์ ํด๋ฌ์คํฐ ์ ๊ฒฐ์ (Elbow, Silhouette)
- RFM ๊ธฐ๋ฐ ๊ณ ๊ฐ ์ธ๊ทธ๋ฉํ ์ด์
- ํด๋ฌ์คํฐ ํ๋กํ์ผ๋ง
- DBSCAN (๋ฐ๋ ๊ธฐ๋ฐ ํด๋ฌ์คํฐ๋ง)
ํด๋ฌ์คํฐ๋ง ์์ํ๊ธฐ โ
2. ๋ถ๋ฅ ๋ชจ๋ธ
์ค๊ธ๊ณ ๊ธ๊ณ ๊ฐ ์ดํ ์์ธก, ๊ตฌ๋งค ์์ธก ๋ฑ ๋ถ๋ฅ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํฉ๋๋ค.
- ๋ก์ง์คํฑ ํ๊ท
- ๊ฒฐ์ ํธ๋ฆฌ (Decision Tree)
- ๋๋ค ํฌ๋ ์คํธ (Random Forest)
- XGBoost
- ๋ชจ๋ธ ํ๊ฐ: ์ ํ๋, ์ ๋ฐ๋, ์ฌํ์จ, F1, AUC-ROC
๋ถ๋ฅ ๋ชจ๋ธ ์์ํ๊ธฐ โ
3. ํ๊ท ์์ธก
์ค๊ธ๊ณ ๊ธ๊ณ ๊ฐ ์์ ๊ฐ์น(CLV), ๋งค์ถ ์์ธก ๋ฑ ์ฐ์๊ฐ์ ์์ธกํฉ๋๋ค.
- ์ ํ ํ๊ท
- ๋ฆฟ์ง(Ridge), ๋ผ์(Lasso) ํ๊ท
- ๋๋ค ํฌ๋ ์คํธ ํ๊ท
- XGBoost ํ๊ท
- ๋ชจ๋ธ ํ๊ฐ: MAE, RMSE, Rยฒ
ํ๊ท ์์ธก ์์ํ๊ธฐ โ
4. ์๊ณ์ด ์์ธก
๊ณ ๊ธ๋งค์ถ, ์์ ๋ฑ ์๊ณ์ด ๋ฐ์ดํฐ๋ฅผ ์์ธกํฉ๋๋ค.
- Prophet ๊ธฐ๋ณธ ์ฌ์ฉ๋ฒ
- ์ถ์ธ์ ๊ณ์ ์ฑ ๋ชจ๋ธ๋ง
- ํด์ผ ํจ๊ณผ ๋ฐ์
- ์ด์์น ํ์ง
- ๋ค์ค ์๊ณ์ด ์์ธก
์๊ณ์ด ์์ธก ์์ํ๊ธฐ โ
5. ์ถ์ฒ ์์คํ
๊ณ ๊ธ์ํ ์ถ์ฒ ์๊ณ ๋ฆฌ์ฆ์ ๊ตฌํํฉ๋๋ค.
- ํ์ ํํฐ๋ง (Collaborative Filtering)
- ์ฝํ ์ธ ๊ธฐ๋ฐ ํํฐ๋ง (Content-Based)
- ํ์ด๋ธ๋ฆฌ๋ ์ถ์ฒ
- ํ๊ฐ ์งํ: Precision@K, Recall@K, NDCG
ML ์ํฌํ๋ก์ฐ
1. ๋ฌธ์ ์ ์
โโ ๋น์ฆ๋์ค ๋ชฉํ๋ฅผ ML ๋ฌธ์ ๋ก ๋ณํ
โ
2. ๋ฐ์ดํฐ ์์ง ๋ฐ ํ์ (EDA)
โโ ๋ฐ์ดํฐ ์ดํด, ํ์ง ํ์ธ
โ
3. ํผ์ฒ ์์ง๋์ด๋ง
โโ ์๋ก์ด ํน์ฑ ์์ฑ, ๋ณํ
โ
4. ๋ชจ๋ธ ํ์ต
โโ ํ์ต/๊ฒ์ฆ ๋ฐ์ดํฐ ๋ถ๋ฆฌ
โโ ์ฌ๋ฌ ๋ชจ๋ธ ๋น๊ต
โ
5. ๋ชจ๋ธ ํ๊ฐ
โโ ํ
์คํธ ๋ฐ์ดํฐ๋ก ์ฑ๋ฅ ์ธก์
โ
6. ๋ฐฐํฌ ๋ฐ ๋ชจ๋ํฐ๋ง
โโ ์ค์ ํ๊ฒฝ์ ์ ์ฉ
โโ ์ฑ๋ฅ ๋ชจ๋ํฐ๋ง, ์ฌํ์ต์ฃผ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
# ๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ
from sklearn.preprocessing import StandardScaler, LabelEncoder
from sklearn.model_selection import train_test_split, cross_val_score
# ๋ชจ๋ธ
from sklearn.cluster import KMeans
from sklearn.linear_model import LogisticRegression
from sklearn.ensemble import RandomForestClassifier
from xgboost import XGBClassifier
# ํ๊ฐ
from sklearn.metrics import (
accuracy_score, precision_score, recall_score, f1_score,
confusion_matrix, classification_report, roc_auc_score
)
# ์๊ณ์ด
from prophet import ProphetError: No module named 'prophet'
๋ชจ๋ธ ์ ํ ๊ฐ์ด๋
๋ฐ์ดํฐ๊ฐ ์ ์ ๋ (< 1,000๊ฑด)
- ๋ก์ง์คํฑ ํ๊ท, ๊ฒฐ์ ํธ๋ฆฌ
- ๊ณผ์ ํฉ ์ฃผ์, ๊ต์ฐจ๊ฒ์ฆ ํ์
๋ฐ์ดํฐ๊ฐ ๋ง์ ๋ (> 10,000๊ฑด)
- ๋๋ค ํฌ๋ ์คํธ, XGBoost
- ํ์ดํผํ๋ผ๋ฏธํฐ ํ๋ ์ค์
ํด์์ด ์ค์ํ ๋
- ๋ก์ง์คํฑ ํ๊ท, ๊ฒฐ์ ํธ๋ฆฌ
- ํผ์ฒ ์ค์๋ ๋ถ์
์์ธก ์ฑ๋ฅ์ด ์ค์ํ ๋
- XGBoost, LightGBM
- ์์๋ธ ๊ธฐ๋ฒ
์ค๋ฌด ํ
- ๋ฐ์ดํฐ ๋์(Data Leakage): ๋ฏธ๋ ์ ๋ณด๊ฐ ํ์ต์ ํฌํจ๋์ง ์๋๋ก ์ฃผ์
- ํด๋์ค ๋ถ๊ท ํ: ์ดํ ์์ธก ์ ์ดํ์๊ฐ ์ ์ โ SMOTE, ๊ฐ์ค์น ์กฐ์
- ๊ณผ์ ํฉ: ํ์ต ์ฑ๋ฅ๋ง ์ข๊ณ ์ค์ ์ฑ๋ฅ ๋์จ โ ๊ต์ฐจ๊ฒ์ฆ ํ์
- ํผ์ฒ ์ค์ผ์ผ๋ง: ํธ๋ฆฌ ๊ธฐ๋ฐ ์ธ ๋ชจ๋ธ์ ์ ๊ทํ/ํ์คํ ํ์