early_warning_model / PROJECT_SUMMARY.md
LLouis0622's picture
Upload folder using huggingface_hub
5092c1e verified
# μžμ˜μ—… 쑰기경보 AI v2.0
## ν”„λ‘œμ νŠΈ ꡬ쑰
```
early_warning_ai_v2/
β”‚
β”œβ”€β”€ README.md # 메인 κ°€μ΄λ“œ
β”œβ”€β”€ CHANGELOG_V2.md # V2.0 κ°œμ„  사항
β”œβ”€β”€ requirements.txt # μ˜μ‘΄μ„±
β”œβ”€β”€ LICENSE # βš–MIT λΌμ΄μ„ μŠ€
β”œβ”€β”€ .gitignore # Git μ œμ™Έ 파일
β”‚
β”œβ”€β”€ data/ # 데이터 폴더
β”‚ β”œβ”€β”€ README.md # 데이터 μ€€λΉ„ κ°€μ΄λ“œ
β”‚ β”œβ”€β”€ raw/ # 여기에 CSV 파일 λ„£κΈ°
β”‚ β”‚ └── .gitkeep
β”‚ └── processed/ # (μžλ™ 생성)
β”‚
β”œβ”€β”€ models/ # ν•™μŠ΅λœ λͺ¨λΈ (μžλ™ 생성)
β”‚
β”œβ”€β”€ src/ # μ†ŒμŠ€ μ½”λ“œ
β”‚ β”œβ”€β”€ README.md # μ½”λ“œ μ„€λͺ…
β”‚ β”œβ”€β”€ predictor.py # 예츑 클래슀 (ν—ˆκΉ…νŽ˜μ΄μŠ€ μŠ€νƒ€μΌ)
β”‚ β”œβ”€β”€ feature_engineering.py # νŠΉμ§• 생성 (47개)
β”‚ └── train.py # ν•™μŠ΅ 슀크립트
β”‚
└── notebooks/ # Jupyter λ…ΈνŠΈλΆ
└── train_model.ipynb # 전체 ν•™μŠ΅ κ³Όμ •
```
---
## μ£Όμš” νŠΉμ§•
### 1. κΉ”λ”ν•œ ꡬ쑰
- **ν•„μˆ˜ 파일만 포함**: μ‹€μ œλ‘œ ν•„μš”ν•œ μ½”λ“œμ™€ λ¬Έμ„œλ§Œ
- **λͺ…ν™•ν•œ 디렉토리**: 각 ν΄λ”μ˜ μš©λ„κ°€ λΆ„λͺ…함
- **μƒμ„Έν•œ κ°€μ΄λ“œ**: λͺ¨λ“  폴더에 README.md 포함
### 2. μ‹€μš©μ μΈ 섀계
- **데이터 뢄리**: `data/raw/`에 CSV만 λ„£μœΌλ©΄ 됨
- **λͺ¨λ“ˆν™”**: 각 κΈ°λŠ₯이 독립적인 파일둜 뢄리
- **ν™•μž₯ κ°€λŠ₯**: μƒˆλ‘œμš΄ νŠΉμ§•μ΄λ‚˜ λͺ¨λΈ μΆ”κ°€ 쉬움
### 3. μ™„λ²½ν•œ λ¬Έμ„œν™”
- **README.md**: 전체 ν”„λ‘œμ νŠΈ κ°œμš”
- **CHANGELOG_V2.md**: V2.0 상세 κ°œμ„  사항
- **src/README.md**: μ†ŒμŠ€ μ½”λ“œ μ„€λͺ… 및 μˆ˜μ • 방법
- **data/README.md**: 데이터 μ€€λΉ„ κ°€μ΄λ“œ
---
## λΉ λ₯Έ μ‹œμž‘
### 1. μ„€μΉ˜
```bash
cd early_warning_ai_v2
pip install -r requirements.txt
```
### 2. 데이터 μ€€λΉ„
`data/raw/` 폴더에 3개의 CSV 파일 λ„£κΈ°:
- `big_data_set1_f.csv`
- `ds2_monthly_usage.csv`
- `ds3_monthly_customers.csv`
### 3. ν•™μŠ΅
```bash
# Jupyter λ…ΈνŠΈλΆμœΌλ‘œ
jupyter notebook notebooks/train_model.ipynb
# λ˜λŠ” 슀크립트둜
python src/train.py
```
### 4. 예츑
```python
from src.predictor import EarlyWarningPredictor
model = EarlyWarningPredictor.from_pretrained("models/")
result = model.predict(store_data)
```
---
## μ£Όμš” 파일 μ„€λͺ…
### README.md
- ν”„λ‘œμ νŠΈ 전체 κ°œμš”
- λΉ λ₯Έ μ‹œμž‘ κ°€μ΄λ“œ
- μ‚¬μš© 방법
- ν”„λ‘œμ νŠΈ ꡬ쑰
### CHANGELOG_V2.md
- V1.0 β†’ V2.0 λͺ¨λ“  κ°œμ„  사항
- μ„±λŠ₯ λΉ„κ΅ν‘œ
- μ‹€μ œ κ°œμ„  사둀
- ꡬ쑰 λ³€κ²½ λ‚΄μ—­
### src/predictor.py
- ν—ˆκΉ…νŽ˜μ΄μŠ€ μŠ€νƒ€μΌ API
- `from_pretrained()` λ©”μ„œλ“œ
- 단일/배치 예츑
- μœ„ν—˜ μš”μΈ 뢄석
### src/feature_engineering.py
- 47개 νŠΉμ§• μžλ™ 생성
- 맀좜, 고객, 운영, νŠΈλ Œλ“œ, 변동성, κ³„μ ˆμ„±
- ν™•μž₯ κ°€λŠ₯ν•œ 섀계
### src/train.py
- 전체 ν•™μŠ΅ νŒŒμ΄ν”„λΌμΈ
- μ»€λ§¨λ“œλΌμΈ μΈν„°νŽ˜μ΄μŠ€
- SMOTE 클래슀 λΆˆκ· ν˜• 처리
- μžλ™ 평가 및 μ €μž₯
### notebooks/train_model.ipynb
- 전체 ν•™μŠ΅ κ³Όμ • μ‹œκ°ν™”
- EDA (탐색적 데이터 뢄석)
- 단계별 μ„€λͺ…
- μ„±λŠ₯ 평가 및 뢄석
---
## 데이터 μˆ˜μ • 방법
### μƒˆλ‘œμš΄ λ°μ΄ν„°λ‘œ ν•™μŠ΅
**1단계**: `data/raw/`에 CSV 파일 3개 배치
**2단계**: ν•™μŠ΅ μ‹€ν–‰
```bash
python src/train.py
```
**3단계**: μƒμ„±λœ λͺ¨λΈ 확인
```bash
ls models/
# xgboost_model.pkl, lightgbm_model.pkl, config.json λ“±
```
### νŒŒλΌλ―Έν„° μ‘°μ •
#### 예츑 μž„κ³„κ°’ λ³€κ²½
```python
# src/predictor.py의 predict() λ©”μ„œλ“œμ—μ„œ
result = model.predict(store_data, threshold=0.3) # 더 λ―Όκ°ν•˜κ²Œ
```
#### 앙상블 κ°€μ€‘μΉ˜ λ³€κ²½
```json
// models/config.jsonμ—μ„œ
{
"ensemble_weights": [0.6, 0.4] // XGBoost 60%, LightGBM 40%
}
```
#### νŠΉμ§• μΆ”κ°€
```python
# src/feature_engineering.py의 FeatureEngineer ν΄λž˜μŠ€μ—
def _create_custom_features(self, df):
features = {}
# μƒˆλ‘œμš΄ νŠΉμ§• μΆ”κ°€
features['new_metric'] = df['col1'] / df['col2']
return features
```
---
## V2.0 핡심 κ°œμ„ 
### 1. νŠΉμ§• κ°•ν™” (20개 β†’ 47개)
- 닀쀑 κΈ°κ°„ μΆ”μ„Έ 뢄석
- κ³„μ ˆμ„± νŒ¨ν„΄ 감지
- 고객 행동 λ³€ν™” 좔적
### 2. 클래슀 λΆˆκ· ν˜• ν•΄κ²°
- SMOTE 적용
- Recall +17.5%p ν–₯상
### 3. λͺ¨λΈ μ΅œμ ν™”
- XGBoost + LightGBM 앙상블
- ν•˜μ΄νΌνŒŒλΌλ―Έν„° μžλ™ νŠœλ‹
### 4. μ„±λŠ₯ ν–₯상
| μ§€ν‘œ | V1.0 | V2.0 | κ°œμ„  |
|------|------|------|------|
| Accuracy | 94.3% | 97.2% | +2.9%p |
| Recall | 68.2% | 85.7% | +17.5%p |
| Precision | 76.5% | 89.3% | +12.8%p |
---
## λ¬Έμ„œ μœ„μΉ˜
- **전체 κ°€μ΄λ“œ**: `README.md`
- **κ°œμ„  사항**: `CHANGELOG_V2.md`
- **μ½”λ“œ μ„€λͺ…**: `src/README.md`
- **데이터 κ°€μ΄λ“œ**: `data/README.md`
- **ν•™μŠ΅ κ³Όμ •**: `notebooks/train_model.ipynb`
---
## μ‚¬μš© 팁
### 첫 ν•™μŠ΅ μ‹œ
1. μƒ˜ν”Œ λ°μ΄ν„°λ‘œ ν…ŒμŠ€νŠΈ (빠름)
2. 전체 λ°μ΄ν„°λ‘œ ν•™μŠ΅ (정확함)
3. μ„±λŠ₯ 평가 ν›„ νŒŒλΌλ―Έν„° μ‘°μ •
### μ„±λŠ₯ κ°œμ„  μ‹œ
1. **νŠΉμ§• μΆ”κ°€**: `feature_engineering.py` μˆ˜μ •
2. **ν•˜μ΄νΌνŒŒλΌλ―Έν„°**: `train.py`μ—μ„œ μ‘°μ •
3. **앙상블 κ°€μ€‘μΉ˜**: `config.json` μˆ˜μ •
### 배포 μ‹œ
1. `models/` 폴더 전체 볡사
2. `src/predictor.py`만 μ‚¬μš©
3. API μ„œλ²„ ꡬ좕 (FastAPI μΆ”μ²œ)
---
## μ£Όμ˜μ‚¬ν•­
### 데이터 μ€€λΉ„
- 3개의 CSV 파일 λͺ¨λ‘ ν•„μˆ˜
- μ΅œμ†Œ 3κ°œμ›” μ΄μƒμ˜ 월별 데이터
- 폐업 λ§€μž₯ 1-5% ꢌμž₯
### λͺ¨λΈ μ‚¬μš©
- μ˜ˆμΈ‘μ€ 참고용, μ‹€μ œ νŒλ‹¨μ€ 전문가와 상담
- 주기적 μž¬ν•™μŠ΅ ꢌμž₯ (3-6κ°œμ›”)
- 업쒅별 차이 κ³ λ €
---
## κΈ°μ—¬ 및 문의
- GitHub Issues: 버그 리포트, κΈ°λŠ₯ μ œμ•ˆ
- Pull Request: μ½”λ“œ κ°œμ„ , λ¬Έμ„œ μˆ˜μ • ν™˜μ˜
---
## λΌμ΄μ„ μŠ€
MIT License - 자유둭게 μ‚¬μš©, μˆ˜μ •, 배포 κ°€λŠ₯