📘 Pertemuan 7 – Model Evaluation & Cross Validation

🎯 Tujuan Pembelajaran

Setelah mengikuti pertemuan ini mahasiswa mampu:

  1. Memahami pentingnya evaluasi model
  2. Memahami berbagai metrik evaluasi klasifikasi
  3. Memahami confusion matrix secara mendalam
  4. Memahami konsep cross validation
  5. Mengimplementasikan evaluasi model dengan benar
  6. Menghindari overfitting dan underfitting

1️⃣ Mengapa Evaluasi Model Penting?

Model tidak cukup hanya “jalan”, tetapi harus:

  • Akurat
  • Generalisasi baik
  • Tidak overfitting

Kesalahan umum:

❌ Hanya melihat accuracy
❌ Tidak menggunakan data testing dengan benar


2️⃣ Confusion Matrix

Confusion Matrix adalah tabel untuk mengevaluasi model klasifikasi.

Predicted Negative Predicted Positive
Actual Negative TN FP
Actual Positive FN TP

📊 Implementasi

1
2
3
4
from sklearn.metrics import confusion_matrix

cm = confusion_matrix(y_test, y_pred)
print(cm)

3️⃣ Metric Evaluasi

Accuracy

1
2
3
4
from sklearn.metrics import accuracy_score

accuracy = accuracy_score(y_test, y_pred)
print("Accuracy:", accuracy)

Precision

1
2
3
4
from sklearn.metrics import precision_score

precision = precision_score(y_test, y_pred)
print("Precision:", precision)

Recall

1
2
3
4
from sklearn.metrics import recall_score

recall = recall_score(y_test, y_pred)
print("Recall:", recall)

F1 Score

1
2
3
4
from sklearn.metrics import f1_score

f1 = f1_score(y_test, y_pred)
print("F1 Score:", f1)

Classification Report

1
2
3
from sklearn.metrics import classification_report

print(classification_report(y_test, y_pred))

4️⃣ Visualisasi Confusion Matrix

1
2
3
4
5
6
7
8
import seaborn as sns
import matplotlib.pyplot as plt

sns.heatmap(cm, annot=True, fmt="d", cmap="Blues")
plt.xlabel("Predicted")
plt.ylabel("Actual")
plt.title("Confusion Matrix")
plt.show()

5️⃣ Overfitting vs Underfitting

Kondisi Ciri
Overfitting Akurasi train tinggi, test rendah
Underfitting Akurasi train & test rendah

Solusi:

  • Tambah data
  • Gunakan model lebih sederhana
  • Gunakan regularisasi
  • Gunakan cross validation

6️⃣ Cross Validation

Cross Validation digunakan untuk mengevaluasi model secara lebih stabil.

📌 K-Fold Cross Validation

Data dibagi menjadi K bagian:

1
2
3
Fold 1 → test, sisanya train  
Fold 2 → test, sisanya train
...

📊 Implementasi K-Fold

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
from sklearn.model_selection import cross_val_score
from sklearn.linear_model import LogisticRegression

model = LogisticRegression()

scores = cross_val_score(
model,
X,
y,
cv=5,
scoring="accuracy"
)

print("Scores:", scores)
print("Mean Accuracy:", scores.mean())

7️⃣ Stratified K-Fold

Digunakan untuk menjaga distribusi kelas tetap seimbang.

1
2
3
from sklearn.model_selection import StratifiedKFold

skf = StratifiedKFold(n_splits=5)

8️⃣ Pipeline Evaluation (Best Practice)

Urutan yang benar:

1
Preprocessing → Split → Training → Evaluation → Cross Validation

🧪 Praktikum Lengkap

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split, cross_val_score
from sklearn.metrics import accuracy_score

X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, random_state=42
)

model = LogisticRegression()
model.fit(X_train, y_train)

y_pred = model.predict(X_test)

print("Accuracy:", accuracy_score(y_test, y_pred))

scores = cross_val_score(model, X, y, cv=5)

print("Cross Validation Mean:", scores.mean())

📝 Tugas Praktikum

  1. Gunakan model:
    • Logistic Regression
    • Decision Tree
  2. Hitung:
    • Accuracy
    • Precision
    • Recall
    • F1 Score
  3. Bandingkan hasil model.

📝 Tugas Mandiri

  1. Gunakan dataset dari Kaggle.
  2. Lakukan:
    • Training model
    • Evaluasi lengkap
    • Cross validation
  3. Analisis:
    • Model mana terbaik?
    • Apakah terjadi overfitting?

Gunakan template laporan:

https://github.com/AzharRizkiZ/Template-DS-ML⁠

Upload ke GitHub.

🎓 Target Kompetensi

Mahasiswa mampu:

  • mengevaluasi model secara benar
  • memahami berbagai metrik evaluasi
  • menggunakan cross validation
  • memilih model terbaik secara objektif