Anda di halaman 1dari 14

Nisrina Nabella Putri_2514100107

K-Nearest Neighbor dan Support Vector Machine


SVM merupakan salah satu metode klasifikasi pada 2 kelas dengan mecari fungsi klasifier
yang optimal. SVM termasuk dalam ketegori supervised learning dan mampu menghasilkan
global optimum. Berikut ini merupakan formulasi matematis dari SVM :
1
Fungsi objektif : 𝑀𝑖𝑛 |𝑤|2
2

Konstrain : 𝑦𝑖(𝑤𝑥𝑖 + 𝑏) ≥ 1, 𝑖 = 1, …
Pada SVM ini akan menggunakan fungsi kernel pada metode SVM. Bentuk dari pembatas 2
dimensi adalah garis sedangkan untuk 3 dimensi adalah hyperplane. Hyperplane disini adalah
berupa bidang. Pengerjaan dari klasifikasi ini akan dilakukan dengan 4 jenis kernel yakni :
1. Polynomial 2 Parameter
2. Polynomial 3 Parameter
3. Radial Basis Function 1 Parameter
4. Radial Basis Function 2 Parameter
Berikut ini merupakan langkah-langkah dalam menggunakan VSM:
1. INPUT DATA
Data yang digunakan pada tugas ini adalah data fisheriris pada matlab dengan data.
Data yang digunakan merupakan data versicolor dan virginica. Berikut merupakan cara
untuk mendapatkan data fisheriris pada Matlab.
>> load fisheriris
Data yang digunakan adalah 100 data, dengan rincian 50 data versicolor dan 50 data
virginica. Berikut ini contoh data versicolor

Berikut ini contoh data virginica

1
Nisrina Nabella Putri_2514100107

Data yang digunakan sebagai data training adalah 40 data awal pada masing-masing
data. Data yang digunakan sebagai data testing adalah 10 data akhir pada masing-
masing data.

