Algoritma DBSCAN case study: Dataset Iris

DBSCAN (Density-Based Spatial Clustering of Applications with Noise) adalah salah satu algoritma clustering dalam machine learning yang menggunakan konsep kepadatan data untuk mengelompokkan titik-titik yang berdekatan dalam suatu ruang berdimensi tinggi. Algoritma ini tidak memerlukan jumlah klaster sebelumnya dan dapat mengidentifikasi klaster yang memiliki kepadatan yang berbeda.

Berikut adalah langkah-langkah utama algoritma DBSCAN:

1. **Inisialisasi:** Pilih sebuah titik data acak yang belum dikunjungi.

2. **Cek Kepadatan:** Hitung jumlah titik data yang berada dalam jarak ε (epsilon) dari titik yang dipilih. Jika jumlah titik dalam jarak tersebut kurang dari suatu ambang batas (minimumPts), maka tandai titik tersebut sebagai noise atau batas (tergantung pada implementasi) dan lanjutkan ke langkah berikutnya. Jika jumlahnya mencukupi, lanjutkan ke langkah berikutnya.

3. **Ekspansi Klaster:** Tandai titik yang telah dihitung sebagai bagian dari klaster saat ini, dan cari semua titik yang terjangkau (reachable) dari titik tersebut dalam jarak ε. Iteratif ekspansi dilakukan untuk menemukan semua titik yang terhubung dalam klaster.

4. **Ulangi Proses:** Ulangi langkah-langkah di atas untuk semua titik dalam klaster yang baru ditemukan. Proses ini terus berlanjut hingga tidak ada lagi titik yang dapat ditambahkan ke klaster atau semua titik telah dikunjungi.

5. **Label Noise:** Semua titik yang tidak termasuk dalam klaster adalah noise atau batas, tergantung pada implementasi. Noise dapat dianggap sebagai titik yang berada di luar klaster.

Hasil dari DBSCAN terdiri dari klaster yang terbentuk dan titik-titik yang dianggap sebagai noise. Beberapa konsep penting dalam algoritma ini melibatkan definisi kepadatan dan ketidaklangsungan yang dikenal sebagai titik batas.

Parameter utama dalam DBSCAN adalah ε (epsilon), yaitu jarak maksimum di antara dua titik agar satu dianggap tetangga dari yang lain, dan minimumPts, yaitu jumlah minimum titik yang diperlukan untuk membentuk klaster.

Kelebihan DBSCAN termasuk kemampuannya mengatasi klaster yang tidak berbentuk bola (non-spherical) dan dapat mendeteksi noise. Namun, pemilihan parameter ε dan minimumPts bisa menjadi tantangan dan dapat mempengaruhi hasil clustering.

Berikut ini adalah Algoritma DBSCAN dengan implementasi kode program di Python menggunakan editor Anaconda Navigator: 

from sklearn import datasets

import matplotlib.pyplot as plt

from sklearn.cluster import DBSCAN

from sklearn.decomposition import PCA

 bunga = datasets.load_iris()

 print(dir(bunga))

print(bunga.feature_names)


print(bunga.target_names)

x_axis = bunga.data[:, 0] #sepal length

y_axis = bunga.data[:, 1] #sepal width

#tampilkan data

plt.scatter(x_axis, y_axis, c=bunga.target)

plt.xlabel("Sepal length")

plt.ylabel("Sepal width")

plt.title("Grafik bunga iris")

plt.show()

Output kode program tersebut adalah:


#menggunakan model DBSCAN

dbscan = DBSCAN()

#fitting data

dbscan.fit(bunga.data)

#Transformasi menggunakan PCA 2 D

pca = PCA(n_components=2).fit(bunga.data)

pca_2d = pca.transform(bunga.data)

 

#Visualisasi dengan scatterplot

 #mrmbri label marker

label = {0: 'red', 1: 'blue', 2: 'green'}

for i in range(0, pca_2d.shape[0]):

    if dbscan.labels_[i] == 0:

        cluster1 = plt.scatter(pca_2d[i, 0],pca_2d[i, 1],c='r',marker='^')

    elif dbscan.labels_[i] == 1:

        cluster2 = plt.scatter(pca_2d[i, 0],pca_2d[i, 1],c='g',marker='.')

    elif dbscan.labels_[i] == -1:

        noise = plt.scatter(pca_2d[i, 0],pca_2d[i, 1],c='b',marker='X')

 

#Memberikan legend dan judul

plt.legend([cluster1, cluster2, noise], ['cluster 1','cluster 2','Noise'])

plt.title("Klasterisasi Bunga Iris dengan DBSCAN")

 #manampilkan hasil

plt.show()

 

Output dari kode program diatas adalah:

Popular posts from this blog

Introduction to Use Case Diagram - Case study: Facebook

Kenapa tidak berkurban?

Sequential Search