Implementasi K-Nearest Neighbour Dengan Optimasi Simple Unweighted Voting Menggunakan PHP

Table of Contents
Algoritma k-nearest neighbor (k-NN atau KNN) adalah sebuah metode untuk melakukan klasifikasi terhadap objek berdasarkan data pembelajaran yang jaraknya paling dekat dengan objek tersebut. Metode ini populer sebagai salah satu metode clustering dalam data mining. Saya sarankan agar teman-teman mencari sendiri saja bagaimana teori dari K-NN ini, karena saya langsung to the point untuk membahas coding-nya. 

Baiklah, saya sengaja lampirkan source code ini menggunakan pemrograman PHP untuk mempermudah teman-teman yang sedang melakukan penelitian dengan metode ini. Saya mengharapkan agar contoh coding k-NN ini dapat teman-teman kembangkan  menjadi lebih baik. Metode ini juga sukses saya terapkan pada penelitian Sistem Informasi Prediksi Harga Kebutuhan Pokok Nasional beberapa waktu yang lalu. 

Berikut ini adalah lampiran source code K-NN dengan optimasi Simple Unweighted Voting :

Keluaran dari program diatas adalah menghasilkan data training yang ditampilkan sebelum hasil perhitungan K-NN. Data training adalah data sampel berupa harga bawang merah berdasarkan 4 parameter utama yaitu Inflasi, Pertukaran rupiah terhadap dollar, PDB dan Uang beredar berjumlah 11 data (indeks 0 hingga 10), dalam penelitian sebenarnya maka data yang digunakan haruslah berjumlah banyak (big data), minimal 100 data agar hasil perhitungan lebih mendekati akurat. 

data training pada coding, indeks 10 digunakan sebagai data testing


Data Training dimunculkan kembali pada hasil keluaran program
Kemudian, program juga menghasilkan perhitungan K-NN, yaitu seperti yang terlihat pada gambar berikut :
Hasil perhitungan K-NN dan Simple Unweighted Voting
Data testing adalah data yang digunakan sebagai data latih untuk memprediksi harga bawang merah, yaitu data indeks ke 10 pada data training, dengan menghasilkan keluaran tetangga terdekat sebanyak 3 data. Perhitungan tetangga terdekat adalah hasil perhitungan oleh jarak euclidean terhadap data training dan testing, menghasilkan 3 tetangga terdekat pada indeks ke 3, 8 dan 9. Jadi, indeks ke 3, 8 dan 9 yang masing-masing harga bawang merahnya adalah 36579, 35256, dan 34750 dianggap sebegai representasi prediksi harga bawang merah berdasarkan input data indeks ke 10. 

Langkah terakhir adalah penentuan optimasi Simple Unweighted Voting. Adapun langkah kerja untuk menentukan optimasi tersebut adalah :
  • Tentukan K (Jumlah tetangga terdekat)
  • Hitung Jarak antara data yang diuji dengan data training.
  • Urutkan berdasarkan jarak terdekat dan tentukan apakah termasuk dalam K (jumlah tetangga terdekat).
  • Hitung Rata-rata dari data yang termasuk dalam K, dengan rumus
    rumus optimasi simple unweighted voting
Sehingga, perhitungan optimasi dapat diperoleh dengan merata-rata harga tetangga terdekat, yaitu 36579, 35256, dan 34750. Maka diperoleh prediksi akhir bawang merah dengan harga 35528.33. Cukup mudah bukan ! Silakan teman-teman kembangkan dengan contoh data pada studi kasus yang lain. 

Baiklah, sekian penjelasan dari implementasi K-NN dan Optimasi Simple Unweighted Voting. Semoga dapat memberikan sedikit pencerahan kepada teman-teman.

Referensi : kode KNN saya nukil dan modifikasi dari www.sitepoint.com

10 comments

Terima kasih telah mampir di blog kami. Jika ingin menghubungi penulis, silakan kirim pesan via email di kitainformatika@gmail.com atau via WA di 087750503014. Jika mood penulis lagi baik, biasanya fast respon.
Comment Author Avatar
January 30, 2016 at 10:32 AM Delete
jossss
Comment Author Avatar
January 30, 2016 at 10:32 AM Delete
jangan lupa kunjungi tegarswasono.web.id...
:v :v
Comment Author Avatar
January 30, 2016 at 10:36 AM Delete
Wah.... ngeblog juga gan tegar !!! ..... sukses ya... (^_^)
Comment Author Avatar
September 25, 2016 at 2:24 PM Delete
gan saya mau tnya ni kalo argoritam KNN ini di terapkan ke arduino kira2 biasa gak ya?
Comment Author Avatar
September 25, 2016 at 5:33 PM Delete
Teknisnya ingin buat aplikasi apa
Comment Author Avatar
IND
December 12, 2016 at 2:54 PM Delete
asik tenan iki :v
Comment Author Avatar
January 14, 2017 at 12:22 AM Delete
Bisa gak diterapkan untuk menentukan jurusan seperti ipa atau Ips ?
Comment Author Avatar
January 14, 2017 at 12:22 AM Delete
Bisa gak diterapkan untuk menentukan jurusan seperti ipa atau Ips ?
Comment Author Avatar
February 5, 2017 at 11:25 AM Delete
Mas fauzan jika menggunakan weight voting itu rumusnya di phpnya seperti apa ya? thanks
Comment Author Avatar
December 24, 2018 at 3:41 AM Delete
Instead, it appears that the reasons for these new voter identification laws are to suppress the vote of otherwise eligible voters by making it inconvenient to obtain such card, and by threatening others that they should not vote because they may be charged with "voter fraud" and be sent to jail.https://victorytips.sitey.me/