Algoritme Pengelompokan - Algoritme Pergeseran Rata-rata

Pengantar Algoritma Mean-Shift

Seperti yang dibahas sebelumnya, ini adalah algoritma pengelompokan hebat lainnya yang digunakan dalam pembelajaran tanpa pengawasan. Tidak seperti pengelompokan K-means, ia tidak membuat asumsi apa pun; karenanya ini adalah algoritma non-parametrik.

Algoritma mean-shift pada dasarnya menetapkan titik data ke cluster secara iteratif dengan menggeser titik ke arah kepadatan titik data tertinggi yaitu cluster centroid.

Perbedaan antara algoritma K-Means dan Mean-Shift adalah nantinya seseorang tidak perlu menentukan jumlah cluster terlebih dahulu karena jumlah cluster akan ditentukan oleh data algoritma wrt.

Cara Kerja Algoritma Mean-Shift

Kita dapat memahami cara kerja algoritma pengelompokan Mean-Shift dengan bantuan langkah-langkah berikut -

  • Step 1 - Pertama, mulailah dengan titik data yang ditetapkan ke klusternya sendiri.

  • Step 2 - Selanjutnya, algoritma ini akan menghitung sentroid.

  • Step 3 - Pada langkah ini, lokasi sentroid baru akan diperbarui.

  • Step 4 - Sekarang, proses akan diulangi dan dipindahkan ke wilayah dengan kepadatan yang lebih tinggi.

  • Step 5 - Akhirnya, itu akan dihentikan setelah sentroid mencapai posisi di mana ia tidak dapat bergerak lebih jauh.

Implementasi dengan Python

Ini adalah contoh sederhana untuk memahami cara kerja algoritma Mean-Shift. Dalam contoh ini, pertama-tama kita akan menghasilkan dataset 2D yang berisi 4 blob berbeda dan setelah itu akan menerapkan algoritma Mean-Shift untuk melihat hasilnya.

%matplotlib inline
import numpy as np
from sklearn.cluster import MeanShift
import matplotlib.pyplot as plt
from matplotlib import style
style.use("ggplot")
from sklearn.datasets.samples_generator import make_blobs
centers = [[3,3,3],[4,5,5],[3,10,10]]
X, _ = make_blobs(n_samples = 700, centers = centers, cluster_std = 0.5)
plt.scatter(X[:,0],X[:,1])
plt.show()
ms = MeanShift()
ms.fit(X)
labels = ms.labels_
cluster_centers = ms.cluster_centers_
print(cluster_centers)
n_clusters_ = len(np.unique(labels))
print("Estimated clusters:", n_clusters_)
colors = 10*['r.','g.','b.','c.','k.','y.','m.']
for i in range(len(X)):
    plt.plot(X[i][0], X[i][1], colors[labels[i]], markersize = 3)
plt.scatter(cluster_centers[:,0],cluster_centers[:,1],
    marker=".",color='k', s=20, linewidths = 5, zorder=10)
plt.show()

Keluaran

[[ 2.98462798 9.9733794 10.02629344]
[ 3.94758484 4.99122771 4.99349433]
[ 3.00788996 3.03851268 2.99183033]]
Estimated clusters: 3

Keuntungan dan kerugian

Keuntungan

Berikut ini adalah beberapa keuntungan dari algoritma pengelompokan Mean-Shift -

  • Tidak perlu membuat asumsi model seperti dalam campuran K-means atau Gaussian.

  • Ia juga dapat memodelkan cluster kompleks yang memiliki bentuk nonconvex.

  • Ini hanya membutuhkan satu parameter bernama bandwidth yang secara otomatis menentukan jumlah cluster.

  • Tidak ada masalah minimum lokal seperti di K-means.

  • Tidak ada masalah yang dihasilkan dari pencilan.

Kekurangan

Berikut ini adalah beberapa kelemahan dari algoritma pengelompokan Mean-Shift -

Algoritme pergeseran rata-rata tidak berfungsi dengan baik dalam kasus dimensi tinggi, di mana jumlah cluster berubah secara tiba-tiba.

  • Kami tidak memiliki kendali langsung atas jumlah cluster, tetapi dalam beberapa aplikasi, kami memerlukan jumlah cluster tertentu.

  • Itu tidak dapat membedakan antara mode yang bermakna dan tidak berarti.