File size: 3,220 Bytes
5092c1e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
# ๋ฐ์ดํ„ฐ ๋””๋ ‰ํ† ๋ฆฌ ๊ฐ€์ด๋“œ

## ๋ฐ์ดํ„ฐ ์ค€๋น„ ๋ฐฉ๋ฒ•

### 1. ํ•„์š”ํ•œ ํŒŒ์ผ

`data/raw/` ํด๋”์— ๋‹ค์Œ **3๊ฐœ์˜ CSV ํŒŒ์ผ**์„ ๋„ฃ๊ธฐ:

#### โ‘  `big_data_set1_f.csv` - ๋งค์žฅ ๊ธฐ๋ณธ ์ •๋ณด

**ํ•„์ˆ˜ ์ปฌ๋Ÿผ**:

- `ENCODED_MCT`: ๋งค์žฅ ID(๊ณ ์œ  ์‹๋ณ„์ž)
- `MCT_ME_D`: ํ์—… ๋‚ ์งœ(ํ์—… ์‹œ์—๋งŒ ๊ฐ’ ์กด์žฌ, ํƒ€๊ฒŸ ๋ณ€์ˆ˜)
- `HPSN_MCT_BZN_CD_NM`: ์—…์ข…๋ช…(์นดํŽ˜, ์Œ์‹์  ๋“ฑ)
- `MCT_SIGUNGU_NM`: ์ง€์—ญ๋ช…

#### โ‘ก `ds2_monthly_usage.csv` - ์›”๋ณ„ ์ด์šฉ ๋ฐ์ดํ„ฐ

**ํ•„์ˆ˜ ์ปฌ๋Ÿผ**:

- `ENCODED_MCT`: ๋งค์žฅ ID
- `TA_YM`: ๋…„์›”(์˜ˆ: 202401)
- `RC_M1_SAA`: ์›” ๋งค์ถœ์•ก ๊ตฌ๊ฐ„(1_0-25%, 2_25-50% ๋“ฑ)
- `MCT_OPE_MS_CN`: ์˜์—… ๊ฐœ์›” ์ˆ˜ ๊ตฌ๊ฐ„
- `RC_M1_AV_NP_AT`: ํ‰๊ท  ์ด์šฉ ๊ธˆ์•ก ๊ตฌ๊ฐ„

**์„ ํƒ ์ปฌ๋Ÿผ**:

- `APV_CE_RAT`: ์Šน์ธ ์ทจ์†Œ์œจ
- `DLV_SAA_RAT`: ๋ฐฐ๋‹ฌ ๋งค์ถœ ๋น„์œจ

#### โ‘ข `ds3_monthly_customers.csv` - ์›”๋ณ„ ๊ณ ๊ฐ ๋ฐ์ดํ„ฐ

**ํ•„์ˆ˜ ์ปฌ๋Ÿผ**:

- `ENCODED_MCT`: ๋งค์žฅ ID
- `TA_YM`: ๋…„์›”
- `MCT_UE_CLN_REU_RAT`: ์žฌ์ด์šฉ ๊ณ ๊ฐ ๋น„์œจ (%)

**์„ ํƒ ์ปฌ๋Ÿผ**:

- `MCT_UE_CLN_NEW_RAT`: ์‹ ๊ทœ ๊ณ ๊ฐ ๋น„์œจ
- `M12_MAL_1020_RAT`, `M12_MAL_30_RAT` ๋“ฑ: ์—ฐ๋ น๋Œ€๋ณ„ ๋‚จ์„ฑ ๊ณ ๊ฐ ๋น„์œจ
- `M12_FME_1020_RAT`, `M12_FME_30_RAT` ๋“ฑ: ์—ฐ๋ น๋Œ€๋ณ„ ์—ฌ์„ฑ ๊ณ ๊ฐ ๋น„์œจ

---

## ๋ฐ์ดํ„ฐ ํ˜•์‹ ์ฐธ๊ณ 

### ๋งค์ถœ/์šด์˜ ๊ตฌ๊ฐ„ ์ฝ”๋“œ

