Skip to main content

Model Training, Prediction & Evaluation

Setelah dataset dibagi menjadi Training Set dan Test Set, tahap berikutnya adalah menggunakan data tersebut untuk membuat model Machine Learning.

Pada materi sebelumnya, kita sudah memiliki:

X_train → Features untuk training
y_train → Target untuk training

X_test → Features untuk testing
y_test → Target sebenarnya untuk testing

Sekarang kita akan menggunakan K-Nearest Neighbors (KNN) untuk melakukan klasifikasi pada Iris Dataset.

Workflow-nya:

Training Data
↓
fit()
↓
Model
↓
predict()
↓
Prediction
↓
accuracy_score()
↓
Evaluation

Tahapan Model Machine Learning​

Secara sederhana, prosesnya terdiri dari empat tahap utama:

  1. Memilih algoritma
  2. Melatih model
  3. Membuat prediksi
  4. Mengevaluasi hasil

1. Memilih Algoritma Model​

Untuk contoh ini kita menggunakan algoritma:

K-Nearest Neighbors (KNN)

KNN merupakan algoritma yang dapat digunakan untuk melakukan klasifikasi.

Konsep sederhananya adalah:

Data baru diklasifikasikan berdasarkan kemiripannya dengan beberapa data terdekat.

Pada dataset Iris, model akan mencoba menentukan apakah sebuah bunga termasuk:

Iris setosa
Iris versicolor
Iris virginica

2. Mengenal K-Nearest Neighbors​

K-Nearest Neighbors atau KNN menggunakan jarak atau kemiripan antara data untuk menentukan kelas sebuah data baru.

Misalnya terdapat sebuah data baru:

Data Baru
↓
Cari tetangga terdekat
↓
Ambil K tetangga
↓
Lihat kelas yang paling banyak
↓
Tentukan kelas data baru

Jika kita menggunakan:

n_neighbors=3

maka model akan mempertimbangkan 3 tetangga terdekat.

Misalnya:

Tetangga 1 → setosa
Tetangga 2 → setosa
Tetangga 3 → versicolor

Maka kelas yang paling banyak adalah:

setosa

Sehingga data baru akan diklasifikasikan sebagai setosa.


3. Parameter n_neighbors​

KNN memiliki parameter:

n_neighbors

Parameter tersebut menentukan jumlah tetangga yang digunakan sebagai pertimbangan dalam menentukan kelas.

Contoh:

KNeighborsClassifier(n_neighbors=3)

berarti model menggunakan 3 tetangga terdekat.

Nilai K tidak harus selalu 3. Nilai tersebut dapat disesuaikan berdasarkan dataset dan eksperimen model.


4. Membuat Model KNN​

Pertama, kita perlu mengimpor KNeighborsClassifier:

from sklearn.neighbors import KNeighborsClassifier

Kemudian membuat model:

knn = KNeighborsClassifier(n_neighbors=3)

Pada tahap ini, kita baru membuat objek model.

Model belum mempelajari dataset.


5. Melatih Model dengan fit()​

Untuk membuat model belajar dari data training, digunakan method:

.fit()

Contohnya:

knn.fit(X_train, y_train)

Di sini:

X_train
↓
Features/Input

y_train
↓
Target/Label

Model akan menggunakan pasangan X_train dan y_train sebagai dasar untuk proses pembelajaran.

Secara sederhana:

X_train + y_train
↓
knn.fit()
↓
Trained Model

6. Mengapa Hanya Menggunakan Data Training?​

Perhatikan bahwa kita menggunakan:

knn.fit(X_train, y_train)

dan bukan:

knn.fit(X_test, y_test)

Data testing harus tetap disimpan untuk menguji kemampuan model.

Jika data testing digunakan untuk training, kita tidak lagi memiliki data yang benar-benar baru untuk menguji model.

Hal ini dapat menyebabkan data leakage.

Prinsip sederhananya:

Training Data
↓
Belajar

Test Data
↓
Menguji

7. Membuat Prediksi dengan predict()​

Setelah model selesai dilatih, kita dapat menggunakannya untuk membuat prediksi.

Gunakan:

knn.predict(X_test)

Contohnya:

y_predict = knn.predict(X_test)

Perhatikan bahwa yang diberikan kepada predict() adalah:

X_test

bukan:

y_test

Karena model harus mencoba memprediksi target berdasarkan features.

Alurnya:

X_test
↓
Model
↓
y_predict

8. Memahami y_predict​

y_predict berisi hasil prediksi dari model.

Misalnya:

y_test:

[0, 1, 2, 1, 0]

y_predict:

[0, 1, 2, 0, 0]

Kita sekarang memiliki dua informasi:

y_test
↓
Jawaban sebenarnya

y_predict
↓
Jawaban dari model

Keduanya dapat dibandingkan untuk mengetahui performa model.


9. Evaluasi Model dengan accuracy_score​

Salah satu metrik sederhana untuk klasifikasi adalah accuracy.

Accuracy menunjukkan proporsi prediksi yang benar dibandingkan dengan seluruh prediksi.

Kita dapat menggunakan:

accuracy_score()

Import:

from sklearn import metrics

Kemudian:

accuracy = metrics.accuracy_score(
y_test,
y_predict
)

10. y_true dan y_pred​

Fungsi accuracy_score() memiliki konsep:

accuracy_score(y_true, y_pred)

Dalam kasus kita:

accuracy_score(y_test, y_predict)

Artinya:

y_test
↓
Nilai sebenarnya

y_predict
↓
Nilai hasil prediksi

