Machine Learning: K-Means Clustering

Machine Learning: K-Means Clustering

Catatan penting : Jika Anda benar-benar awam tentang apa itu Python, silakan klik artikel saya ini. Jika Anda awam tentang R, silakan klik artikel ini.

Seperti yang kita ketahui bahwa ML (Machine Learning) secara umum dibagi ke dalam 3 jenis, yaitu supervised, unsupervised dan reinforcement learning. Clustering merupakan ML yang masuk ke dalam kategori unsupervised learning, karena kita tidak memberitahu agen bagaimana cara melakukan sesuatu.

Inti dari K-Means adalah kita mengelompokkan suatu dataset ke dalam beberapa kelompok, sebanyak K buah. Perlu diingat bahwa K adalah jumlah awal, di mana algoritmanya nanti akan mencari pengelompokan (clustering) yang paling baik. Penentuan angka K di tahap awal ini sangat krusial dalam melakukan proses clustering.

Pengelompokan yang paling baik itu seperti apa? Yaitu pengelompokkan di mana semua kelompok yang dibuat bisa mewakili dataset dengan sempurna, yang ditunjukkan oleh jarak antara satu kelompok yang satu dengan yang lain sangat signifikan. Tentu dengan belajar melalui sebuah contoh nyata akan lebih mudah memahaminya.

Tahapan K-Means Clustering:

  1. Memilih jumlah cluster awal (K) yang ingin dibuat.
  2. Memilih titik secara random sebanyak K buah, di mana titik ini akan menjadi pusat (centroid) dari masing-masing kelompok (clusters).
  3. Dari dataset yang kita miliki, buat dataset yang terdekat dengan titik centroid sebagai bagian dari cluster tersebut. Sehingga secara total akan terbentuk clusters sebanyak K buah.
  4. Lakukan kalkulasi, dan tempatkan pusat centroid yang baru untuk setiap cluster-nya. Langkah ini bisa disebut juga dengan istilah penyempurnaan centroid.
  5. Dari dataset yang kita miliki ambil titik centroid terdekat, sehingga dataset tadi menjadi bagian dari cluster tersebut. Jika masih ada data yang berubah kelompok (pindah cluster), kembali ke langkah 4. Jika tidak, maka cluster yang terbentuk sudah baik.

Untuk memberikan gambaran yang jelas (sebelum latihan dengan bahasa phyton atau R), akan saya berikan ilustrasi yang mudah untup setiap langkahnya.

Anggap kita memiliki dataset 2-dimensi. Misal adalah data pelanggan sebuah restoran sebagai berikut:

Grafik pelanggan, sumbu x adalah pendapatan dan sumbu y adalah rating pembelian dia setiap berkunjung ke restoran.

Permasalahan yang sering muncul adalah kita tidak tahu arti dari grafik (kurva) di atas. Apa yang bisa kita lakukan dengan data ini. Apakah bisa digali lagi lebih dalam, sehingga bisa digunakan untuk memaksimalkan teknik pemasaran misalnya.

Langkah 1 (pilih jumlah K, misal K=2)

Langkah pertama adalah memilih jumlah kluster. Misal kita pilih untuk membaginya ke dalam 2 kluster kali ini (tentunya penentuan K bebas, tapi ada metode optimum yang akan kita pakai nanti).

Langkah 2 (tentukan titik pusat untuk masing-masing kluster)

Sekarang kita akan menentukan titik pusatnya. Jadi setiap kluster memiliki titik pusatnya sendiri. Tenang saja, pemilihan titik-titik ini bebas, karena nantinya algoritma K-Means akan merubah posisi tiap titik hingga dicapai solusi paling optimal.

Anggap 2 titik pusat untuk masing-masing kluster adalah sebagai berikut:

Dua titik kluster. Titik merah mewakili pusat dari kluster 1, dan biru untuk kluster 2.

