TEKNIK EVALUASI MACHINE LEARNING

Hai ini blog ku nikmatilah karyaku
dan berikut ini adaalh materi terakhir dari kelas dan blog aku kali ini, dibaca yak

Pelatihan dan Pengujian

Training dan testing adalah salah satu teknik dalam menemukan algoritma machine learning. Dalam teknik ini data akan dibagi menjadi dua bagian, training dan testing, dengan proposi 60:40 atau 80:20. Pada teknik ini distribusi untuk data harus uniform.

Contoh:
Jika kita memiliki data mengenai jenis tumbuhan tropis pada suatu wilayah, dimana pada data tersebut tedapat 3 jenis tumbuhan: bakau(30 data), mahoni (30 data), dan jati (40 data). Total data adalah 100. Jika kita ingin membagi data training dat testing dengan proposi 60:40. Maka untuk data training: bakau (18 data), mahoni (18 data), dan jati (24 data). Sedangkan untuk data testing: bakau (12 data), mahoni (12 data) dan jati (16 data).

Setelah membagi data menjadi dua bagian, pelatihan dan pengujian, pembelajaran mesin akan dilatih hanya dengan pelatihan data. Sedangkan pengujian data akan digunakan untuk mengembangkan generalisasi kinerja dari data tersebut.

Walaupun pelatihan dan pengujian teknik cukup sederhana dan mudah untuk diimplementasikan, namun ada satu kelemahan dari teknik ini. Jika jumlah data tidak akan cukup banyak varians dari data cukup tinggi maka akan ada bias pada hasil evaluasi tetapi. Oleh karena itu untuk meminimalkan bias pada hasil evaluasi beberapa peneliti menggunakan K-fold cross validasi.

pelatihan-pengujian

Validasi Silang K-Fold

Serupa dengan teknik evaluasi pelatihan dan pengujian, pada K-fold data validasi silang akan dibagi menjadi dua bagian: pelatihan dan pengujian; atau tiga bagian: pelatihan, validasi, dan pengujian. Akan tetapi, pada teknik K-fold cross validation proses pembagian training dan testing akan dilakukan sebanyak K.

Contoh:
Untuk data tanaman tropis diatas, jika kita melakukan 5-fold cross validation. Dimana untuk setiap fold, data akan dibagi dengan proposisi 80:20. Maka,

  • Lipat Pertama pelatihan Data: bakau (24 data), mahoni (24 data), Dan jati (32 data); pengujian data: bakau (6 data), mahoni (6 data) dan jati (8 data).
  • Lipat Pertama pelatihan Data: bakau (24 data), mahoni (24 data), Dan jati (32 data); pengujian data: bakau (6 data), mahoni (6 data) dan jati (8 data). Dimana data training adalah bagian dari data training + data testing dari fold pertama. Sedangkan data testing adalah bagian dari data training fold pertama.
  • dan seterusnya

k-lipat

Pada teknik k-fold cross validasi hasil validasi memiliki tingkat bias yang lebih rendah, karena algoritma ML membuka kasus yang berbeda-beda. Namun untuk jumlah data yang cukup besar teknik ini tidak efisien karena akan memakan waktu yang cukup lama.

Implementasi pada Python

Implementasi pelatihan dan validasi pengujian

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import numpy as np<span id="mce_SELREST_start" style="overflow:hidden;line-height:0;"></span>
from sklearn.model_selection import train_test_split
import matplotlib.pyplot as plt
 
#N = jumlah data
N = 100
 
#X = features
#generate random data dengan dimensi (N, 5)
X = np.random.rand(N, 5)
#y = labels (0 = bakau, 1 = mahoni, 2 = jati)
#generate data dengan nilai 0, 1, dan 2 dengan proposi 30%, 30%, 40%
y = np.zeros(N)
y[0:30] = 0
y[30: 60] = 1
y[60: 100] = 2
 
#split data dengan proposi training = 60% dan testing = 40
 
X_train, X_test, y_train, y_test = train_test_split( X, y, test_size=0.4, stratify=y)

Implementasi K-fold cross validation dengan nilai K = 5

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import numpy as np
from sklearn.model_selection import StratifiedShuffleSplit
import matplotlib.pyplot as plt
 
#N = jumlah data
N = 100
 
#X = features
#generate random data dengan dimensi (N, 5)
X = np.random.rand(N, 5)
#y = labels (0 = bakau, 1 = mahoni, 2 = jati)
#generate data dengan nilai 0, 1, dan 2 dengan proposi 30%, 30%, 40%
y = np.zeros(N)
y[0:30] = 0
y[30: 60] = 1
y[60: 100] = 2
sss = StratifiedShuffleSplit(n_splits=5, test_size=0.2, random_state=None)
 
for trainingIndex, testingIndex in sss.split(X, y):
    X_train = X[trainingIndex, :]
    y_train = y[trainingIndex]
 
    X_test = X[testingIndex, :]
    y_test = y[testingIndex]


Sumber : 
pertemuan 14 machine learning Institut Teknologi PLN
https://prasetiautamacv.wordpress.com/2018/07/16/bagaimana-mengevaluasi-algoritma-machine-learning/

Komentar

Postingan populer dari blog ini

Mengenal Apa itu Machine Learning ? beserta Pengertian dan Cara Kerjanya.

SUPERVISED LEARNING VS UNSUPERVISED LEARNING

UNSUPERVISED LEARNING : CARA KERJA K-means Clustering