Clustering Analysis

My Skill
11 min readMay 19, 2023

--

Data Analysis Series from Data Science & Data Analysis Path MySkill.id

A. Definisi Clustering

Clustering analysis atau analisis pengelompokan adalah teknik dalam data mining dan statistik untuk mengelompokkan data atau objek ke dalam kelompok-kelompok atau kluster-kluster berdasarkan kemiripan atau kesamaan antara mereka. Clustering analysis sering digunakan dalam berbagai bidang seperti ilmu sosial, ekonomi, ilmu biologi, dan teknik.

Contoh :

Apabila memiliki dataset berisi informasi tentang pelanggan sebuah perusahaan ritel, termasuk usia, jenis kelamin, pendapatan, jumlah pembelian, dan sebagainya.

Tujuannya adalah untuk memahami profil pelanggan dan mengelompokkan mereka ke dalam kelompok-kelompok berdasarkan karakteristik mereka.

Dalam hal ini, kita dapat menggunakan clustering analysis untuk mengelompokkan pelanggan berdasarkan kemiripan mereka dalam hal usia, jenis kelamin, dan pola pembelian. Dengan membagi pelanggan menjadi kelompok-kelompok yang homogen, perusahaan dapat mengembangkan strategi pemasaran yang lebih efektif dan meningkatkan kepuasan pelanggan.

Misalnya, hasil analisis clustering dapat menunjukkan bahwa pelanggan yang lebih tua cenderung membeli produk-produk tertentu dengan frekuensi lebih tinggi, sementara pelanggan yang lebih muda cenderung membeli produk-produk yang lebih trendy dan mode. Dengan mengetahui ini, perusahaan dapat mengembangkan strategi pemasaran yang lebih sesuai untuk setiap kelompok pelanggan, seperti mengirimkan katalog produk berbeda ke kelompok yang berbeda, menawarkan diskon khusus, atau membuat kampanye iklan yang berbeda untuk setiap kelompok.

Macam — macam Algoritma Clustering

Ada banyak jenis algoritma clustering yang tersedia, masing-masing dengan karakteristik dan keunggulan yang berbeda. Berikut adalah beberapa di antaranya :

  1. K-Means Clustering: K-Means adalah salah satu algoritma clustering yang paling populer dan paling umum digunakan. K-means bekerja dengan mempartisi data ke dalam kelompok-kelompok atau kluster-kluster yang saling berdekatan berdasarkan jarak atau kemiripan antara data.

Contoh :

Mengelompokkan data pelanggan berdasarkan pengeluaran mereka di toko-toko ritel. Dalam hal ini, algoritma K-Means dapat digunakan untuk mengelompokkan pelanggan ke dalam kelompok-kelompok yang berbeda berdasarkan jumlah pengeluaran mereka, sehingga perusahaan dapat mengembangkan strategi pemasaran yang lebih efektif.

2. Hierarchical Clustering: Hierarchical mengelompokkan data secara bertahap dengan membangun pohon dendogram atau diagram berjenjang yang menunjukkan hubungan antara kelompok-kelompok. Hierarchical clustering dapat berupa agglomerative (penggabungan) atau divisive (pemisahan).

Contoh :

Mengelompokkan data genetik untuk memahami hubungan antara spesies yang berbeda. Dalam hal ini, algoritma hierarchical clustering dapat digunakan untuk membangun pohon dendogram atau diagram berjenjang yang menunjukkan hubungan antara spesies.

3. DBSCAN (Density-Based Spatial Clustering of Applications with Noise): Algoritma ini mengelompokkan data dengan memperhitungkan kerapatan atau kepadatan data dalam ruang. DBSCAN dapat menangani data yang memiliki noise atau outlier.

Contoh :

Mengelompokkan data lokasi pelanggan dalam sebuah kota. Dalam hal ini, algoritma DBSCAN dapat digunakan untuk mengelompokkan pelanggan berdasarkan lokasi mereka dalam kelompok-kelompok yang berdekatan dan memperhitungkan kepadatan atau kerapatan data di sekitarnya.

4. Mean Shift Clustering: Algoritma ini bekerja dengan mencari titik pusat (mean) dalam ruang fitur dan menggeser titik tersebut hingga mencapai maksimum kepadatan data di sekitarnya. Mean shift clustering dapat digunakan untuk data dengan distribusi tidak normal.

Contoh :

Mengelompokkan data citra(gambar) untuk membedakan objek yang berbeda dalam gambar. Dalam hal ini, algoritma Mean Shift Clustering dapat digunakan untuk mengelompokkan piksel-piksel dalam citra ke dalam kelompok-kelompok yang berdekatan dan memiliki kepadatan tertinggi.

