Algoritma K-Means Clustering 17


Algoritma K-Means Clustering adalah salah satu algoritma yang digunakan untuk klasifikasi atau pengelompokan data. Contoh yang dibahas kali ini adalah mengenai penentuan jurusan siswa berdasarkan nilai skor siswa.
Kegunaan pengelompokan data ada beberapa macam. Pada kasus yang dibahas kali ini, data akan dikelompokkan ke dalam kelompok / cluster sehingga data-data yang memiliki kemiripan akan saling terkelompok, dan kemudian dapat dihitung kelompok tersebut merupakan kelompok apa. Contoh kasus pengembangan selanjutnya dari klasifikasi ini adalah menentukan data yang paling tidak cocok berada pada masing-masing cluster. Nantinya dapat ditarik kesimpulan apakah data tersebut dibuang atau dipindah ke cluster lain.



Diasumsikan ada 20 orang siswa, yaitu siswa A sampai dengan T
Masing-masing siswa memiliki rata-rata nilai IPA, IPS, dan Bahasa yang berbeda-beda
Maka tentukan semua siswa tersebut akan masuk ke dalam jurusan apa berdasarkan nilai skor yang dimiliki
Diasumsikan data awal nilai siswa adalah sebagai berikut

Nama Siswa Nilai IPA Nilai IPS Nilai Bahasa
Siswa A 50 60 70
Siswa B 65 80 73
Siswa C 72 70 65
Siswa D 83 65 80
Siswa E 40 82 73
Siswa F 95 71 85
Siswa G 60 74 96
Siswa H 75 75 92
Siswa I 83 55 70
Siswa J 91 60 65
Siswa K 92 91 55
Siswa L 76 80 59
Siswa M 75 65 74
Siswa N 74 76 89
Siswa O 63 79 69
Siswa P 58 93 76
Siswa Q 82 50 80
Siswa R 81 65 88
Siswa S 76 74 70
Siswa T 77 71 55

Langkah pertama adalah memasukkan data-data yang digunakan.
Contoh data awal adalah sebagai berikut:



Sebelum masuk kedalam langkah-langkah pembahasan algoritma, ada beberapa konstanta atau parameter yang harus diketahui, yaitu:
* Tentukan Jumlah Atribut
Diasumsikan dalam kasus ini, jumlah atribut ada 3 buah, yaitu IPA, IPS, Bahasa

* Tentukan Jumlah Cluster
Jumlah Cluster adalah jumlah dari pengelompokan data yang ingin dilakukan
Jumlah Cluster nilainya harus diantara 2 dan jumlah data
Diasumsikan dalam kasus ini, jumlah pengelompokan data ada 3 kelompok, yaitu jurusan IPA, jurusan IPS, jurusan Bahasa

* Tentukan Jumlah Iterasi
Diasumsikan dalam kasus ini, jumlah iterasi adalah 100


Langkah-langkah penggunaan algoritma ini adalah

* Lakukan proses pengelompokan data menggunakan algoritma ini
Penjelasan lebih detail tentang fungsi ini dapat dilihat pada penjelasan skrip dibawah ini (poin 1 – 5)

Memasuki perhitungan utama pada fungsi Cluster

1. Pasang semua data pada cluster secara acak
Pastikan bahwa pada masing-masing cluster harus terdapat minimal 1 buah data

2. Hitung rata-rata untuk semua data yang sudah dipasang secara acak pada cluster
Penjelasan lebih detail tentang fungsi ini dapat dilihat pada penjelasan skrip dibawah ini (poin 2a – 2b)

Memasuki perhitungan utama pada fungsi UpdateMeans

2a. Lakukan perulangan untuk setiap data
Hitung jumlah nilai untuk masing-masing kriteria
Kemudian tambahkan 1 pada jumlah data per cluster untuk cluster tersebut

2b. Bagi jumlah nilai dengan jumlah data per cluster untuk masing-masing atribut

3. Kemudian hitung centroid untuk masing-masing cluster
Centroid adalah data pada masing-masing cluster yang paling mendekati nilai rata-rata yang sudah dihitung sebelumnya
Penjelasan lebih detail tentang fungsi ini dapat dilihat pada penjelasan skrip dibawah ini (poin 3a – 3b)

Memasuki perhitungan utama pada fungsi UpdateCentroids

3a. Lakukan perhitungan pada semua data
Hitung jarak data dengan masing-masing centroid

* Gunakan fungsi ini untuk menghitung jarak dari data dan centroid
metode yang digunakan adalah jarak Euclidean, dengan rumus akar dari (jumlah dari (kuadrat dari (data – centroid)))

3b. Apabila jarak tersebut kurang dari jarak terpendek, ambil data ini sebagai centroid pada cluster tersebut.

Lakukan perulangan selama masih ada data yang berpindah cluster dan iterasi masih kurang dari jumlah iterasi (poin 4 dan 5)

