Transcript Document

Klasifikasi (Season 2)
Nearest Neighbor
Pengenalan Pola
Materi 3
Eko Prasetyo
Teknik Informatika
UPN “Veteran” Jawa Timur
2012
K-NEAREST NEIGHBOR
(K-NN)
2
K-Nearest Neighbor



Algoritma yang melakukan klasifikasi berdasarkan
kedekatan lokasi (jarak) suatu data dengan data
yang lain.
Prinsip sederhana yang diadopsi oleh algoritma KNN adalah: “Jika suatu hewan berjalan seperti
bebek, bersuara kwek-kwek seperti bebek, dan
penampilannya seperti bebek, maka hewan itu
mungkin bebek”.
Pada algoritma K-NN, data berdimensi q, dapat
dihitung jarak dari data tersebut ke data yang lain,
◦ Nilai jarak ini yang digunakan sebagai nilai
kedekatan/kemiripan antara data uji dengan data latih.
3
K-Nearest Neighbor
1 tetangga terdekat (1-NN)
2 tetangga terdekat (2-NN)
3 tetangga terdekat (3-NN)
7 tetangga terdekat (7-NN)
4
Algoritma K-NN
z = (x’,y’), adalah data uji dengan
vektor x’ dan label kelas y’ yang belum
diketahui
 Hitung jarak d(x’,x), jarak diantara
data uji z ke setiap vektor data latih,
simpan dalam D
 Pilih Dz  D, yaitu K tetangga terdekat
dari z y'  arg max 
I (v  yi )

v
( xi , yi )Dz
5
Contoh
8
6
4
2
0
0
2
4
6
8
Data uji adalah data (3,4), fitur X=3, Y=4.
Akan dilakukan prediksi, masuk dalam
kelas yang manakah seharusnya ?
Gunakan jarak Euclidean !
Data latih
Data X
1
1
2
2
3
3
4
3
5
7
6
1
7
2
8
5
9
4
10
6
11
1
12
6
13
1
14
4
15
5
16
2
17
4
Y
1
1
1
2
2
3
3
3
4
4
5
5
6
6
6
7
7
Kelas
1
1
1
1
2
1
1
2
2
2
1
2
1
2
2
2
2
6
Prediksi dengan K-NN
Jarak data uji (3,4) ke 17 data latih
Nomor
data
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
x
y
1
2
3
3
7
1
2
5
4
6
1
6
1
4
5
2
4
1
1
1
2
2
3
3
3
4
4
5
5
6
6
6
7
7
Kelas
asli
1
1
1
1
2
1
1
2
2
2
1
2
1
2
2
2
2
Jarak data uji
1-NN 3-NN 7-NN
ke data latih
3.6055
------3.1622
------3
------2
--NN
NN
4.4721
------2.2360
----NN
1.4142
--NN
NN
2.2360
----NN
1
NN
NN
NN
3
------2.2360
----NN
3.1622
------2.8284
------2.2360
----NN
2.8284
------3.1622
------3.1622
-------
7
Prediksi dengan K-NN
Jarak data uji (3,4) ke 17 data latih
Nomor
data
x
y
9
7
4
6
8
11
14
13
15
3
10
2
12
16
17
1
5
4
2
3
1
5
1
4
1
5
3
6
2
6
2
4
1
7
4
3
2
3
3
5
6
6
6
1
4
1
5
7
7
1
2
Kelas Jarak data uji ke
1-NN 3-NN 7-NN
asli
data latih
2
1
1
1
2
1
2
1
2
1
2
1
2
2
2
1
2
1
1.414
2
2.236
2.236
2.236
2.236
2.828
2.828
3
3
3.162
3.162
3.162
3.162
3.606
4.472
NN
---------------------------------
NN
NN
NN
-----------------------------
NN
NN
NN
NN
NN
NN
NN
---------------------
8
Prediksi dengan K-NN
Untuk K=1
Data latih yang terdekat adalah data nomor 9 (4,4) dengan kelas 1,
maka data uji (3,4) diprediksi masuk kelas 1.
Untuk K=3
Data latih yang terdekat adalah data nomor 9 (4,4) dengan kelas 1,
data nomor 7 (2,3) dan data nomor 4 (3,2) dengan kelas 0, karena
kelas 1 berjumlah 1 dan kelas 0 berjumlah 2 (lebih banyak kelas 0
daripada kelas 1) maka data uji (3,4) diprediksi masuk kelas 0.
Untuk K=7
Data latih yang terdekat adalah data nomor 8 (5,3), 9 (4,4), 14 (4,6)
dengan kelas 1, data nomor 4 (3,2), 6 (1,3), 7 (2,3), dan 11 (1,5)
dengan kelas 0, karena kelas 1 berjumlah 3 dan kelas 0 berjumlah 4
(lebih banyak kelas 0 daripada kelas 1) maka data uji (3,4) diprediksi
masuk kelas 0.
9
K-NN di matlab