5. Fuzzy C-Means Clustering: Algoritma ini memungkinkan setiap data masuk ke dalam kelompok dengan probabilitas tertentu, sehingga data dapat dikelompokkan ke dalam kelompok yang tumpang tindih atau ambigu. Fuzzy C-Means Clustering cocok untuk data yang tidak jelas atau ambigu.

Contoh :

Mengelompokkan data survei untuk memahami kecenderungan dan preferensi konsumen terhadap produk tertentu. Dalam hal ini, algoritma Fuzzy C-Means Clustering dapat digunakan untuk mengelompokkan konsumen ke dalam kelompok-kelompok dengan probabilitas tertentu berdasarkan preferensi mereka terhadap produk tertentu.

6. Spectral Clustering: Algoritma ini menggunakan metode pemrosesan graf untuk mengelompokkan data. Spectral Clustering mengubah data menjadi ruang dimensi rendah dan kemudian mengelompokkan data ke dalam kelompok-kelompok atau kluster-kluster.

Contoh :

Mengelompokkan data teks untuk memahami topik atau kategori dari dokumen-dokumen tertentu. Dalam hal ini, algoritma Spectral Clustering dapat digunakan untuk mengelompokkan dokumen ke dalam kelompok-kelompok yang berbeda berdasarkan kemiripan topik atau kategori mereka.

7. Affinity Propagation Clustering: Algoritma ini mengelompokkan data dengan memilih titik-titik pusat dan menyebar informasi di antara mereka untuk menentukan kelompok yang optimal. Affinity Propagation Clustering dapat menangani data dengan ukuran kelompok yang berbeda-beda.

Contoh :

Mengelompokkan data transaksi keuangan untuk mendeteksi aktivitas kejahatan seperti pencucian uang. Dalam hal ini, algoritma Affinity Propagation Clustering dapat digunakan untuk mengelompokkan transaksi keuangan ke dalam kelompok-kelompok yang berbeda berdasarkan pola dan kemiripan aktivitas.

K-Means

K-Means adalah salah satu algoritma clustering yang paling populer dan sering digunakan. Algoritma K-Means bekerja dengan mengelompokkan data ke dalam kelompok-kelompok yang homogen berdasarkan jarak antara titik data dalam kelompok tersebut.

Cara kerja algoritma K-Means adalah sebagai berikut:

1. Langkah awal adalah menentukan jumlah kelompok yang diinginkan dan menentukan titik awal atau pusat untuk setiap kelompok secara acak.

2. Setiap titik data akan dihitung jaraknya terhadap titik pusat kelompok terdekat.

3. Setiap titik data kemudian dikelompokkan ke dalam kelompok dengan pusat terdekat.

4. Setiap kelompok kemudian akan memiliki pusat baru berdasarkan rata-rata dari semua titik data di dalam kelompok.

5. Langkah 2 sampai 4 akan diulang-ulang hingga titik pusat kelompok tidak berubah.

K-Means sering digunakan pada data numerik, dan khususnya ketika jumlah kelompok yang diinginkan telah diketahui. Algoritma ini dapat digunakan untuk mengklasifikasikan data dalam berbagai bidang seperti data pelanggan, data geospasial, data ekonomi, dan banyak lagi.

Contoh :

Sebuah perusahaan ingin melakukan segmentasi pelanggan untuk meningkatkan efektivitas pemasaran. Perusahaan tersebut memperoleh data dari pelanggannya termasuk umur, pendapatan, tingkat pendidikan, dan sebagainya. Mereka ingin membagi pelanggan mereka ke dalam kelompok-kelompok berdasarkan karakteristik demografi ini, dan menggunakan informasi ini untuk mengembangkan strategi pemasaran yang lebih efektif.

Dalam kasus ini, perusahaan dapat menggunakan algoritma K-Means untuk membagi pelanggan mereka ke dalam kelompok-kelompok berdasarkan karakteristik demografi sehingga dapat memahami pelanggan mereka dengan lebih baik dan mengembangkan strategi pemasaran yang lebih efektif.

B. K-Means with Python

Dengan menggunakan Google Colab mari kita melakukan praktik K-Means menggunakan bahasa Python , Berikut adalah langkah-langkahnya :

  1. Library

import matplotlib.pyplot as plt

import seaborn as sns

import numpy as np

from sklearn.datasets import make_blobs

from sklearn.cluster import KMeans