4. Pindahkan semua data yang harus berpindah ke cluster lain
Penjelasan lebih detail tentang fungsi ini dapat dilihat pada penjelasan skrip dibawah ini (poin 4a – 4c)

Memasuki perhitungan utama pada fungsi UpdateCluster

4a. Hitung jarak dengan masing-masing centroid pada masing-masing cluster

4b. Tentukan cluster baru yaitu cluster yang memiliki jarak terpendek

4c. Jika nilai cluster yang baru berbeda dari cluster sebelumnya, maka pindahkan data ini ke cluster yang baru

5. hitung ulang rata-rata untuk cluster dengan isian data tersebut
Dan hitung ulang nilai centroid untuk masing-masing cluster

6. Tampilkan semua data yang sudah dimasukan ke dalam cluster
Hitung nilai skornya untuk masing-masing kriteria dalam cluster tersebut
Ambil nilai skor tertinggi sebagai jawaban jurusan yang seharusnya diambil


Hasil akhir adalah: (klik untuk perbesar gambar)

cmd30b


Contoh modul / source code dalam bahasa VB (Visual Basic) dapat didownload disini:



Jika membutuhkan jasa kami dalam pembuatan program, keterangan selanjutnya dapat dilihat di Fasilitas dan Harga
Jika ada yang kurang paham dengan langkah-langkah algoritma diatas, silahkan berikan komentar Anda.
Selamat mencoba.


Tinggalkan Balasan ke Yahya Batalkan balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *

17 pemikiran di “Algoritma K-Means Clustering

    • pip Penulis

      Dalam algoritma ini, penentuan pusat cluster harus ditentukan secara acak tetapi tetap mengikuti aturan bahwa titik pusat harus memiliki jarak yang cukup dekat dengan masing-masing titik tetangga dalam cluster tersebut. Jika penentuan pusatnya tidak acak, berarti algoritma ini dimodifikasi dengan aturan tambahan, atau ada algoritma lain yang menentukan pusat cluster sehingga tidak perlu dihitung kembali. Jika benar demikian, maka selanjutnya adalah tergantung dari perhitungan algoritma yang digunakan untuk menentukan pusat cluster tersebut.

    • pip Penulis

      Skrip yang saya bagikan pada kasus ini sudah dalam bahasa Visual Basic .NET dan dapat anda ambil secara langsung. Saya sudah mencoba tombol downloadnya dan masih berfungsi dengan baik.

    • pip Penulis

      Tampilan bagaimanakah yang anda maksud? Skrip ini dibuat dengan menggunakan console sehingga tidak memiliki tampilan dalam bentuk form

  • Ridho Darmaizar

    mas misalkan kita mau mengelompokan sebuah gejala
    dimana kriteria gejala nya ada 3 yakni gejala berat, sedang dan ringan . Trus pemilihan bobot nilai nya dari data gejala dimana ada 23 gejala dgn masing-masing gejala sudah ditentukan sendri nilai ny
    jadi logika nya gimana y mas ?, Mohon bantuan nya mas
    trimakasih

    • pip Penulis

      Mohon maaf apakah anda dapat menjelaskan dengan menggunakan contoh konkrit karena saya masih belum memahami pemisalan yang anda sampaikan sebelumnya.

      • Ridho Darmaizar

        misal kan kita ingin mengelompokan seseorang kedalam sebuah klmpok yg trdiri dari 3 klmpok(klompok A,B dan C) mas dgn syarat pengelompokan tsb di seleksi dari 23 kriteria dimana tiap kriteria ada nilai ny untuk sbgai bahan acuan penilain pengelompokan tsb
        jadi yg ingin saya tnyakan logika coding ny gmana y mas klo kita menggunakan K-means ?
        mhon bntuan ny, trimakasih

        • pip Penulis

          Seperti penjelasan saya sebelumnya, saya belum dapat memahami kasus anda apabila belum anda jelaskan menggunakan contoh konkrit. Silahkan anda jelaskan mengenai kelompok A,B,C beserta dengan 23 kriteria yang anda miliki.

        • Ridho Darmaizar

          gini mas , sprti contoh koding di atas agan pakai 3 atribut kan … nh klo atribut ny di bikin 23 atribut dan kelompok cluster terdiri dari 3 kelompok gmana gan bisa gk t kira* mas ?
          mksih

        • pip Penulis

          Karena anda tidak menjelaskan contoh detail, maka saya hanya dapat memperkirakan saja.

          Dengan asumsi penggantian data dari 3 atribut menjadi 23 atribut, maka setiap data yang digunakan harus memiiliki 23 buah nilai kriteria sebagai nilai dari masing-masing atribut. Jumlah Cluser sudah benar sesuai dengan usulan sebelumnya, yaitu 3, karena anda hanya perlu mengklasifikasikan data menjadi 3 buah kelompok. Tanpa mengetahui detail kasus anda, maka skrip yang saya bagikan disini mungkin tidak memerlukan penyesuaian terhadap bagian2 lain selain hal yang sudah saya sampaikan sebelumnya.