1. Overview
Model ini dikembangkan untuk melakukan klasifikasi sentimen teks Bahasa Indonesia, khususnya untuk ulasan e-commerce.
Untuk meningkatkan performa pada kelas minoritas, model menggunakan Focal Loss, serta Optuna Hyperparameter Tuning untuk mendapatkan konfigurasi pelatihan terbaik.
Model dapat digunakan untuk:
- Analisis sentimen ulasan produk
- Pemantauan brand sentiment
- Sistem rekomendasi e-commerce
- Riset NLP Bahasa Indonesia
Load model and tokenizer
1from transformers import AutoTokenizer, AutoModelForSequenceClassification
2import torch
3
4model_id = "alifviansyah/indobert-sentiment-focalloss"
5
6# Load tokenizer
7tokenizer = AutoTokenizer.from_pretrained(model_id)
8
9# Load model
10model = AutoModelForSequenceClassification.from_pretrained(model_id)
11
12# Example prediction
13label_map = {0: "negatif", 1: "netral", 2: "positif"}
14
15def predict(text):
16 inputs = tokenizer(text, return_tensors="pt", truncation=True, padding=True)
17 with torch.no_grad():
18 logits = model(**inputs).logits
19 pred = torch.argmax(logits, dim=1).item()
20 return label_map[pred]
21
22print(predict("Pengiriman cepat banget dan barangnya bagus!"))
23
24
2. Task Definition
Jenis task: Text Classification – Sentiment Analysis
Label yang digunakan:
| Label ID | Sentimen |
|---|
| 0 | negatif |
| 1 | netral |
| 2 | positif |
3. Dataset
Dataset terdiri dari kumpulan ulasan e-commerce Indonesia.
Struktur data:
text : isi ulasan
sentimen : label kategori sentimen
Karakteristik dataset:
- Teks mengandung emoji dan ekspresi informal
- Emoji dipertahankan selama preprocessing
- Pembagian data:
- Train: 80%
- Validation: 10%
- Test: 10%
Distribusi kelas tidak seimbang sehingga digunakan Focal Loss.
🎯 Focal Loss untuk Menangani Ketidakseimbangan Kelas
Pada kasus klasifikasi dengan distribusi kelas yang tidak seimbang, model sering kali terlalu fokus pada kelas mayoritas sehingga performa pada kelas minoritas menurun. Focal Loss dirancang untuk mengatasi masalah ini dengan memberikan bobot lebih besar pada sampel yang sulit diprediksi dan bobot lebih kecil pada sampel yang mudah diprediksi.
🔍 Konsep Dasar
Focal Loss memodifikasi fungsi Cross Entropy Loss dengan menambahkan faktor pengali yang secara dinamis menurunkan kontribusi sampel mudah (easy examples).
Dengan demikian, model terdorong untuk lebih fokus belajar dari hard examples yang probabilitas prediksinya rendah.
Pendekatan ini sangat efektif untuk:
- masalah class imbalance
- data dengan noise tinggi
- kasus di mana kelas tertentu jauh lebih jarang
🔢 Rumus Focal Loss
Formulasi matematis Focal Loss menurut Lin et al. (2017):
$$
FL(p_t) = -\alpha , (1 - p_t)^\gamma , \log(p_t)
$$
Dengan definisi:
Jika label benar = 1:
$$
p_t = p
$$
Jika label benar = 0:
$$
p_t = 1 - p
$$
📌 Keterangan Variabel
p adalah probabilitas prediksi model untuk kelas positif.
$$ p_t $$ adalah probabilitas terhadap kelas yang benar.
α adalah balancing factor untuk menangani ketimpangan antar kelas.
γ adalah focusing factor yang mengatur tingkat penekanan pada sampel yang mudah diprediksi.
4. Model Architecture
| Komponen | Detail |
|---|
| Backbone | IndoBERT-base |
| Classification Head | Linear layer size 768 → 3 |
| Loss Function | Focal Loss (gamma=2, alpha adaptif) |
| Optimizer | AdamW |
| Scheduler | Linear learning rate scheduler |
| Tuning | Optuna search untuk LR, WD, batch size |
5. Training Configuration
| Parameter | Nilai |
|---|
| Epochs | 4 |
| Batch size | 16 |
| Learning rate | 3.21e-05 |
| Weight decay | 0.01 |
| Max length | 256 |
| Evaluation | per epoch |
| Save best model | yes |
| Loss | Focal Loss |
6. Summary Metrics (Tabel)
| Metric | Score |
|---|
| Accuracy | 0.9361 |
| Balanced Accuracy | 0.8172 |
| Precision Macro | 0.8824 |
| Recall Macro | 0.8172 |
| F1 Score Macro | 0.8445 |
| Precision Weighted | 0.9347 |
| Recall Weighted | 0.9361 |
| F1 Score Weighted | 0.9347 |
| Loss | 0.0998 |
7. Detailed Classification Report
| Kelas | Precision | Recall | F1-Score |
|---|
| Negatif | 0.9351 | 0.9655 | 0.9500 |
| Netral | 0.7647 | 0.5603 | 0.6468 |
| Positif | 0.9476 | 0.9258 | 0.9366 |
8. Citation
Jika Anda menggunakan model ini dalam penelitian atau publikasi, silakan sitasi dalam format berikut:
1@model{indobert_sentiment_focalloss_2025,
2 title = {IndoBERT Sentiment with Focal Loss},
3 author = {Alifviansyah},
4 year = {2025},
5 url = {https://huggingface.co/alifviansyah/indobert-sentiment-focalloss}
6}