https://github.com/nightrunners02/uap_machine-learning
https://github.com/nightrunners02/uap_machine-learning
439 indonesia ipynb-jupyter-notebook nightrunners02 python uap
Last synced: about 2 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/nightrunners02/uap_machine-learning
- Owner: NightRunners02
- License: mit
- Created: 2025-12-19T09:09:18.000Z (6 months ago)
- Default Branch: main
- Last Pushed: 2025-12-24T07:00:35.000Z (6 months ago)
- Last Synced: 2025-12-24T21:59:07.097Z (6 months ago)
- Topics: 439, indonesia, ipynb-jupyter-notebook, nightrunners02, python, uap
- Language: Jupyter Notebook
- Homepage: https://github.com/NightRunners02/UAP_Machine-Learning
- Size: 14.6 MB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# ๐ฉ Spam SMS Classification โ UAP Pembelajaran Mesin
---
Proyek ini merupakan **Ujian Akhir Praktikum (UAP)** mata kuliah **Pembelajaran Mesin**, yang berfokus pada **klasifikasi teks SMS spam dan ham** menggunakan **tiga pendekatan model**, yaitu:
1. **Neural Network Base (Non-Pretrained โ LSTM)**
2. **Pretrained Model 1 โ DistilBERT**
3. **Pretrained Model 2 โ BERT**
Selain pelatihan dan evaluasi model, proyek ini juga dilengkapi dengan **dashboard interaktif menggunakan Streamlit** untuk melakukan inferensi dan analisis performa model.
---
## ๐จโ๐ Informasi Mahasiswa
- **Nama** : Khairy Zhafran H. Kastella
- **NIM** : 202210370311439
- **Mata Kuliah** : Pembelajaran Mesin
- **Universitas** : Universitas Negeri Malang
---
## ๐ Struktur Repository
```
๐ฆ Praktikum-Text-UAP
โ
โโโ data/
โ โโโ spam.csv
โ
โโโ file_ipynb/
โ โโโ Model_Bert_UAP_Machine_Learning.ipynb
โ โโโ Model_Distilbert_UAP_Machine_Learning.ipynb
โ โโโ Model_LSTM_UAP_Machine_Learning.ipynb
โ
โโโ model_nn_base/
โ โโโ model_lstm.pth
โ โโโ tokenizer.pkl
โ
โโโ model_distilbert/
โ โโโ config.json
โ โโโ model.safetensors
โ โโโ tokenizer.json
โ
โโโ model_bert/
โ โโโ config.json
โ โโโ model.safetensors
โ โโโ tokenizer.json
โ
โโโ train_lstm.py
โโโ train_distilbert.py
โโโ train_bert.py
โ
โโโ evaluate_lstm.py
โโโ evaluate_distilbert.py
โโโ evaluate_bert.py
โ
โโโ app.py
โโโ requirements.txt
โโโ pyproject.toml
โโโ README.md
````
---
## ๐ Dataset
Proyek ini menggunakan dataset **SMS Spam Collection Dataset** dari Kaggle.
- **Sumber Dataset**
๐ https://www.kaggle.com/datasets/uciml/sms-spam-collection-dataset
- **Jumlah Data** : 5.574 SMS
- **Label** :
- `ham` โ SMS normal
- `spam` โ SMS spam
### Contoh Data
| Label | Teks |
|------|------|
| ham | Go until jurong point, crazy.. Available only in bugis |
| spam | Free entry in a weekly competition to win FA Cup tickets |
---
## โ๏ธ Preprocessing Data
Langkah preprocessing yang dilakukan:
- Encoding label (`ham = 0`, `spam = 1`)
- Pembersihan teks dasar
- Tokenisasi:
- **TF-IDF** untuk model NN Base
- **Tokenizer Transformer** untuk DistilBERT dan BERT
- Padding & truncation (max length = 128)
---
## ๐ง Model yang Digunakan
### 1๏ธโฃ Neural Network Base (Non-Pretrained โ LSTM)
- Embedding Layer
- LSTM Layer
- Fully Connected Layer
- Sigmoid Output
- Dilatih dari awal tanpa pretrained weight
**Kelebihan**:
- Lebih ringan
- Mudah dipahami
- Cocok untuk baseline
---
### 2๏ธโฃ Pretrained Model 1 โ DistilBERT
- Model Transformer ringan
- Transfer learning dari `distilbert-base-uncased`
- Fine-tuning pada dataset SMS Spam
**Kelebihan**:
- Lebih cepat dari BERT
- Akurasi tinggi
- Lebih efisien untuk deployment
---
### 3๏ธโฃ Pretrained Model 2 โ BERT
- Model Transformer penuh
- Transfer learning dari `bert-base-uncased`
- Representasi konteks teks lebih kaya
**Kelebihan**:
- Akurasi tertinggi
- Pemahaman konteks lebih baik
---
## ๐ Evaluasi Model
Evaluasi dilakukan menggunakan:
- **Classification Report**
- Accuracy
- Precision
- Recall
- F1-Score
- **Confusion Matrix**
- **Grafik Loss dan Accuracy**
### Contoh Metrik Evaluasi
| Model | Accuracy |
|------|----------|
| LSTM (NN Base) | ~87% |
| DistilBERT | ~96% |
| BERT | ~97% |
๐ *Model pretrained menunjukkan performa yang lebih baik dibandingkan model non-pretrained.*
---
## ๐ Visualisasi
- Grafik **Training Loss vs Epoch**
- Grafik **Accuracy vs Epoch**
---
## ๐ Hasil Evaluasi Model
### ๐น Perbandingan Akurasi 3 Model

Grafik menunjukkan bahwa **BERT memiliki performa terbaik**, diikuti oleh **DistilBERT**, sedangkan **LSTM** digunakan sebagai baseline non-pretrained.
---
## ๐งช Evaluasi Per Model
### 1๏ธโฃ LSTM (Non-Pretrained)
**Training Loss & Accuracy**

Model LSTM menunjukkan proses pembelajaran yang stabil, namun performanya masih terbatas dibanding model pretrained karena keterbatasan pemahaman konteks bahasa.
**Confusion Matrix**

Masih terdapat kesalahan klasifikasi, terutama pada data spam yang memiliki struktur bahasa mirip pesan normal.
---
### 2๏ธโฃ DistilBERT
**Training Loss & Accuracy**

Kurva training menunjukkan konvergensi yang baik dan stabil. DistilBERT mampu belajar lebih cepat dengan performa yang mendekati BERT.
**Confusion Matrix**

Mayoritas prediksi berada pada diagonal utama, menandakan performa klasifikasi yang kuat dan konsisten.
---
### 3๏ธโฃ BERT
**Training Loss & Accuracy**

BERT menunjukkan akurasi tertinggi dengan loss paling rendah, menandakan pemahaman konteks teks yang sangat baik.
**Confusion Matrix**

Hampir seluruh prediksi berada pada diagonal utama, menunjukkan performa klasifikasi terbaik di antara ketiga model.
---
## ๐ฅ๏ธ Dashboard Streamlit
Dashboard menyediakan fitur:
- Pilih model (LSTM / DistilBERT / BERT)
- Input teks SMS
- Prediksi real-time
- Tampilan hasil dengan:
- ๐ฅ Background merah untuk **SPAM**
- ๐ฉ Background hijau untuk **HAM**
- Informasi jumlah total data
---
## โถ๏ธ Cara Menjalankan Project (Local)
### 1๏ธโฃ Clone Repository
```bash
git clone https://github.com/username/Praktikum-Text-UAP.git
cd Praktikum-Text-UAP
````
### 2๏ธโฃ Install Dependency
```bash
pip install -r requirements.txt
```
atau menggunakan **PDM**:
```bash
pdm install
```
### 3๏ธโฃ Jalankan Dashboard
```bash
streamlit run app.py
```
---
## ๐ Live Demo (Optional)
๐ *Belum tersedia / Opsional*
---
## ๐ Kesimpulan
* Model **pretrained (DistilBERT & BERT)** memberikan performa terbaik
* **LSTM** tetap layak sebagai baseline
* Streamlit mempermudah analisis dan presentasi model
* Transfer learning sangat efektif untuk klasifikasi teks
---
## ๐ Catatan
Proyek ini dibuat untuk keperluan **akademik** dan **pembelajaran**, bukan untuk penggunaan komersial.
---
โญ Jangan lupa beri **star** jika repository ini membantu!
---
โ๏ธโ๐ฅ Misc / Lain-lain
๐ฃ๏ธ Powered By:
---
๐ Starred:
[](https://github.com/NightRunners02/UAP_Machine-Learning/stargazers)
---
๐ช Forked:
[](https://github.com/NightRunners02/UAP_Machine-Learning/network/members)
---
๐ซ Star History:
[](https://star-history.com/#UAP_Machine-Learning/Portofolio_Simple&Date)