- `matplotlib.pyplot` adalah library untuk membuat visualisasi grafik dalam Python. Dalam kode tersebut, `plt` digunakan untuk menampilkan hasil clustering dalam bentuk grafik.
- `seaborn` adalah library Python untuk visualisasi data statistik. Dalam kode tersebut, `sns` digunakan untuk mempercantik tampilan visualisasi grafik.
- `numpy` adalah library Python untuk komputasi numerik. Dalam kode tersebut, `np` digunakan untuk mengolah data numerik.
- `make_blobs` adalah fungsi dalam library `sklearn.datasets` untuk menghasilkan data dummy berdasarkan distribusi Gaussian. Fungsi ini digunakan dalam kode tersebut untuk menghasilkan data untuk melakukan clustering.
- `KMeans` adalah kelas dalam library `sklearn.cluster` yang menerapkan algoritma K-Means untuk melakukan clustering pada data.

Jadi, keseluruhan library yang di-import dalam kode tersebut digunakan untuk menghasilkan data dummy, melakukan clustering pada data, dan menampilkan hasil clustering dalam bentuk grafik.

2. Membangun Dataset

X, y_true = make_blobs(n_samples=300,

centers=4,

cluster_std=0.60,

random_state=0)

plt.scatter(X[:, 0], X[:, 1], s=50);

Scatterplot dari codingan membangun datasebt

Kodingan `X, y_true = make_blobs(n_samples=300, centers=4, cluster_std=0.60, random_state=0)` digunakan untuk menghasilkan dataset dummy yang digunakan sebagai contoh untuk melakukan clustering menggunakan algoritma K-Means. Dataset dummy tersebut dibuat dengan menggunakan fungsi `make_blobs` yang menghasilkan titik-titik data yang berada di sekitar beberapa pusat (centers) yang ditentukan sebelumnya.

Argumen `n_samples` menentukan jumlah titik data yang dihasilkan, `centers` menentukan jumlah pusat yang dihasilkan, `cluster_std` menentukan standar deviasi distribusi Gaussian dari setiap pusat, dan `random_state` menentukan seed untuk menghasilkan data yang konsisten.

Setelah dataset dummy dihasilkan, kodingan `plt.scatter(X[:, 0], X[:, 1], s=50)` digunakan untuk menampilkan scatter plot dari dataset dummy tersebut. `X[:, 0]` dan `X[:, 1]` digunakan untuk mengambil nilai koordinat x dan y dari setiap titik data dalam dataset. `s=50` digunakan untuk menentukan ukuran titik dalam scatter plot.

Dengan menampilkan scatter plot dari dataset dummy, kita dapat memahami bagaimana data terbagi ke dalam kelompok-kelompok dan bagaimana hasil clustering menggunakan algoritma K-Means.

SCATTER PLOT

Scatter plot adalah jenis grafik yang menampilkan titik-titik data dalam dua dimensi (sumbu x dan sumbu y) dan digunakan untuk memvisualisasikan hubungan antara dua variabel atau lebih. Setiap titik pada scatter plot merepresentasikan sebuah observasi atau pengamatan pada data. Scatter plot sering digunakan dalam analisis data untuk menentukan apakah terdapat pola atau hubungan antara dua variabel atau lebih.

Contoh Scatter Plot. Sumber : sanimadesign.blogspot.com

Scatter plot memiliki beberapa manfaat dan fungsi, antara lain:

- Membantu menentukan apakah ada hubungan antara dua variabel atau lebih. Scatter plot dapat membantu memvisualisasikan hubungan antara dua variabel atau lebih pada data, sehingga memudahkan analis untuk menentukan apakah terdapat hubungan atau tidak.
- Memperlihatkan pola pada data , scatter plot dapat memperlihatkan pola atau tren pada data, seperti apakah data cenderung membentuk kelompok atau memiliki korelasi positif atau negatif.
- Mengidentifikasi outlier. Scatter plot dapat membantu mengidentifikasi outlier atau pengamatan yang jauh dari pola yang ditunjukkan oleh data lainnya.
- Mempermudah interpretasi data: Scatter plot dapat membantu memvisualisasikan data dalam bentuk yang mudah dipahami, sehingga mempermudah interpretasi data.

Dalam analisis data, scatter plot sering digunakan bersama dengan teknik-teknik statistik seperti regresi linier atau clustering untuk memperlihatkan hubungan antara variabel atau kelompok-kelompok pada data.

3. Clustering K-Means

kmeans = KMeans(n_clusters=4)

kmeans.fit(X)

y_kmeans = kmeans.predict(X)

plt.scatter(X[:, 0], X[:, 1], c=y_kmeans, s=50, cmap=’viridis’)

Kodingan di atas memanggil algoritma KMeans dengan K=4 kemudiakan memasukan data X ke dalam model. Kodingan tersebut digunakan untuk melakukan clustering dengan menggunakan algoritma K-Means pada dataset dummy yang telah dibuat sebelumnya.

  • `kmeans = KMeans(n_clusters=4)`: Membuat objek KMeans yang akan digunakan untuk clustering. Parameter `n_clusters` menentukan jumlah cluster yang ingin dibentuk pada data.
    - `kmeans.fit(X)`: Melakukan proses clustering pada data `X` dengan menggunakan metode KMeans yang telah dibuat sebelumnya.
    - `y_kmeans = kmeans.predict(X)`: Menghitung cluster label (0, 1, 2, atau 3) untuk setiap titik data pada `X` berdasarkan clustering yang telah dilakukan sebelumnya.
    - `plt.scatter(X[:, 0], X[:, 1], c=y_kmeans, s=50, cmap=’viridis’)`: Menampilkan scatter plot dari data `X` yang telah diberi cluster label. Setiap cluster ditampilkan dengan warna yang berbeda-beda pada scatter plot dengan menggunakan colormap ‘viridis’.
Hasil scatterplot data X

Dengan menggunakan kodingan tersebut, kita dapat memvisualisasikan hasil clustering dari algoritma K-Means pada dataset dummy yang telah dibuat sebelumnya. Scatter plot yang dihasilkan akan menampilkan setiap titik data pada dataset dummy yang diberi warna berdasarkan cluster labelnya, sehingga memudahkan untuk melihat bagaimana data terbagi ke dalam kelompok-kelompok.

C. Clustering Analysis with Python

  1. Library

import matplotlib.pyplot as plt

import seaborn as sns

import numpy as np

from sklearn.datasets import make_blobs

from sklearn.cluster import KMeans

  • `matplotlib.pyplot` adalah library untuk membuat visualisasi grafik dalam Python. Dalam kode tersebut, `plt` digunakan untuk menampilkan hasil clustering dalam bentuk grafik.
    - `seaborn` adalah library Python untuk visualisasi data statistik. Dalam kode tersebut, `sns` digunakan untuk mempercantik tampilan visualisasi grafik.
    - `numpy` adalah library Python untuk komputasi numerik. Dalam kode tersebut, `np` digunakan untuk mengolah data numerik.
    - `make_blobs` adalah fungsi dalam library `sklearn.datasets` untuk menghasilkan data dummy berdasarkan distribusi Gaussian. Fungsi ini digunakan dalam kode tersebut untuk menghasilkan data untuk melakukan clustering.
    - `KMeans` adalah kelas dalam library `sklearn.cluster` yang menerapkan algoritma K-Means untuk melakukan clustering pada data.

2. Membuat dataset dummy

X, y_true = make_blobs(n_samples=300,

n_features=2,

centers=4,

cluster_std=0.60,

random_state=0)

plt.scatter(X[:, 0], X[:, 1], s=50);

`make_blobs(n_samples=300, n_features=2, centers=4, cluster_std=0.60, random_state=0)`.

  • Membuat dataset dummy dengan menggunakan fungsi `make_blobs` dari library `scikit-learn`.
  • -Parameter `n_samples` menentukan jumlah data atau pengamatan pada dataset
  • `n_features` menentukan jumlah fitur atau variabel pada dataset
  • `centers` menentukan jumlah cluster atau kelompok pada dataset
  • `cluster_std` menentukan standar deviasi dari setiap cluster, dan `random_state` adalah nilai random seed yang digunakan untuk menghasilkan dataset yang sama setiap kali dijalankan.

`X, y_true = make_blobs(…)`

  • Menyimpan dataset dummy yang dihasilkan oleh `make_blobs` ke dalam variabel `X` dan `y_true`.
  • Variabel `X` berisi nilai-nilai dari setiap fitur pada dataset, sedangkan variabel `y_true` berisi label cluster atau kelompok yang sesuai untuk setiap pengamatan pada dataset (hanya untuk tujuan evaluasi).

`plt.scatter(X[:, 0], X[:, 1], s=50)`

  • Menampilkan scatter plot dari data `X`. Setiap titik pada scatter plot merepresentasikan sebuah observasi pada data. Sumbu x dan y pada scatter plot merepresentasikan nilai dari setiap fitur pada dataset, dan ukuran titik pada scatter plot ditentukan oleh parameter `s`.
