## Evaluation Metric — F1-Score (Macro)

Pada kompetisi ini, performa model dievaluasi menggunakan **F1-Score Macro**. Metrik ini menghitung F1-Score **untuk setiap kelas secara terpisah**, kemudian mengambil **rata-rata aritmatika** dari seluruh kelas. Dengan pendekatan ini, setiap kelas memiliki **bobot yang sama**, terlepas dari jumlah sampelnya.

Pendekatan **macro** sangat sesuai untuk tugas klasifikasi citra karena mendorong model untuk memiliki performa yang seimbang pada seluruh kelas, tidak hanya fokus pada kelas yang dominan.

### Definisi Metrik

Untuk setiap kelas \( c \):

$$
Precision_c = \frac{TP_c}{TP_c + FP_c}
$$

$$
Recall_c = \frac{TP_c}{TP_c + FN_c}
$$

$$
F1_c = 2 \times \frac{Precision_c \times Recall_c}{Precision_c + Recall_c}
$$

F1-Score Macro didefinisikan sebagai:

$$
F1_{macro} = \frac{1}{N} \sum_{c=1}^{N} F1_c
$$

dengan:
- \( N \) : jumlah kelas  
- \( TP_c, FP_c, FN_c \) : nilai confusion matrix untuk kelas \( c \)

Nilai **F1-Score Macro** berada pada rentang **0 hingga 1**, di mana nilai yang lebih tinggi menunjukkan performa model yang lebih baik dan seimbang pada seluruh kelas.

Implementasi Kode
```python
from sklearn.metrics import f1_score

# y_true: label ground truth
# y_pred: hasil prediksi (0 atau 1)
f1 = f1_score(y_true, y_pred, average="macro")
print("F1-Score:", f1)

```

---

## Submission Format

Peserta diwajibkan mengirimkan file submission dalam format **CSV** dengan dua kolom, yaitu `filename` dan `label`.

### Deskripsi Kolom
- **filename**: nama file citra uji (`.jpg`) yang terdapat pada direktori `Dataset/test/`
- **label**: hasil prediksi model untuk setiap citra  
  - `0` → without_mask  
  - `1` → with_mask  

### Contoh File Submission
```csv
filename,label
test_1.jpg,0
test_2.jpg,0
test_3.jpg,0
test_4.jpg,0
test_5.jpg,0
test_6.jpg,0
test_7.jpg,0
test_8.jpg,0
```