Dengan demikian, maka masing-masing data point akan memilih titik pusat (centroid) yang paling dekat. Jika sudah dipilih maka data point tersebut akan menjadi bagian dari klusternya.

Sebagai tips, untuk melihat data points mana saja yang masuk ke kluster 1 atau 2, maka cukup tarik garis lurus antara 2 titik pusat (garis A warna hijau). Kemudian, cari titik tengah garis A, lalu dari titik tengah tersebut buat garis tegak lurusnya (garis B warna ungu). Maka kita bisa melihat titik mana saja yang masuk kluster 1 (sisi kiri garis B) dan mana saja yang masuk kluster 2 (sisi kanan garis B), seperti ilustrasi di bawah ini:


Tips mengetahui pembagian kluster secara visual.

Langkah 3 (pilih titik pusat kluster yang paling dekat untuk semua dataset)

Berdasarkan pembagian di atas, maka setiap dataset sekarang sudah masuk ke dalam salah satu kluster seperti gambar di bawah ini:

Titik berwarna merah masuk ke kluster 1, dan titik berwarna biru masuk ke kluster 2.

Langkah 4 (Lakukan kalkulasi, pilih titik pusat yang baru. Ulangi sampai semua pembagian titik optimal)

Pada langkah ini, kita melakukan kalkulasi algoritma K-Means, di mana ia akan mencari posisi titik pusat yang paling sesuai, berdasarkan posisi titik awalnya.

Perpindahan titik pusat.