Hasil Scatter plot

Dengan menggunakan kodingan tersebut, kita dapat membuat dataset dummy yang digunakan untuk melakukan clustering dan memvisualisasikan dataset tersebut pada scatter plot. Hal ini dapat membantu untuk melihat bagaimana data terdistribusi dan apakah terdapat kelompok atau cluster yang dapat diidentifikasi pada data.

3. Membangun model K-Means

kmeans = KMeans(n_clusters=5)

kmeans.fit(X)

Kodingan `kmeans = KMeans(n_clusters=5)` dan `kmeans.fit(X)` digunakan untuk melakukan clustering pada data `X` dengan menggunakan algoritma K-Means dan menghasilkan model clustering yang telah dilatih.

- `KMeans(n_clusters=5)` : Membuat objek KMeans yang akan digunakan untuk clustering. Parameter `n_clusters` menentukan jumlah cluster atau kelompok yang ingin dibentuk pada data.
- `kmeans.fit(X)` : Melatih model K-Means pada data `X` sehingga model dapat mempelajari struktur atau pola yang ada pada data. Setelah model dilatih, model dapat digunakan untuk memprediksi label cluster untuk setiap observasi pada data yang baru.

Dengan melakukan clustering pada data `X`, kita dapat mengidentifikasi pola dan struktur yang ada pada data serta membagi data ke dalam kelompok-kelompok atau cluster-cluster. Kita juga dapat memprediksi label cluster untuk data yang belum pernah dilihat sebelumnya dengan menggunakan model clustering yang telah dilatih. Kodingan tersebut akan menghasilkan variabel `kmeans` yang merupakan objek dari model clustering yang telah dilatih dengan parameter `n_clusters=5`. Variabel `kmeans` dapat digunakan untuk melakukan prediksi label cluster untuk setiap pengamatan pada data yang baru.

4. Memprediksi Cluster

y_kmeans = kmeans.predict(x)

- `kmeans.predict(X)` : Menggunakan model clustering yang telah dilatih (`kmeans`) untuk memprediksi label cluster untuk setiap pengamatan pada data `X`. Setiap pengamatan akan diberikan label cluster yang sesuai dengan cluster terdekat berdasarkan jarak Euclidean.

Dengan menggunakan kodingan tersebut, kita dapat memprediksi label cluster untuk setiap pengamatan pada data `X` menggunakan model clustering yang telah dilatih (`kmeans`). Hasil prediksi akan disimpan dalam variabel `y_kmeans`.

Variabel `y_kmeans` berisi label cluster untuk setiap pengamatan pada data `X`. Dengan mengetahui label cluster untuk setiap pengamatan, kita dapat memvisualisasikan data pada scatter plot dan memberikan warna yang berbeda untuk setiap kelompok cluster. Ini akan membantu kita untuk melihat bagaimana data terbagi ke dalam kelompok-kelompok dan memeriksa apakah clustering yang dilakukan sesuai dengan karakteristik data.

5. Menambahkan Parameter Warna

plt.scatter(X[:, 0], X[:, 1], s=50, c=y_kmeans)

- `X[:, 0]` dan `X[:, 1]` : Mengambil nilai feature pertama dan kedua pada setiap pengamatan pada data `X`. Nilai feature pertama akan diplot pada sumbu x, sedangkan nilai feature kedua akan diplot pada sumbu y.
- `s=50` : Menentukan ukuran titik pada scatter plot.
- `c=y_kmeans` : Memberikan warna yang berbeda untuk setiap kelompok cluster yang telah diprediksi menggunakan model clustering yang telah dilatih (`y_kmeans`).

Dengan menggunakan kodingan tersebut, kita dapat memvisualisasikan hasil clustering dari data `X`. Setiap pengamatan pada data `X` akan diplot pada scatter plot dengan ukuran titik yang sama, tetapi dengan warna yang berbeda sesuai dengan kelompok cluster yang telah diprediksi menggunakan model clustering yang telah dilatih (`y_kmeans`). Ini memungkinkan kita untuk melihat bagaimana data terbagi ke dalam kelompok-kelompok dan memeriksa apakah clustering yang dilakukan sesuai dengan karakteristik data. Scatter plot ini juga dapat membantu kita untuk mengevaluasi dan memperbaiki model clustering yang telah dilatih.

GAMBAR DISINI

Silahkan akses link berikut untuk akses Google Colab materi diatas :

Learn More via : https://myskill.id/course/clustering-analysis/

--

--