Kemudian keduanya dibandingkan.


11. Contoh Perhitungan Accuracy​

Misalnya:

y_test = [0, 1, 2, 1, 0]
y_predict = [0, 1, 2, 0, 0]

Perbandingannya:

Data 1 → Benar
Data 2 → Benar
Data 3 → Benar
Data 4 → Salah
Data 5 → Benar

Berarti:

4 prediksi benar
5 total prediksi

Accuracy:

4 / 5 = 0.8

atau:

80%

12. Menampilkan Accuracy​

Hasil accuracy dapat ditampilkan:

print(f"Akurasi Model: {accuracy * 100:.2f}%")

Jika nilai accuracy:

0.95

maka hasilnya:

Akurasi Model: 95.00%

Implementasi Lengkap​

Berikut implementasi sederhana workflow Machine Learning menggunakan Iris Dataset dan KNN:

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn import metrics

# 1. Load dataset
iris = load_iris()

X = iris.data
y = iris.target

# 2. Membagi data
X_train, X_test, y_train, y_test = train_test_split(
X,
y,
test_size=0.2
)

# 3. Membuat model KNN
knn = KNeighborsClassifier(n_neighbors=3)

# 4. Melatih model
knn.fit(X_train, y_train)

# 5. Membuat prediksi
y_predict = knn.predict(X_test)

# 6. Mengukur accuracy
accuracy = metrics.accuracy_score(
y_test,
y_predict
)

print(f"Akurasi Model: {accuracy * 100:.2f}%")

Memahami Alur Kode​

Kode tersebut dapat dibaca sebagai sebuah pipeline:

load_iris()
↓
Dataset
↓
X dan y
↓
train_test_split()
↓
X_train, X_test
y_train, y_test
↓
KNeighborsClassifier()
↓
knn.fit(X_train, y_train)
↓
Model Terlatih
↓
knn.predict(X_test)
↓
y_predict
↓
accuracy_score(y_test, y_predict)
↓
Accuracy

fit() vs predict()​

Dua method penting yang perlu dibedakan:

MethodFungsiData
fit()Melatih modelX_train, y_train
predict()Membuat prediksiX_test

Cara mudah mengingatnya:

fit()
↓
BELAJAR

predict()
↓
MENEBak

y_test vs y_predict​

Kedua variabel ini juga memiliki fungsi yang berbeda:

VariabelIsi
y_testJawaban sebenarnya
y_predictHasil prediksi model

Keduanya digunakan untuk evaluasi:

y_test
+
y_predict
↓
Comparison
↓
Accuracy

Mengapa Tidak Langsung Menggunakan Seluruh Dataset?​

Kita tidak menggunakan seluruh dataset untuk training karena kita membutuhkan data yang belum digunakan model untuk menguji kemampuannya.

Misalnya terdapat 100 data:

100 Data
│
├── 80 → Training
│
└── 20 → Testing

Model belajar dari:

80 data

Kemudian diuji menggunakan:

20 data

Dengan cara tersebut kita dapat memperoleh gambaran mengenai kemampuan model terhadap data yang belum digunakan dalam training.


Data Leakage​

Data leakage terjadi ketika informasi dari data yang seharusnya digunakan untuk evaluasi ikut masuk ke proses training dengan cara yang tidak semestinya.

Dalam workflow sederhana ini, prinsip pentingnya adalah:

X_train + y_train
↓
fit()

Sedangkan:

X_test
↓
predict()

dan:

y_test + y_predict
↓
evaluation

Data testing sebaiknya tidak digunakan untuk melatih model.


Hubungan dengan Workflow Machine Learning​

Sekarang workflow yang telah kita pelajari menjadi:

1. Import Data
↓
2. Clean Data
↓
3. Split Data
↓
4. Create Model
↓
5. Train Model
↓
6. Predict
↓
7. Evaluate
↓
8. Improve

Dalam implementasi menggunakan scikit-learn:

train_test_split()
↓
KNeighborsClassifier()
↓
fit()
↓
predict()
↓
accuracy_score()

Ringkasan​

Pada materi ini kita mempelajari proses training, prediction, dan evaluation menggunakan scikit-learn.

Konsep penting:

  • KNN adalah algoritma yang melakukan klasifikasi berdasarkan tetangga terdekat.
  • n_neighbors menentukan jumlah tetangga yang digunakan.
  • fit() digunakan untuk melatih model.
  • Training hanya menggunakan X_train dan y_train.
  • predict() digunakan untuk menghasilkan prediksi.
  • predict() menggunakan X_test sebagai input.
  • y_test merupakan jawaban sebenarnya.
  • y_predict merupakan hasil prediksi model.
  • accuracy_score() digunakan untuk membandingkan prediksi dengan nilai sebenarnya.
  • Data testing tidak digunakan untuk training agar evaluasi tetap valid.
  • Menggunakan data testing dalam training dapat menyebabkan data leakage.

Kesimpulan​

Setelah data dipisahkan menjadi training dan testing, kita dapat mulai membangun model Machine Learning.

Pada contoh Iris Dataset:

X_train + y_train
↓
KNN Model
↓
fit()
↓
Model Terlatih
↓
X_test
↓
predict()
↓
y_predict
↓
y_test + y_predict
↓
accuracy_score()
↓
Accuracy

Inilah inti dari proses Machine Learning sederhana menggunakan scikit-learn: model belajar dari data training, membuat prediksi terhadap data baru, kemudian hasilnya dibandingkan dengan jawaban sebenarnya untuk mengetahui seberapa baik model bekerja.

Baca Juga​