Langkah 5 (Pilih titik pusat terdekat, dan masuk ke dalam kluster tersebut. Jika masih ada perpindahan kluster, kembali ke langkah 4.
Algoritma K-Means akan terus mencari titik pusatnya, sampai 100% pembagian datasetnya optimum.

Untuk melanjutkan membaca silakan klik halaman berikutnya di bawah ini.

Bagikan artikel ini:

Pages: 1 2 3 4

Subscribe
Notify of
guest
63 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Rizki
Rizki
4 years ago

makasih pak, sangat jelas detail dan bisa di jalankan tanpa adanya kesulitan

Eko
Eko
4 years ago

Kalau mengacu pada formula machine learning (Tom M. Mitchell), Formula T,P,E (Task,Performance,Experience) untuk kasus clustering/unsupervised learning ini mengidentifikasinya bagaimana ya pak?

Zulfikar
Zulfikar
4 years ago

cara menampilkan table dataset dan dataframe gimana? thanks

Zulfikar
Zulfikar
Reply to  MB Herlambang
4 years ago

saya kurang paham spyder soalnya saya hanya menggunakan jupyter notebook yg muncul hanya gambar elbow dan hasil clustering nya saja apa ada cara lain jika menggunakan jupyter notebook? Terimakasih pak

Zulfikar
Zulfikar
Reply to  MB Herlambang
4 years ago

kalau tabel basil clustring (y_means) bisa? maaf banya tanya baru belajar? saya coba pake algoritma r sudah bisa cuman install spyder ada error saya ga tau kenapa jadi saya masih penasaran

Zulfikar
Zulfikar
Reply to  MB Herlambang
4 years ago

supaya tahu id mana di cluster mana..karena di website bapak tidak ada keteranganya cluster merah itu id berapa saja dst..terimakasih pak

Zulfikar
Zulfikar
Reply to  MB Herlambang
4 years ago

terimakasih banyak pak infonya sangat membantu semoga ilmunya berkah ya pak 😀

dian samuel
dian samuel
4 years ago

halo pak, saya mau bertanya, dari sekian banyak kolom yang ada dalam dataset, bagaimana menentukan 2 kolom terakhir untuk digunakan dalam kmeans clustering?

dian samuel
dian samuel
Reply to  MB Herlambang
4 years ago

misalnya pak, kita mengacu penggunaan data iris yang sering digunakan, nah dari kebanyakan pengaplikasian iris dataset pada kmeans clustering,variabel yang digunakan adalah petal width dan petal length. apakah ada teknik khusus pak? ataukah di kmeans itu sendiri, sudah memilih variabel mana yang cocok untuk dikelompokkan?

dian samuel
dian samuel
Reply to  MB Herlambang
4 years ago

halo pak, mau bertanya lagi, bagaimana pengerjaan taknik elbow secara manual ya pak?

dian samuel
dian samuel
Reply to  MB Herlambang
4 years ago

terimakasih pak, saya sudah mencoba. Saya mau bertanya kembali, apakah bapak ada memuat artikel tentang k-means yang memakai trick kernel (kernel K-Means)? saya sudah mencari di website ini dan hasilnya not found.

Resty
Resty
4 years ago

Saya bary pertama kali memakai RStudio ini, mu tanya kalau muncul “Error : objeck ‘wcss’ not found’ itu kenapa ya?. Itu muncul nya setelah baris for di Run

Resty
Resty
Reply to  MB Herlambang
4 years ago

Terimakasih Pak, yg itu sudah berhasil dan sudah muncul grafiknya. Cuman saya masih bingung dengan hasilnya, hasil bapak kenapa bisa 50000, 100000 dst…? Sedangkan grafik saya hasilnya 0e+00 dan 4e+10, itu kenapa ya? boleh dibantu lagi pak…

Resty
Resty
Reply to  MB Herlambang
4 years ago

Iya pak membahas k-means

Resty
Resty
Reply to  MB Herlambang
4 years ago

Sudah di eksekusi dan grafiknya sudah muncul. Kalau grafik bapak kan bagian wcss di grafiknya itu mucul angka 50000, 100000, 150000 dst. sedangkan saya muncul di bagian wcss grafiknya itu 0e+00, 4e+10. itu kenapa ya pak? apa itu karena pengaruh data yang dimasukkan?

Resty
Resty
Reply to  MB Herlambang
4 years ago

Iya pak datanya menggunakan data sendiri, jadi tidak ada masalah berarti ya pak? saya kira itu ada error atau apa. Terimakasih banyak pak jawabannya sangat membantu sekali

Ramadhan
Ramadhan
4 years ago

caranya gimana pak? apa eksekusi perbaris? saya error terus

Abdul
Abdul
4 years ago

Aslm pak..mo tanya ttg k-means..
Jika data yg saya punya dlm bentuk data categorical sebanyak 7 fitur dan datanya sebanyak 100 baris..
Bagaimana cara mengubah data categorical ke dlm numeric?
Kl menggunakan python source code nya bagaimana?
Terima kasih..

dede brahma
dede brahma
4 years ago

mas izin belajar dari code nya.
terima kasih buat ilmunya 🙂

Muhammad Taufik
Muhammad Taufik
4 years ago

pak saya mau bertanya kalo untuk data pekanggan hotel bisa di cluster?dan outputnya segementasi pelanggan bisa?saya masih kurang paham pak terimakasih

dian samuel
dian samuel
4 years ago

selamat siang pak, mau bertanya saya punya data facebook untuk user yang melakukan penjualan online baik melalui vidio, status, photo dan link dengan feature status_publis yang berisi tanggal dan waktu publis, dan reaksi terhadap penjualan yakni berupa comment, likes, share. Kemudian setelah saya analisis ternyata status_publis tersebut bisa saya perlebar lagi menjadi hari publis jualan, waktu publis jualan, bulan publis jualan, dan tahun publis jualan dengan satuan yang berbeda-beda. Saya mau bertanya, apakah saya bisa mengelompokkan data saya tersebut menggunakan k-means walaupun satuannya berbeda-beda yakni ada yang satuan bulan, tahun, hari, dan jam serta untuk reaksi seperti commens, likes, shares… Read more »

dian samuel
dian samuel
Reply to  MB Herlambang
4 years ago

oo begitu terimakasih pak. Mau bertanya kembali, apakah bapak pernah membahasa Kernel K-Means?

Linggar bagas
4 years ago

Pak kalau hasil uji k-means pakai silhuette coefficient dan purity measure itu bagaimana penerapannya pada python, mohon bantuanya pak

Ekki Rizki Ramadhan
Ekki Rizki Ramadhan
3 years ago

Hallo pak, Maaf sebelumnya pak, saya ingin bertanya untuk pengukuran kualitas dari clustering. sebenarnya saya sendiri masih bingung dalam hal penerapan Teknik Elbow, silhouette, dan DBI. dan jujur, saya sangat kurang paham dalam statistika karena memang diajarkan hanya untuk digunakan, menurut bapak, dari ketiga metoda diatas yang paling cocok untuk pengukuran clustering itu yang mana ya pak? selain itu untuk keyword dalam mencari di jurnal sekiranya apa ya pak? sudah beberapa belakangan ini saya sedikit buntu. sekian dan terima kasih pak

Ekki Rizki Ramadhan
Ekki Rizki Ramadhan
Reply to  MB Herlambang
3 years ago

Terima kasih pak atas jawabannya. Saya ingin bertanya kembali. Sebelumnya, Saya sudah mencoba ketiganya pak, tapi hasilnya tidak bersinergi. Jika salah satunya hasilnya bagus, apakah saya perlu menggunakan salah satunya saja pak?

Misal, di dalam riset saya silhouette sangat bagus jika k = 2, sedangkan di elbow k=2 & k=3 termasuk, dan pada davies bouldin k=5 yang hasilnya bagus. Nah jika dilihat dari validasinya berarti lebih baik saya memasukkan sillhouette dan elbow ya pak?

enjel
enjel
3 years ago

mas saya mau bertanya tentang Mengimpor dataset dataset = pd.read_csv(‘Pengunjung_mall.csv’) seperti apa

Fitri
Fitri
3 years ago

Maaf mau tanya mengenai line 8 bagian python, kenapa ya harus ada proses slicing?

Fitri
Fitri
Reply to  MB Herlambang
3 years ago

baik pak, tapi bagaimana caranya misal kita memiliki variabel lebih dari 2, misal dengan 5 variabel? apakah masih bisa digambarkan plotnya?
terimakasih….

Fitri
Fitri
Reply to  MB Herlambang
3 years ago

lantas… bagaimana pak caranya mengetahui data kita telah diklasterkan dengan baik, seperti di line 38.

Fitrianingsih
Fitrianingsih
Reply to  MB Herlambang
3 years ago

yaps, maaf pak mau tanya sekali lagi. apakah bapak ada rekomendasi buku mengenai python yg menjelaskan secara lengkap mengenai K-Means Elbow dan Machin learning lainnya? terimakasih pak…

Fitrianingsih
Fitrianingsih
Reply to  MB Herlambang
3 years ago

yappps, terimakasih pak atas jawabannya.
sangat membantu🙂

ardin siregar
ardin siregar
2 years ago

cara menghiyung akurasi dari k means bagaimana pak ?

ranis
ranis
2 years ago

Halo pak saya mau bertanya pada line 8 melakukan slicing menggunakan python. Cara menampilkan kolom tabelnya bagaimana ya pak. Saya menggunakan jupyter kolom tersebut tidak tampil.

ahmad
ahmad
2 years ago

mohon maaf pak. ini kan baru sampai mengelompokan data sesuai kedekatannya.
nah jika saya ingin memasukan data baru (setelah terbentuk klaster) untuk mengetahui, kira2 data yg saya input masuk ke klaster yg mana. apakah bisa?
jika ya… apakah bisa meng-share contoh codenya.. terimakasih

Teguh Juang Sinaga
Teguh Juang Sinaga
1 year ago

Izin bertanya Pak, random_state=42 itu pakai default value ya?, darimana ya dapat 42 dan apakah pengaruh nya kalau kita salah dalam menentukan random_state Pak?, Terimakasih banyak Pak🙏🏻