2. Membuat matrik K
Berikut ini rumus yang harus dimasukakan kedalam command prompt
n=length(X);
>> for i=1:n
for j=1:n
K(i,j)=((X(i,:)*X(j,:)')+1)^2;
end
end
Matriks ini akan bernilai 80x80
3. Membuat matrik Hessian
Matriks Hessian adalah perkalian matriks Kernel dengan perkalian antar label.
>> for i=1:n
for j=1:n
H(i,j)=Y(i)*Y(j)*K(i,j);
end
end
Matriks ini akan bernilai 80x80
4. Input Quadprog
Q = quadprog(H,f,A,b,Aeq,beq,LB,UB)
K : Matriks Kernel
H : Matriks Hessian
F : Fungsi tujuan

A : Matriks kontrain ketidakpersamaan


B : Right Hand Side dari matriks A
Aeq: Matriks koefisien kontrain persamaan
Beq: Right Hand side dari kontrain Ae

2
Nisrina Nabella Putri_2514100107

5. Menentukan Support Vector


Untuk menentukan support vector, yaitu data training set yang memiliki nilai alpha
lebih dari 0.0001. berikut perintah yang harus dimasukkan ke dalam software Matlab:
function [alpha, b0,nsv] = svc(X,Y,ker,par,C)
%SVC Support Vector Classification
% Parameters: X - Training inputs
% Y - Training targets
% ker - kernel function
% C - upper bound (non-separable case)
% nsv - number of support vectors
% alpha - Lagrange Multipliers
% b0 - bias term

6. Menampilkan hasil testing


function [yt,ya] =
svcoutput(X,Y,tstX,ker,par,alpha,b0,actfunc)
%SVCOUTPUT Calculate SVC Output
%
% Usage: predictedY =
svcoutput(trnX,trnY,tstX,ker,alpha,bias,actfunc)
%
% Parameters: X - Training inputs
% Y - Training targets
% tstX - Test inputs
% ker - kernel function
% beta - Lagrange Multipliers
% bias - bias

3
Nisrina Nabella Putri_2514100107

1. Polynomial 2 Parameter
[alpha, b0,nsv] = svc(X,Y,'poly',2)
[alpha, b0,nsv] =

1.0e+03 *

0.0000 0.2507 0.0000


0.0000 0.0000 0.0000
0.0000 0.0000 0.0000
0.0000 0.0000 0.0000
0.0000 0.0000 0.0000
0.0000 0.0000 0.3077
0.0000 1.6338 0.0000
0.0000 0.0000 0.0000
0.0000 0.0000 0.0000
0.0000 0.0000 0.0000
0.0000 0.0000 0.0000
0.0000 0.0000 0.0000
0.0000 0.0000 0.3775
0.0000 0.0000 0.0000
0.0000 0.0000 0.0000
0.0000 0.0000 0.0000
0.0000 0.1042 0.0000
0.0000 0.0000 0.0000
0.0000 0.0000 0.0000
0.0000 0.2567 1.6891
0.2027 0.0000 0.0000
0.0000 0.0000 0.0000
0.6185 0.0000 0.0000
0.1673 0.0000 0.0000
0.0000 0.0000 0.1379
0.0000 0.0000 0.0000
0.0000 0.0000

b0 =
-184.7409
nsv =
11
[yt,ya] = svcoutput(X,Y,P,'poly',2,alpha,b0)

yt =

1 1
1 1
1 1

4
Nisrina Nabella Putri_2514100107

1 -1
1 -1
1 -1
1 -1
-1 -1
-1 -1
-1 1

>> [Yt' yt]

ans =

1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 1

>> beda1=find(Yt'~=yt)

beda1 =

20

>> length(beda1)

ans =

5
Nisrina Nabella Putri_2514100107

2. Polynomial 3 Parameter

[alpha, b0,nsv]= svc(X,Y,poly,3)


[alpha, b0,nsv]=

0.0000 1.0811 0.0000


0.0000 0.0000 0.0000
0.0000 0.0000 0.0000
0.0000 0.0000 0.0000
0.0000 0.0000 0.0000
0.0000 0.0000 1.1740
0.0000 6.4305 0.0000
0.0000 0.0000 0.0000
0.0000 0.0000 0.0000
0.0000 0.0000 0.0000
0.0376 0.0000 0.0000
0.0000 0.0000 0.0000
0.0000 0.0000 1.1432
0.0000 0.0000 0.0000
0.0000 0.0000 0.0000
0.0000 0.0000 0.0000
0.0000 0.5198 0.0000
0.0000 0.0000 0.0000
0.0000 0.0000 0.0000
0.0000 0.9867 6.0416
1.1252 0.0000 0.0058
0.0000 0.0000 0.0000
2.0877 0.0000 0.0000
0.5209 0.0000 0.0000
0.0000 0.0000 1.4119
0.0000 0.0000 0.0000
0.0000 0.0000
b0 =
-83.3372
nsv =
13
[yt,ya] = svcoutput(X,Y,P,'poly',3,alpha,b0)
yt =
1 1
1 1

6
Nisrina Nabella Putri_2514100107

1 -1
1 -1
1 -1
1 -1
1 -1
1 -1
-1 -1
-1 1
>> [Yt' yt]

ans =

1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 1

>> beda1=find(Yt'~=yt)

beda1 =
20
>> length(beda1)
ans =

7
Nisrina Nabella Putri_2514100107

3. Radial Basis Function 2 Parameter


[alpha, b0,nsv] = svc(X,Y,'RBF',2)
alpha =
1.0e+04 *
0.0000 0.3079 0.0000
0.0000 0.0000 0.0000
0.0000 0.0000 0.0000
0.0210 0.0000 0.0000
0.0000 0.0000 0.0000
0.0000 0.0000 0.3054
0.0000 1.1258 0.0000
0.0000 0.0000 0.0000
0.0000 0.0000 0.0000
0.0025 0.0000 0.0000
0.0000 0.0000 0.0000
0.0000 0.0000 0.0000
0.0000 0.0000 0.0000
0.0000 0.0000 0.1563
0.0000 0.1153 0.0000
0.0000 0.0000 0.0000
0.0000 0.0000 0.0000
0.0000 0.0000 0.0000
0.0000 0.0000 0.0000
0.0000 0.0330 1.0752
0.4397 0.0000 0.0000
0.0000 0.0000 0.0081
0.4648 0.0000 0.0000
0.0000 0.0000 0.0000
0.0000 0.0000 0.6684
0.0000 0.0000 0.000
0.0000 0.0000
8
Nisrina Nabella Putri_2514100107

b0 =
4.4137
nsv =
13
[yt,ya] = svcoutput(X,Y,P,'RBF',2,alpha,b0)

yt =
1 -1
1 1
1 -1
1 -1
1 -1
1 -1
1 -1
1 -1
1 -1
1 1
[Yt' yt]
ans =
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
-1 -1

9
Nisrina Nabella Putri_2514100107

-1 1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 1
Beda2=find(Yt'~=yt)

Beda2 =
20
>> length(beda2)
ans =

4. Radial Basis Function 3 Parameter


[alpha, b0,nsv] = svc(X,Y,'RBF', 3)
alpha =

1.0e+04 *

0.0000 0.0370 0.0000


0.0000 0.0000 0.0000
0.0000 0.0000 2.4121
0.1526 0.0000 0.0000
0.0000 0.0000 2.2922
0.0000 0.0000 0.0000
0.0000 0.0000 0.0000
0.0000 0.0000 0.0000
0.0000 0.0000 0.0000

10
Nisrina Nabella Putri_2514100107

1.7282 0.0000 0.0000


0.0000 0.2566 0.0000
0.0000 0.0000 0.0000
0.0000 0.0000 0.0000
0.0000 0.0000 1.1606
0.0000 0.0000 0.0000
5.8779 0.0000 0.0000
0.0000 0.0000 0.0000
0.0000 0.0000 0.0000
0.0000 0.0000 0.0000
0.0000 0.0000 5.6204
0.0000 0.0000 0.0000
0.0000 0.0000 0.0309
0.0383 0.0000 0.0000
0.2741 1.5639 0.0000
0.0000 0.0000 3.5551
0.0000 0.0000 0.0000
0.0000 0.0000

b0 =
19.2514
[yt,ya] = svcoutput(X,Y,P,'RBF',3,alpha,b0)
yt =
1
1 1
1 1
1 -1
1 1
1 -1
1 -1
1 -1

11
Nisrina Nabella Putri_2514100107

-1 -1
-1 1
-1
[Yt' yt]
ans =
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
-1 -1
-1 1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 1
Beda3=find(Yt'~=yt)

Beda3=
20
>> length(beda3)
ans =

12
Nisrina Nabella Putri_2514100107

K-Nearest Neighbor
K-Nearest Neigbor merupakan salah satu teknik klasifikasi menggunakan data training
dan data testing. Perhitungan jarak digunakan untuk menghitung antara jarak data
testing ke data training. Perhitungan jarak yang digunakan pada tugas ini adalah jarak
Euclidean sebagai berikut :

𝑑(𝑥, 𝑦) = |𝑥 − 𝑦|2 = √∑(𝑥𝑖 − 𝑦𝑖)2

Matlab
>> X=[meas(51:90,:);meas(101:140,:)]
>>Y=[ones(40,1);2*(ones(40,1))]
>>P=[meas(91:100,:);meas(141:150,:)]
>> kelasknn= knnclassify(P,X,Y,3)
kelasknn =

1
1
1
1
1
1
1
1
1
1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
Perbandingan Metode
No Poly, 1 Poly, 2 RBF, 2 RBF, 3 KNN
1 1 1 1 1 1
2 1 1 1 1 1
3 1 1 1 1 1
4 1 1 1 1 1
5 1 1 1 1 1
6 1 1 1 1 1
7 1 1 1 1 1

13
Nisrina Nabella Putri_2514100107

No Poly, 1 Poly, 2 RBF, 2 RBF, 3 KNN


8 1 1 1 1 1
9 1 1 1 1 1
10 1 1 1 1 1
11 -1 -1 1 1 -1
12 -1 -1 -1 -1 -1
13 -1 -1 -1 -1 -1
14 -1 -1 -1 -1 -1
15 -1 -1 -1 -1 -1
16 -1 -1 -1 -1 -1
17 -1 -1 -1 -1 -1
18 -1 -1 -1 -1 -1
19 -1 -1 -1 -1 -1
20 1 1 1 1 -1
Miss 1 1 2 2 0

Dari perbandingan ini, data yang mengalami missklasifikasi adalah virginica. Dari
perbandingan juga dapat dilihat metode yang baik akan menghasilkan misklasifikasi
terkecil yakni KNN(3) dengan misklasifikasi 0.

14

Anda mungkin juga menyukai