docs: perbarui laporan akhir dengan data riil ulasan Tokopedia
This commit is contained in:
+37
-24
@@ -38,15 +38,15 @@ Total params: 121,930 (Trainable: 121,930 | Non-trainable: 0)
|
|||||||
```
|
```
|
||||||
|
|
||||||
### (b) Kurva Loss & Akurasi (Training vs Validation)
|
### (b) Kurva Loss & Akurasi (Training vs Validation)
|
||||||
*Visualisasi tersimpan pada:* `results/figures/loss_accuracy_cnn_lengkap.png`
|
*Visualisasi tersimpan pada:* `results/02_cnn/figures/loss_accuracy_cnn_lengkap.png`
|
||||||
|
|
||||||
* **Observasi Loss:** Training loss turun secara konsisten dari ~0.35 ke <0.02. Validation loss stabil pada kisaran ~0.025 tanpa ada tren kenaikan tajam, menandakan model tidak mengalami overfitting parah berkat lapisan Dropout (0.3).
|
* **Observasi Loss:** Training loss turun secara konsisten dari ~0.35 ke <0.02. Validation loss stabil pada kisaran ~0.025 tanpa ada tren kenaikan tajam, menandakan model tidak mengalami overfitting parah berkat lapisan Dropout (0.3).
|
||||||
* **Observasi Akurasi:** Akurasi validasi mencapai >98.5% hanya dalam 3 epoch pertama dan konvergen stabil di angka ~99.2%.
|
* **Observasi Akurasi:** Akurasi validasi mencapai >98.5% hanya dalam 3 epoch pertama dan konvergen stabil di angka ~99.2%.
|
||||||
|
|
||||||
### (c) Confusion Matrix pada Test Set (10.000 Citra)
|
### (c) Confusion Matrix pada Test Set (10.000 Citra)
|
||||||
*Visualisasi tersimpan pada:* `results/figures/confusion_matrix_cnn.png`
|
*Visualisasi tersimpan pada:* `results/02_cnn/figures/confusion_matrix_cnn.png` (dan detail pada `results/02_cnn/figures/confusion_matrix_cnn_detail.png`)
|
||||||
|
|
||||||
* Dari total 10.000 citra uji, model berhasil mengklasifikasikan **>9.920 citra secara tepat** (tingkat kesalahan <0.8%).
|
* Dari total 10.000 citra uji, model berhasil mengklasifikasikan **>9.912 citra secara tepat** (tingkat kesalahan hanya 0.88% atau 88 gambar).
|
||||||
* **Pola Kesalahan Minor:**
|
* **Pola Kesalahan Minor:**
|
||||||
* Digit **4** terkadang diprediksi sebagai **9** karena goresan atas tulisan tangan yang menyatu.
|
* Digit **4** terkadang diprediksi sebagai **9** karena goresan atas tulisan tangan yang menyatu.
|
||||||
* Digit **7** terkadang diprediksi sebagai **2** atau **1** pada tulisan dengan garis miring yang tidak standar.
|
* Digit **7** terkadang diprediksi sebagai **2** atau **1** pada tulisan dengan garis miring yang tidak standar.
|
||||||
@@ -71,7 +71,7 @@ Hal ini disebabkan oleh dua prinsip dasar CNN:
|
|||||||
|
|
||||||
## BAGIAN II: EKSPLORASI KEDALAMAN ARSITEKTUR CNN (2 BLOK vs 3 BLOK)
|
## BAGIAN II: EKSPLORASI KEDALAMAN ARSITEKTUR CNN (2 BLOK vs 3 BLOK)
|
||||||
|
|
||||||
*Visualisasi tersimpan pada:* `results/figures/perbandingan_kedalaman_cnn.png`
|
*Visualisasi tersimpan pada:* `results/02_cnn/figures/perbandingan_kedalaman_cnn.png`
|
||||||
|
|
||||||
### Tabel Perbandingan Arsitektur:
|
### Tabel Perbandingan Arsitektur:
|
||||||
| Arsitektur Model | Konfigurasi Layer | Parameter | Test Accuracy | Waktu Training / Epoch |
|
| Arsitektur Model | Konfigurasi Layer | Parameter | Test Accuracy | Waktu Training / Epoch |
|
||||||
@@ -88,29 +88,42 @@ Hal ini disebabkan oleh dua prinsip dasar CNN:
|
|||||||
*(Bagian Integrasi Hasil Rekan Kelompok)*
|
*(Bagian Integrasi Hasil Rekan Kelompok)*
|
||||||
|
|
||||||
### (a) Distribusi Label Data
|
### (a) Distribusi Label Data
|
||||||
* Total Sampel Dataset: `[Isi total sampel, misal: 10.000 ulasan]`
|
* **Sumber Dataset:** `farhamu/tokopedia-product-reviews-2019` (Hugging Face)
|
||||||
* Distribusi:
|
* **Total Sampel Asli:** 40.607 ulasan
|
||||||
* Kelas Positif: `[X] %`
|
* **Total Sampel Terpakai (setelah membuang rating netral 3):** 38.784 ulasan
|
||||||
* Kelas Negatif: `[Y] %`
|
* **Distribusi:**
|
||||||
|
* **Kelas Positif (Rating 4 & 5 / Label 1):** 37.860 sampel (**97,62%**)
|
||||||
|
* **Kelas Negatif (Rating 1 & 2 / Label 0):** 924 sampel (**2,38%**)
|
||||||
|
* **Pembagian Dataset:** 80% Train (31.027 ulasan) dan 20% Test (7.757 ulasan) secara *stratified*.
|
||||||
|
* *Visualisasi distribusi tersimpan pada:* `results/03_nlp_sentiment/figures/distribusi_label_sentimen.png`
|
||||||
|
|
||||||
### (b) Training History GAP
|
### (b) Training History GAP
|
||||||
* Arsitektur: `Embedding -> Conv1D / Bi-directional -> GlobalAveragePooling1D -> Dense`
|
* **Arsitektur:** `Embedding(10000, 64) -> GlobalAveragePooling1D -> Dense(32, relu) -> Dropout(0.3) -> Dense(1, sigmoid)`
|
||||||
* Konvergensi model tercapai pada Epoch ke-`[N]` dengan Validation Accuracy `[XX.X]%`.
|
* **Total Parameter:** 642.113 parameter
|
||||||
|
* **Konvergensi:** Model dilatih menggunakan *Optimizer* Adam, *Loss* `binary_crossentropy`, serta *EarlyStopping* (patience = 4). Konvergensi tercapai stabil pada Validation Accuracy **~97,8%** dengan *Training Accuracy* **~98,0%**.
|
||||||
|
* *Visualisasi kurva latih tersimpan pada:* `results/03_nlp_sentiment/figures/histori_gap_sentimen.png`
|
||||||
|
|
||||||
|
### (c) Classification Report & Confusion Matrix (Test Set: 7.757 Ulasan)
|
||||||
|
*Laporan evaluasi lengkap tersimpan pada:* `results/03_nlp_sentiment/reports/classification_report_gap_sentimen.txt`
|
||||||
|
|
||||||
### (c) Classification Report & Confusion Matrix
|
|
||||||
```text
|
```text
|
||||||
precision recall f1-score support
|
precision recall f1-score support
|
||||||
Negatif 0.xx 0.xx 0.xx xxx
|
|
||||||
Positif 0.xx 0.xx 0.xx xxx
|
|
||||||
accuracy 0.xx xxxx
|
|
||||||
```
|
|
||||||
|
|
||||||
### (d) Prediksi 5 Ulasan Buatan Sendiri:
|
Negatif (0) 0.59 0.22 0.32 185
|
||||||
1. *"Barang mendarat dengan selamat, packing rapi, dan pengiriman super kilat!"* $\rightarrow$ **Prediksi: POSITIF** (Keyakinan: 99%)
|
Positif (1) 0.98 1.00 0.99 7572
|
||||||
2. *"Produk sangat mengecewakan, tidak menyala sama sekali saat dicolok."* $\rightarrow$ **Prediksi: NEGATIF** (Keyakinan: 98%)
|
|
||||||
3. *"Barang original dan berfungsi baik, respon seller ramah banget."* $\rightarrow$ **Prediksi: POSITIF** (Keyakinan: 97%)
|
accuracy 0.98 7757
|
||||||
4. *"Kualitas barang jelek, pengiriman lambat banget 2 minggu baru sampai."* $\rightarrow$ **Prediksi: NEGATIF** (Keyakinan: 99%)
|
macro avg 0.78 0.61 0.65 7757
|
||||||
5. *"Agak ragu awalnya, ternyata setelah dipakai sangat memuaskan dan worth it!"* $\rightarrow$ **Prediksi: POSITIF** (Keyakinan: 92%)
|
weighted avg 0.97 0.98 0.97 7757
|
||||||
|
```
|
||||||
|
*Visualisasi confusion matrix tersimpan pada:* `results/03_nlp_sentiment/figures/confusion_matrix_gap_sentimen.png`
|
||||||
|
|
||||||
|
### (d) Prediksi 5 Ulasan Buatan Sendiri (Inference Real):
|
||||||
|
1. *"Produk berkualitas tinggi, pengiriman cepat, packing aman!"* $\rightarrow$ **Prediksi: POSITIF** (Keyakinan: **98,5%**)
|
||||||
|
2. *"Kecewa banget, barang datang rusak dan customer service tidak responsif"* $\rightarrow$ **Prediksi: NEGATIF** (Keyakinan Negatif: **95,8%**)
|
||||||
|
3. *"Lumayan sih, tapi harganya kemahalan untuk kualitas segitu"* $\rightarrow$ **Prediksi: NEGATIF** (Keyakinan Negatif: **62,0%**)
|
||||||
|
4. *"Tidak sesuai deskripsi sama sekali, mau return tapi ribet"* $\rightarrow$ **Prediksi: NEGATIF** (Keyakinan Negatif: **93,5%**)
|
||||||
|
5. *"Barang bagus, sesuai dengan foto dan penjual sangat ramah"* $\rightarrow$ **Prediksi: POSITIF** (Keyakinan: **98,9%**)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -127,10 +140,10 @@ Hal ini disebabkan oleh dua prinsip dasar CNN:
|
|||||||
## BAGIAN V: EVALUASI MODEL SEKUENSIAL BiLSTM & REAL-TIME CLI
|
## BAGIAN V: EVALUASI MODEL SEKUENSIAL BiLSTM & REAL-TIME CLI
|
||||||
|
|
||||||
### Perbandingan Kuantitatif: Model GAP vs BiLSTM
|
### Perbandingan Kuantitatif: Model GAP vs BiLSTM
|
||||||
| Model NLP | Test Accuracy | F1-Score | Karakteristik Pemrosesan Sekuens |
|
| Model NLP | Test Accuracy | Macro F1-Score | Karakteristik Pemrosesan Sekuens |
|
||||||
| :--- | :---: | :---: | :--- |
|
| :--- | :---: | :---: | :--- |
|
||||||
| **GAP Sentimen** | `XX.X%` | `0.XX` | Pooling agregat rata-rata tanpa urutan kata ketat |
|
| **GAP Sentimen** | **97,6%** | **0,65** | Pooling agregat rata-rata tanpa urutan kata ketat |
|
||||||
| **BiLSTM** | **`YY.Y%`** | **`0.YY`** | Mempertahankan dependensi urutan maju dan mundur (*bidirectional*) |
|
| **BiLSTM** | **98,2%** | **0,74** | Mempertahankan dependensi urutan maju dan mundur (*bidirectional*) |
|
||||||
|
|
||||||
### Fungsi Real-Time CLI Interaktif
|
### Fungsi Real-Time CLI Interaktif
|
||||||
Fungsi `predict_sentiment_cli()` telah diimplementasikan untuk menerima ketikan langsung dari pengguna:
|
Fungsi `predict_sentiment_cli()` telah diimplementasikan untuk menerima ketikan langsung dari pengguna:
|
||||||
|
|||||||
Reference in New Issue
Block a user