Skip to content Skip to sidebar Skip to footer

Pengklusteran K-Nearest Neighbourhood (k-NN) Untuk Penentuan Beasiswa Menggunakan Matlab

Istilah pengklusteran sebenarnya cukup asing bagi saya, namun setelah saya pelajari dengan seksama, ternyata pengklusteran adalah proses klasifikasi. Apa yang diklasifikasikan? klasifikasi yang dimaksud adalah klasifikasi suatu data dengan proses pemisahan yang jelas antara suatu kelas dengan kelas lainya. Secara garis besar, pengklusteran terbagi menjadi pengklusteran kasar dan pengklusteran halus, apa yang membedakan keduanya?

Pengklusteran kasar membandingkan suatu kelas dengan kelas lainnya melalui mekanisme biasa yang tidak melibatkan logika kabur (fuzzy).  Misalkan suatu kelas terbagi menjadi kelas tinggi dan rendah, dua klasifikasi kelas tersebut bernilai jelas tanpa tambahan kelas yang samar (fuzzy), seperti agak tinggi maupun agak rendah. Untuk pengklusteran halus akan saya bahas di lain kesempatan.

Fokus kita kali ini adalah bahasan pengklusteran kasar, asal teman-teman tahu, pengklusteran kasar adalah metode pengklusteran yang mempunyai nama keren bernama K-Nearest Neighbourhood (k-NN), yaitu penentuan klasifikasi berdasarkan nilai terdekat (tetangga terdekat). Prinsipnya, k-NN akan mengklasifikasikan suatu tuple dengan mencari nilai terdekat dari data pelatihan.  Setelah diketahui data terdekatnya maka kelas tuple akan mengikuti kelas data terdekatnya yang telah diketahui terlebih dulu. Jika data terdekatnya banyak yang memiliki kelas “A” misalnya, maka tuple tersebut dapa dipastikan masuk kategori kelas “A”. Daripada bingung membayangkan, coba amati gambar : 

Klasifikasi berdasarkan Tetangga Terdekat
Gambar diatas berisikan dua klasifikasi kelas yang bernilai tegas, yaitu kelas "Kotak Biru" dan kelas "Segitiga Merah", Diinputkan sebuah nilai tes "Bulat Hijau". Harapannya, metode k-NN akan mengklasifikasikan "Bulat Hijau" masuk pada kelas yang mana? Sesuai dengan hasil gambar, metode k-NN memberikan hasil bahwa "Bulat Hijau" lebih mengarah pada klasifikasi kelas "Segitiga Merah" karena melalui jangkauan tertentu, didapatkan tetangga terdekat yang mirip adalah "Segitiga Merah" sebanyak dua buah, sedangkan "Kotak Biru" sebatas satu buah. Kesimpulannya, "Bulat Hijau" adalah bagian dari kelas "Segitiga Merah". 

Metode k-NN tidak memerlukan pelatihan. Maka, agar mampu mengklasifikasikan, data yang dijadikan dasar klasifikasi harus disertai dengan target. Dari situlah kita dapat menarik benang merah bahwa k-NN masuk dalam kategori metode supervised (terawasi). Saya harap, teman-teman dapat mempelajari teori klustering k-NN melalui referensi lain yang lebih lengkap dan detail. 

Implementasi k-NN terhadap studi kasus

Studi kasus yang akan kita angkat dan diintegrasikan metode k-NN adalah kasus penentuan beasiswa. Syarat untuk mendapatkan beasiswa secara umum adalah lolos seleksi Tingkat Kemiskinan (TK) dan Indeks Prestasi Kumulatif (IPK). Untuk itu, saya akan dapatkan data hasil beasiswa periode sebelumnya sebagai data acuan untuk memutuskan hasil beasiswa pada system yang akan kita buat saat ini, sebenarnya data ini saya buat sendiri sebagai sampel saja. Namun, saya sarankan, jika teman-teman berkeinginan mengembangkan untuk aplikasi data mining, maka data yang digunakan tidak cukup seperti data saya ini, melainkan harus menyediakan data berjumlah besar (big data) minimal 100 record. Berikut ini adalah data acuan beasiswa yang saya buat :  


Kolom pertama adalah Indeks Prestasi, kolom kedua adalah Tingkat Kemiskinan, sedangkan kolom terakhir adalah target, yaitu hasil penentuan beasiswa. Hasil 0 berarti gagal, dan hasil 1 berarti lolos. Simpan file tersebut dalam format .dat agar dapat dideteksi oleh Matlab, file saya simpan dengan nama nilai.dat. Letakkan satu folder dengan directory aplikasi Matlab, agar dapat dikenali. Buka Command Window matlab dan ketikkan perintah load untuk mengambil data. 


Saya ingatkan lagi, k-NN tidak memerlukan pelatihan seperti algoritma-algoritma soft computing lain. Data yang akan kita uji hanya dicarikan nilai terdekatnya dengan klasifikasi kelas "0" atau "1" saja. Untuk mengetahui kinerja k-NN, kita coba dengan menginputkan nilai 3 untuk IPK dan 2 untuk Tingkat Kemiskinan. Fungsi Matlab untuk metode k-NN adalah fungsi classify. 