Parameter
Sample
Class = knnclassify(Sample, Training, Group, k, distance,
rule)
Group
Keterangan
Matrik dimana baris merupakan data, kolom merupakan fitur. Sample merupakan data uji yang akan
diklasifikasikan kedalam kelas. Matrik Sample harus mempunyai jumlah kolom (fitur) yang sama dengan matrik
Training.
Matrik yang digunakan untuk mengelompokkan baris didalam matrik Sample. Matrik Traning harus mempunyai
jumlah kolom yang sama dengan Sample. Setiap baris dalam matrik Training mempunyai relasi kelas pada baris
yang sama pada matrik Group.
Vektor (matrik 1 kolom) yang setiap barisnya menyatakan kelas dari baris yang sama dalam matrik Training.
k
distance
Jumlah tetangga terdekat yang digunakan untuk klasifikasi. Nilai defaultnya adalah 1.
String yang menyatakan metrik jarak yang digunakan untuk mencari tetangga terdekat, pilihannya:
Training
‘euclidean’, jarak Euclidean (default)
‘cityblock’, jarak Manhattan atau jumlah absolut perbedaan nilai antar fitur
‘cosine’, jarak 1 – cos(sudut antara 2 titik)
‘correlation’, jarak 1 – korelasi diantara titik (nilai sekuen)
rule
‘hamming’, jarak prosentase bit yang berbeda (cocok untuk data biner)
String untuk menetapkan aturan dalam memutuskan bagaimana mengklasifikasikan Sample, pilihannya:
‘nearest’, aturan mayoritas pada titik terdekat (default); ‘random’, aturan mayoritas pada titik secara acak;
‘consensus’, aturan kesepakatan
10
%Nama file: dataset_buatan.m
data = [
%x
123371253461614524
%y
111223334445566677
0.1 0.2 0.1 0.4 0.1 0.2 0.1 0.4 0.1 0.2 0.1 0.4 0.1 0.2 0.1 0.4 0.9 0.8
%kelas
111121121221212222
];
data = data';
%Nama file: contoh_knn.m
dataset_buatan
idx_latih = [1:8 10:18];
idx_uji = [9];
data_latih = data(idx_latih,1:2);
data_uji = data(idx_uji,1:2);
kelas_latih = data(idx_latih,3);
K = 1;
kelas_uji = knnclassify(data_uji, data_latih, kelas_latih, K)
>> contoh_knn
kelas_uji =
2
11
Evaluasi K-NN

Algoritma yang menggunakan seluruh data latih untuk melakukan
proses klasifikasi (complete storage).
◦ Mengakibatkan untuk data dalam jumlah yang sangat besar, proses prediksi
menjadi sangat lama.

Tidak membedakan setiap fitur dengan suatu bobot
◦ Pada ANN (Artificial Neural Network) yang berusaha menekan fitur yang tidak
punya kontribusi terhadapklasifikasi menjadi 0 pada bagian bobot,
◦ NN tidak ada bobot untuk masing-masing fitur.

Menyimpan sebagian atau semua data dan hampir tidak ada proses
pelatihan,
◦ maka K-NN sangat cepat dalam proses training (karena memang tidak ada)
tetapi sangat lambat dalam proses prediksi.
Hal yang rumit adalah menentukan nilai K yang paling sesuai
 K-NN pada prinsipnya memilih tetangga terdekat,

◦ Parameter jarak juga penting untuk dipertimbangkan sesuai dengan kasus
datanya. Euclidean sangat cocok untuk menggunakan jarak terdekat (lurus)
antara dua data, tetapi Manhattan sangat robust untuk mendeteksi outlier
dalam data.
12
FUZZY K-NEAREST
NEIGHBOR IN EVERY
CLASS (FK-NNC)
13
Framework FK-NNC
8



Diperkenalkan oleh Prasetyo
(2012).
FK-NNC menggunakan sejumlah K
tetangga terdekat pada setiap kelas
dari sebuah data uji, bukan K
tetangga terdekat seperti pada KNN dan FK-NN.
FK-NNC menggunakan FK-NN
sebagai basis kerangka kerja,
dimana sebuah data uji mempunyai
nilai keanggotaan pada setiap
kelas dalam interval [0.1].
6
4
2
0
0
2
4
6
8
Tanda dot hitam (solid)
adalah data uji
◦ Jumlah nilai keanggotaan sebuah
data pada semua kelas sama
dengan 1
C
 uij  1 , 0  uij  1
j 1
Tiga tetangga dikelas +
dan tiga tetangga dikelas x
Framework FK-NNC – Cont’d

Jarak data uji xi ke semua K tetangga dari setiap kelas ke-j
dijumlahkan, formula2yang digunakan:
K
Sij   d ( xi , xr )


m1
(4)
r 1
Nilai m disini merupakan pangkat bobot (weight exponent) seperti pada FKNN, nilai m > 1.
akumulasi jarak data uji xi ke setiap kelas digabungkan,
disimbolkan D, formula yang digunakan:D  C S 
(5)
i



j 1
ij
Untuk mendapatkan nilai keanggotaan data uji xi pada setiap
kelas ke-j (ada C kelas), menggunakan formula:
Sij
uij 
(6)
Di
Untuk menentukan kelas hasil prediksi data uji xi, dipilih kelas
dengan nilai keanggotaan terbesar dari data xi. Formula yang
digunakan:
C
y '  arg max (uij )
(7)
j 1
Algoritma FK-NNC

Cari K tetangga terdekat pada setiap kelas,
menggunakan formula
1
pp
N
d ( xi , x j )    xil  x jl 
 l 1

Hitung S sebagai akumulasi jarak K tetangga pada
setiap kelas, menggunakan formula (4)
 Hitung J sebagai akumulasi semua jarak dari CK
tetangga, menggunakan formula (5)
 Hitung u sebagai nilai keanggotaan data pada setiap
kelas, menggunakan formula (6)
 Pilih nilai keanggotaan terbesar menggunakan formula
(7), kelas dengan nilai keanggotaan terbesar menjadi
kelas hasil prediksi untuk data uji tersebut.

Data latih
Contoh
8
6
4
2
0
0
2
4
6
8
Data uji adalah data (3,4), fitur X=3, Y=4.
Akan dilakukan prediksi, masuk dalam
kelas yang manakah seharusnya ?
Gunakan m=2, dan jarak Euclidean !
Data
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
X
1
2
3
3
7
1
2
5
4
6
1
6
1
4
5
2
4
Y
1
1
1
2
2
3
3
3
4
4
5
5
6
6
6
7
7
Kelas
1
1
1
1
2
1
1
2
2
2
1
2
1
2
2
2
2
17
Prediksi dengan K-NN
Jarak data uji (3,4) ke 17 data latih
Nomor
data
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
x
y
1
2
3
3
7
1
2
5
4
6
1
6
1
4
5
2
4
1
1
1
2
2
3
3
3
4
4
5
5
6
6
6
7
7
Kelas
asli
1
1
1
1
2
1
1
2
2
2
1
2
1
2
2
2
2
Jarak data uji
ke data latih
3.6055
3.1622
3
2
4.4721
2.2360
1.4142
2.2360
1
3
2.2360
3.1622
2.8284
2.2360
2.8284
3.1622
3.1622
Setelah diurutkan
Nomor
data
7
4
6
11
13
3
2
1
9
8
14
15
10
12
16
17
5
x
y
2
3
1
1
1
3
2
1
4
5
4
5
6
6
2
4
7
3
2
3
5
6
1
1
1
4
3
6
6
4
5
7
7
2
Kelas Jarak data uji
asli
ke data latih
1
1.414
1
2
1
2.236
1
2.236
1
2.828
1
3
1
3.162
1
3.606
2
1
2
2.236
2
2.236
2
2.828
2
3
2
3.162
2
3.162
2
3.162
2
4.472
18
Perhitungan jarak FK-NNC pada data latih
d
K=1
d-2
K=3
d-2
K=5
d-2
K=7
d-2
3
Kelas
asli
0
1.414
NN
0.5002
NN
0.5002
NN
0.5002
NN
0.5002
3
2
0
2
-
NN
0.2500
NN
0.2500
NN
0.2500
6
1
3
0
2.236
-
NN
0.2000
NN
0.2000
NN
0.2000
11
1
5
0
2.236
-
-
NN
0.2000
NN
0.2000
13
1
6
0
2.828
0.1250
1
0
3
0.1250
-
NN
3
-
NN
3
-
NN
0.1111
2
2
1
0
3.162
-
-
-
NN
1
1
1
0
3.606
-
-
-
0.1000
-
9
4
4
1
1
8
5
3
1
14
4
6
15
5
10
No. data
x
y
7
2
4
1.0000
NN
1.0000
NN
1.0000
NN
1.0000
2.236
-
NN
0.2000
NN
0.2000
NN
0.2000
1
2.236
-
NN
NN
0.2000
NN
0.2000
6
1
2.828
-
0.2000
-
NN
0.1250
NN
0.1250
6
4
1
3
-
-
NN
NN
0.1111
12
6
5
1
3.162
-
-
0.1111
-
NN
0.1000
16
2
7
1
3.162
-
-
-
NN
17
4
7
1
3.162
-
-
-
0.1000
-
5
7
2
1
4.472
-
-
-
-
S0
0.5002
0.9502
1.2752
1.4863
S1
1.0000
1.4000
1.6362
1.8362
D
1.5002
2.3502
2.9114
3.3226
NN
19
,
Hasil peritungan nilai keanggotaan pada kedua kelas sebagai berikut:
Untuk K=1:
u0 
0 .5
 0.3333
