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

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

9 Responses to "Implementasi K-Nearest Neighbour Dengan Optimasi Simple Unweighted Voting Menggunakan PHP"

  1. jangan lupa kunjungi tegarswasono.web.id...
    :v :v

    ReplyDelete
  2. Wah.... ngeblog juga gan tegar !!! ..... sukses ya... (^_^)

    ReplyDelete
    Replies
    1. gan saya mau tnya ni kalo argoritam KNN ini di terapkan ke arduino kira2 biasa gak ya?

      Delete
    2. Teknisnya ingin buat aplikasi apa

      Delete
  3. Bisa gak diterapkan untuk menentukan jurusan seperti ipa atau Ips ?

    ReplyDelete
  4. Bisa gak diterapkan untuk menentukan jurusan seperti ipa atau Ips ?

    ReplyDelete
  5. Mas fauzan jika menggunakan weight voting itu rumusnya di phpnya seperti apa ya? thanks

    ReplyDelete

Terima Kasih Telah Berkunjung, Silakan Berkomentar...
Kritik dan Saran Teman-Teman Sangat Memotivasi Saya (^_^)

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel