Monday, August 7

Penerapan Algoritma K-Nearest Neighbor pada Pengujian Data Acak


Di jurusan Informatika, terdapat matakuliah Artificial Intelegence (Kecerdasan Buatan) atau disingkat AI. Dengan perkembangan teknologi sekarang, penerapan AI ini sudah banyak sehingga zaman kecerdasan buatan manusia sudai mulai tampak.
Kalian pernah menonton film Iron Man kan?,  Teknologi yang digunakan dalam film tersebut sangat canggih dan mampu berpikir melampau kemampuan manusia penciptanya sendiri. Super komputer itu adalah J.A.R.V.I.S merupakan AI buatan Tony Stark yang berperan sebagai asisten pribadinya. AI ini memiliki kemampuan untuk berkomunikasi dan berinteraksi dengan manusia seperti halnya dengan sesama makhluk hidup. Meskipun film ini masih dalam dunia fantasi, akan tetapi di dunia nyata telah ada yang mirip dengan super komputer J.A.R.V.I.S, yaitu IBM's Watson. Anda bisa melihat di youtube bagaimana AI ini bekerja dalam kompetisi cerdas cermat melawan para manusia yang juga cerdas.

Fokus dengan materi dalam matakuliah AI, metode penerapan AI cukup beragam. Yang akan dibahas dalam artikel ini adalah metode K-Nearest Neighbor (KNN) dalam kasus perhitungan dan pengujian data acak. KNN merupakan metode mengklarifikasikan suatu objek dengan objek yang lain berdasarkan jarak yang terdekat, sehingga metode ini juga disebut metode ketetanggaan. Proses mengklarifikasi objek yang baru memerlukan paramater (K). Parameter itu berguna sebagai acuan berapa jumlah tetangga yang terdekat. Untuk menentukan nilai paramater (K) bisa dengan coba-coba.

Membuat metode KNN bisa menggunakan bervarian bahasa pemrograman, umumnya yang sering digunakan adalah bahasa Phyton, Matlab, dan Java. Ketiga bahasa pemrograman tersebut memiliki konsep bahasa yang simpel dan cocok diterapkan saat pengkodean metode KNN ini. Untuk saat ini kita akan mencoba menggunakan bahasa Matlab, anda bisa mengunduh aplikasinya di situs resminya. Selanjutnya kita akan mengambil contoh data, mari simak penjelasannya di bawah ini.

Image 1

Dari gambar 1 di atas, kita bisa lihat ada dua data yang pertama adalah data training dan data testing. Untuk data training dari kolom B hingga K merupakan sampel data, untuk kolom L merupakan nilai kebenaran data yang hanya terdiri dua hasil yaitu 1 atau 0. Dan di kolom M akan berisi nilai prediksi kebenaran yang akan dibandingkan dengan data yang ada di kolom L. Data training ini kita ambil contoh sebanyak 10 baris. Beralih ke data testing merupakan data yang akan digunakan pada tahap terakhir. Sama halnya data tarining, data testing ini juga tediri dari 12 kolom yaitu dari B-K dan kolom L merupakan nilai kebenaran data yang diuji. Untuk kolom M akan diisi hasil nilai prediksi kebenaran.  Perlu diingat sekali lagi,  bahwa tujuan dari mengolah data menggunakan metode KNN yaitu mengukur persentase (%) akurasi kebenaran dari hasil perdiksi nilai kebenaran (kolom M) yang dibandingkan dengan nilai kebenaran data yang sudah ada (kolom L). 

Proses logika dalam menentukan nilai prediksi bisa dilihat dari gambar di bawah ini:

Image 2

Dari gambar 2 diatas jelas kita asumsikan nilai parameter (K) = 3 . Nilai K tersebut kita akan mengambil tiga nilai jarak paling rendah setelah dihitung berdasarkan rumus di gambar. Misalnya seperti di bawah ini:

Image 3

Gambar 3 di atas bisa diperoleh hasil  nilai prediksi kebenaran berdasarkan nilai parameter K. Khusus untuk tabel berlabel (A) hasil 0, 0, 1 itu diambil dari patokan data training sebelumnya (lihat gambar 2), yang merupakan data kebenaran asli yang dicocokan berdasarkan no barisnya. Sehingga diperolehlah hasil nilai prediksi kebenaran untuk baris ke-1 adalah 0. Selanjutnya cara itu juga dilakukan pada baris ke-2 hingga ke-10. Jadi pada proses ini memang membutuhkan perulangan bersarang dalam kodingannya.

Setelah kita memperoleh semua nilai prediksi kebenaran dari ke 10 baris data training maka akan dibandingkan dengan nilai kebenaran asli yang telah ada sebelumnya. Setelah itu, dihitung jumlah persentasi data prediksi kebenaran dengan data kebenaran yang asli. Dari situ kita bisa memperoleh persentase tingkat akurasi nilai K dalam menghasilkan nilai prediksi yang mendekati nilai kebenaran yang asli.

Jika persentase perbandingan data prediksi yang masih kurang maksimal, bisa diulangi lagi dengan menambah nilai parameter K (5,7,9, dst). Penambahan nilai K sebaiknya angka ganjil, hal itu bertujuan untuk menghindari ambiguitas hasil nilai prediksi. Jika anda telah memperoleh nilai K yang menghasilkan persentase perbandingan nilai prediksi dengan nilai kebenaran hampir mendekati 100% maka dari itu, anda perlu menerapkan nilai K tersebut pada data testing nantinya.

Selanjutnya bagaimana model kodingan menggunakan bahasa matlab, bisa diliat pada source code di bawah ini:


clc
clear all

%--baca file excel
filename = 'train.xlsx';
filename1 = 'test.xlsx';

train = xlsread(filename,1,'B2:K90001');
test = xlsread(filename1,1,'B2:K10001');
[baris,kolom]=size(train);

kelas1 = xlsread(filename,1,'L2:L90001');


%--menentukan nilai k dari total jumlah data
nk = 87;

%data_test
for l=1:10000;
    l
    x1=test(l,:);
for i=1:90000
        z(i) = sqrt(sum((x1-train(i,:)).^2));
end;%--mengakarkan setia elemen matriks hasil

%z=sqrt(z);
z=reshape(z,[],1);
temp = [z kelas1];

%--mensorting elemen pada matriks hasil
m=sortrows(temp);
mat=m(:,2);
nn=mat(1:nk);
knn(l)=mode(nn);
knn = knn';
end

save('testkkk.mat','knn')


Mungkin itu saja yang bisa admin sampaikan pada artikel ini, semoga bisa bermanfaat. Silahkan tinggalkan saran atau komentar di bawah ini.


Artikel Terkait

Penerapan Algoritma K-Nearest Neighbor pada Pengujian Data Acak
4/ 5
Oleh

Berlangganan

Suka dengan artikel di atas? Silakan berlangganan gratis via email

3 komentar

5 February 2018 at 16:49 delete This comment has been removed by the author.
avatar
5 February 2018 at 16:52 delete

pak .. bukan.ya dalam mengambil nilai K .. itu dari jarak yang teringgi ..?! bukan terendah ..?

Reply
avatar
5 February 2018 at 18:34 delete

Menurut yg saya ketahui penggunaan metode knn itu mengambil objek nilai terdekat sehingga nilai K yg diambil setelah melakukan sorting adalah nilai terendah (terdekat)

Reply
avatar