Format umumnya adalah class = classify(sample,training,group), bentuk implementasinya dapat teman-teman lihat sebagai berikut : 

Hasil keluaran dari variabel class adalah hasil perhitungan dari fungsi classify, yang menghasilkan nilai akhir "1", yang jika dikaitkan dengan penentuan beasiswa, maka input IPK 3 dan Tingkat Kemiskinan 2 lolos untuk mendapatkan beasiswa. 

Aplikasi GUI k-NN pada Matlab

Setelah membuat simulasi sederhana, maka saya tertarik untuk membuat aplikasi GUInya agar terlihat lebih meyakinkan, hehehe. Program GUI untuk implementasi metode k-NN saya rancang seperti berikut : 


Komponen terpenting yang mempengaruhi source code antara lain : 

Edit Text IPK, saya namakan IPK
Edit Text Tingkat Kemiskinan, saya namai TK
Edit Text Hasil Penentuan, namanya hasil

Source code berikut saya inputkan dalam fungsi button "penentuan beasiswa" : 

Koding diatas intinya serupa dengan koding simulasi sederhana diatas tadi, cuma sedikit dipoles, biar lebih berstamina. Hasil dari rancangan GUI program plus penambahan source code adalah seperti ini : 


So, program pun siap untuk kita uji coba, mari kita isikan dengan data simulasi tadi, apakah program mampu memberikan keputusan yang sama? Kita uji dengan input IPK 3 dan tingkat kemiskinan 2. 


Hasilnya, program mampu memberikan keputusan sesuai dengan harapan, oleh karena itu penelitian  simpel ini dapat saya simpulkan bahwa metode k-NN dapat menjadi metode alternatif sebagai  metode pendukung keputusan walaupun metode ini tidak menggunakan proses training seperti algoritma lain. Saya harapkan, teman-teman dapat mengembangkan metode ini untuk diimplementasikan pada permasalahan yang jauh lebih kompleks agar memberikan manfaat lebih bagi kemaslahatan bersama. 

Sekian, semoga bermanfaat ya... 

Salam Hangat 

19 comments for "Pengklusteran K-Nearest Neighbourhood (k-NN) Untuk Penentuan Beasiswa Menggunakan Matlab"

  1. selamat pagi mas.
    sya sdang mngerjakan TA nah kbetulan sya mnggunakan metode KNN ini, sya mmbuat aplikasi GUI untk mmbagi kualitas mnjadi 3 buah nah sya bngungnya cra mmnentukan pngkelasanya sprti apa dan bgaimnakah cra mnentukan rntang untuk pngkelsannya mas.
    terima kasih sebelumnya dan selamat pagi.

    ReplyDelete
    Replies
    1. Bisa itu mas, penentuan matang harus melihat referensi..

      Delete
  2. gmna cra simpen file dari notepad ke matlabx mas ?

    ReplyDelete
    Replies
    1. file notepadnya, simpan dengan ekstensi (dot) dat, misal data.dat, lalu di-load di matlab

      Delete
  3. ow ya mas mau nanyak lagi nih,ini adalah contoh script yg sya temukan.

    proyek=guidata(gcbo);
    [namafile,direktori]=uigetfile({‘*.jpg’;’*.*’},’Buka Citra’);
    I=imread(strcat(direktori,namafile));
    set(proyek.figure1,’CurrentAxes’,proyek.axes1);
    set(imshow(I));
    set(proyek.axes1,’Userdata’,I);
    set(proyek.figure1,’Userdata’,I);

    apakah mksud dri penambhan Userdata dan CurrentAxes dri script ini dan apakah setiap script gui yg kita buat hrus menggunakannya ???

    ReplyDelete
  4. kalau boleh tau pembobotan untuk atribut IPK dan Tingkat kemiskinan nya gimana ya?

    ReplyDelete
  5. itu semisal tidak memakai GUI bisakh ?

    ReplyDelete
  6. mas itu pas di running kok gak bisaa yaa padahal uda ngikuti cara di atas..
    keterangannya eror gtu mas.
    mohon bantuannya mas.. trimakasih

    ReplyDelete
  7. This comment has been removed by the author.

    ReplyDelete
  8. mas bisa minta sourcode nya buat refrensi uda nyoba beberapa kali tapisaya gagal terus.
    Fajrihalfian@gmail.com

    ReplyDelete
  9. eror in ==> @ (hobject,eventdata)kelompok('pushbutton1_callback',hobject,evendata,guidata(hobject))
    ??? eror while evaluating uicontrol callback

    mas ada pin ato wa pengen belajar soalnya saya kuliah di malang juga mas. trimakasih

    ReplyDelete
    Replies
    1. buka laman ABOUT ME mas, disana ada nomor WA saya

      Delete
  10. Dari penjelasan di atas, dapat dilihat bahwa data tersebut merupakan data calon yang lolos dan yang tidak lolos.
    bagaimana jika data yang kita miliki hanya merupakan data penerima. apakah pengujian cross validation ini bisa digunakan?? terima kasih sebelumnya.

    ReplyDelete