File size: 3,195 Bytes
bd15e44
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
127
128
129
130
131
132
133
134
135
136
137
138
# πŸ”§ Tools Directory

Folder ini berisi model machine learning dan konfigurasi untuk anomali detection.

---

## πŸ“¦ Files Required

```
tools/
β”œβ”€β”€ scaler.pkl              ← StandardScaler model (binary)
β”œβ”€β”€ isolation_forest.pkl    ← Isolation Forest model (binary)
β”œβ”€β”€ metadata.json           ← Configuration
β”œβ”€β”€ model_train.py          ← Training script (optional)
└── simpanan_analisis.py    ← Helper functions (optional)
```

---

## πŸ“‹ File Descriptions

### scaler.pkl

- **Type:** Binary (Pickle format)
- **Purpose:** Standardize features untuk ML model
- **Used by:** Tab 2 (Analisa Simpanan)
- **Size:** ~1-2 KB

### isolation_forest.pkl

- **Type:** Binary (Pickle format)
- **Purpose:** Pre-trained Isolation Forest model untuk anomali detection
- **Used by:** Tab 2 (Analisa Simpanan)
- **Features:** 8 fitur (Db_Sukarela dan Cr_Sukarela aggregates)
- **Size:** ~10-50 KB

### metadata.json

- **Type:** JSON (Text)
- **Purpose:** Konfigurasi model dan parameter
- **Content:**
  ```json
  {
    "feature_cols": [...],           // Nama kolom untuk model
    "rolling_zscore_threshold": 1.0, // Threshold untuk Z-Score
    "rolling_window": 3              // Window size untuk rolling aggregation
  }
  ```

### model_train.py (Optional)

Script untuk melatih ulang model jika diperlukan.

### simpanan_analisis.py (Optional)

Helper functions untuk analisa simpanan.

---

## ⚠️ Important Notes

### Binary Model Files (.pkl)

- File `scaler.pkl` dan `isolation_forest.pkl` HARUS ada untuk Tab 2 berfungsi
- Files ini di-generate saat training, bukan di-create manual
- Jangan di-edit manual - format binary

### File Locations

- App mencari file di path relatif: `../tools/` (dari app folder)
- Pastikan struktur folder sesuai template

### Model Updates

Jika ingin update model (retrain):

1. Jalankan `python tools/model_train.py`
2. File `.pkl` baru akan di-generate
3. Restart aplikasi

---

## πŸ” Troubleshooting

### Error: "Model tidak ditemukan"

```
Solusi:
1. Pastikan scaler.pkl ada di tools/
2. Pastikan isolation_forest.pkl ada di tools/
3. Check file paths (case-sensitive di Linux/Mac)
```

### Error: "Model load failed"

```
Solusi:
1. Pastikan Python version sama saat training dan running
2. Pastikan scikit-learn version sama
3. Re-train model jika masih error
```

---

## πŸ“Š Model Info

### Isolation Forest

- **Algorithm:** Anomaly detection via Isolation Forest
- **Training data:** Historical simpanan transactions
- **Features:** 8 aggregated metrics
  - Db_Sukarela_Total, Db_Sukarela_Avg, Db_Sukarela_Std, Db_Sukarela_Max
  - Cr_Sukarela_Total, Cr_Sukarela_Avg, Cr_Sukarela_Std, Cr_Sukarela_Max
- **Output:** Binary (Anomaly: -1, Normal: 1)

### StandardScaler

- **Purpose:** Feature normalization
- **Fitted on:** Historical data statistics
- **Usage:** Pre-process features before model prediction

---

## πŸš€ Quick Check

Verify tools setup:

```bash
cd THC_APP
python -c "import joblib; print('scaler:', joblib.load('tools/scaler.pkl')); print('model:', joblib.load('tools/isolation_forest.pkl'))"
```

Success jika output menunjukkan objects tanpa error.

---

**Last Updated:** May 2026