Skip to content

NightRunners02/UAP_Machine-Learning

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

25 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ“© 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.

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

Perbandingan Akurasi

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

Training LSTM

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

Confusion Matrix

Confusion Matrix LSTM

Masih terdapat kesalahan klasifikasi, terutama pada data spam yang memiliki struktur bahasa mirip pesan normal.


2️⃣ DistilBERT

Training Loss & Accuracy

Training DistilBERT

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

Confusion Matrix

Confusion Matrix DistilBERT

Mayoritas prediksi berada pada diagonal utama, menandakan performa klasifikasi yang kuat dan konsisten.


3️⃣ BERT

Training Loss & Accuracy

Training BERT

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

Confusion Matrix

Confusion Matrix BERT

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

git clone https://github.com/username/Praktikum-Text-UAP.git
cd Praktikum-Text-UAP

2️⃣ Install Dependency

pip install -r requirements.txt

atau menggunakan PDM:

pdm install

3️⃣ Jalankan Dashboard

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:

Stargazers repo roster for @NightRunners02/


πŸͺ Forked:

Forkers repo roster for @NightRunners02/


πŸ’« Star History:

Star History Chart