1 .5
u1 
1
 0.6667
1.5
Karena u1 > u0, maka data uji diprediksi masuk ke kelas 1
,
Untuk K=3:
u0 
0.9502
 0.4043
2.3502
u1 
1.4000
 0.5957
2.3502
Karena u1 > u0, maka data uji diprediksi masuk ke kelas 1
,
Untuk K=5:
u0 
1.2752
 0.4380
2.9114
u1 
1.6362
 0.5620
2.9114
Karena u1 > u0, maka data uji diprediksi masuk ke kelas 1
Untuk K=7:
,
u0 
1.4863
 0.4473
3.3226
u1 
1.8362
 0.5527
3.3226
Karena u1 > u0, maka data uji diprediksi masuk ke kelas 1
20
FK-NNC di matlab

[prediksi,keanggotaan] = fknnc(data, labels, test, K)
Parameter
data
labels
test
K
prediksi
keanggotaan
Keterangan
Matrik data latih yang digunakan, berukuran MN, dimana M adalah
jumlah data latih, N adalah dimensi data. Baris menyatakan data, kolom
menyatakan fitur.
Matrik berukuran M1 yang menyatakan kelas data latih. Setiap barisnya
menyatakan kelas pada baris matrik data. Nilai untuk label kelas adalah
(1, 2, …, C) untuk setiap data. Tidak diperbolehkan kelas dengan label 0.
Matrik SN yang menyatakan data uji. S adalah jumlah data uji. Jumlah
kolom (fitur) yaitu N harus sama dengan jumlah fitur (kolom matrik data.
Jumlah tetangga terdekat.
Matrik S1 yang menyatakan kelas hasil prediksi untuk setiap data uji
dalam matrik test.
Matrik SC yang menyatakan nilai keanggotaan matrik data uji ke setiap
kelas. C adalah jumlah kelas.
21
Contoh
%Nama file: contoh_fknnc.m
dataset_buatan
idx_latih = [1:8 10:18];
idx_uji = [9];
data_latih = data(idx_latih,1:3);
data_uji = data(idx_uji,1:3);
kelas_latih = data(idx_latih,4);
kelas_uji_asli = data(idx_uji,4);
K = 3;
[y,memberships] = fknnc(data_latih,
kelas_latih, data_uji, K);
display('Kelas hasil prediksi');y
display('Nilai keanggotaan');
display('Kelas 1 | Kelas 2');memberships
>> contoh_fknnc
Kelas hasil prediksi
y=
2
Nilai keanggotaan
Kelas 1 | Kelas 2
memberships =
0.4043
0.5957
22
To Be Continued … Klasifikasi (Season 3)
ANY QUESTION ?
23