```python
# ๋งค์ถœ ๊ตฌ๊ฐ„ (RC_M1_SAA)
'1_0-25%'      โ†’ ํ•˜์œ„ 25 % (๋งค์šฐ ๋‚ฎ์Œ)
'2_25-50%'     โ†’ 25 - 50 % (๋‚ฎ์Œ)
'3_25-50%'     โ†’ 25 - 50 % (๋‚ฎ์Œ)
'4_50-75%'     โ†’ 50 - 75 % (๋ณดํ†ต)
'5_75-100%'    โ†’ 75 - 100 % (๋†’์Œ)
'6_100%+'      โ†’ ์ƒ์œ„๊ถŒ(๋งค์šฐ ๋†’์Œ)

# ์˜์—… ๊ฐœ์›” ์ˆ˜ ๊ตฌ๊ฐ„ (MCT_OPE_MS_CN)
'1_0-25%'      โ†’ ์‹ ์ƒ(0 - 6๊ฐœ์›”)
'2_25-50%'     โ†’ ์ดˆ๊ธฐ(6 - 12๊ฐœ์›”)
'3_25-50%'     โ†’ ์ดˆ๊ธฐ(6 - 12๊ฐœ์›”)
'4_50-75%'     โ†’ ์ค‘๊ธฐ(12 - 24๊ฐœ์›”)
'5_75-100%'    โ†’ ์žฅ๊ธฐ(24 - 36๊ฐœ์›”)
'6_100%+'      โ†’ ์˜ค๋ž˜๋œ ๋งค์žฅ(36๊ฐœ์›” +)
```

### ํŠน์ˆ˜๊ฐ’ ์ฒ˜๋ฆฌ

```python
# ๊ฒฐ์ธก๊ฐ’ ํ‘œ์‹œ
-999999.9      โ†’ ๋ฐ์ดํ„ฐ ์—†์Œ(NaN์œผ๋กœ ์ฒ˜๋ฆฌ๋จ)
NaN            โ†’ ๋ฐ์ดํ„ฐ ์—†์Œ
```

---

## ๋‹ค์Œ ๋‹จ๊ณ„

๋ฐ์ดํ„ฐ ์ค€๋น„๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด:

1. **Jupyter ๋…ธํŠธ๋ถ์œผ๋กœ ํ•™์Šต**:
   ```bash
   jupyter notebook notebooks/train_model.ipynb
   ```

2. **๋˜๋Š” ์Šคํฌ๋ฆฝํŠธ๋กœ ํ•™์Šต**:
   ```bash
   python src/train.py
   ```

3. **๋ชจ๋ธ ํ™•์ธ**:
   ```bash
   ls models/
   # xgboost_model.pkl, lightgbm_model.pkl, config.json ๋“ฑ ํ™•์ธ
   ```

---

## ์ž์ฃผ ๋ฌป๋Š” ์งˆ๋ฌธ

**Q1. ํŒŒ์ผ ์ธ์ฝ”๋”ฉ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.**

A: CSV ํŒŒ์ผ์˜ ์ธ์ฝ”๋”ฉ์„ ํ™•์ธํ•˜๊ณ  `encoding='cp949'` ๋˜๋Š” `encoding='utf-8'`๋กœ ๋ณ€๊ฒฝํ•˜์„ธ์š”.

**Q2. ์›”๋ณ„ ๋ฐ์ดํ„ฐ๊ฐ€ 2๊ฐœ์›”๋ฐ–์— ์—†๋Š”๋ฐ ๊ดœ์ฐฎ๋‚˜์š”?**

A: ์ตœ์†Œ 3๊ฐœ์›” ์ด์ƒ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ถ”์„ธ ๋ถ„์„์„ ์œ„ํ•ด 6๊ฐœ์›” ์ด์ƒ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

**Q3. ํ์—… ๋งค์žฅ์ด ๋„ˆ๋ฌด ์ ์€๋ฐ ๊ดœ์ฐฎ๋‚˜์š”?**

A: ์ „์ฒด์˜ 1-5% ์ •๋„๋ฉด ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. SMOTE๋กœ ํด๋ž˜์Šค ๋ถˆ๊ท ํ˜•์„ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

**Q4. ํ•„์ˆ˜ ์ปฌ๋Ÿผ์ด ์—†์œผ๋ฉด ์–ด๋–ป๊ฒŒ ํ•˜๋‚˜์š”?**

A: `feature_engineering.py`์—์„œ ํ•ด๋‹น ํŠน์ง• ์ƒ์„ฑ ๋ถ€๋ถ„์„ ์ˆ˜์ •ํ•˜๊ฑฐ๋‚˜ ๊ธฐ๋ณธ๊ฐ’์„ ์‚ฌ์šฉํ•˜๋„๋ก ์„ค์ •ํ•˜์„ธ์š”.

---

## ์ง€์›

๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด GitHub Issues์— ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์™€ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋ฅผ ํฌํ•จํ•˜์—ฌ ๋“ฑ๋กํ•ด์ฃผ์„ธ์š”.