Kümeleme Algoritmaları - Ortalama Kayma Algoritması

Ortalama Kaydırma Algoritmasına Giriş

Daha önce tartışıldığı gibi, denetimsiz öğrenmede kullanılan bir başka güçlü kümeleme algoritmasıdır. K-anlamına gelen kümelenmenin aksine, herhangi bir varsayımda bulunmaz; dolayısıyla parametrik olmayan bir algoritmadır.

Ortalama kayma algoritması, temel olarak noktaları en yüksek veri noktası yoğunluğuna, yani küme merkez noktasına kaydırarak, veri noktalarını kümelere iteratif olarak atar.

K-Ortalamalar algoritması ile Ortalama-Kayma arasındaki fark, daha sonra kümelerin sayısını önceden belirtmeye gerek kalmamasıdır, çünkü küme sayısı algoritma verileriyle belirlenecektir.

Ortalama Kayma Algoritmasının Çalışması

Mean-Shift kümeleme algoritmasının çalışmasını aşağıdaki adımlar yardımıyla anlayabiliriz -

  • Step 1 - Öncelikle, kendi kümelerine atanan veri noktalarıyla başlayın.

  • Step 2 - Sonra, bu algoritma centroidleri hesaplayacak.

  • Step 3 - Bu adımda, yeni centroidlerin konumu güncellenecektir.

  • Step 4 - Şimdi, işlem yinelenecek ve daha yüksek yoğunluklu bölgeye taşınacaktır.

  • Step 5 - Sonunda, centroidler daha fazla hareket edemeyeceği konuma ulaştığında durdurulacak.

Python'da Uygulama

Mean-Shift algoritmasının nasıl çalıştığını anlamak için basit bir örnek. Bu örnekte, önce 4 farklı blob içeren 2D veri seti oluşturacağız ve ardından sonucu görmek için Mean-Shift algoritmasını uygulayacağız.

%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()

Çıktı

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

Avantajlar ve dezavantajlar

Avantajlar

Aşağıdakiler, Mean-Shift kümeleme algoritmasının bazı avantajlarıdır -

  • K-ortalamalarında veya Gauss karışımında olduğu gibi herhangi bir model varsayımı yapmaya gerek yoktur.

  • Konveks olmayan şekle sahip karmaşık kümeleri de modelleyebilir.

  • Yalnızca küme sayısını otomatik olarak belirleyen bant genişliği adlı bir parametreye ihtiyaç duyar.

  • K-ortalamalarında olduğu gibi yerel minimumlar sorunu yoktur.

  • Aykırı değerlerden herhangi bir sorun çıkmaz.

Dezavantajları

Aşağıdakiler, Ortalama Kaydırma kümeleme algoritmasının bazı dezavantajlarıdır -

Ortalama kayma algoritması, küme sayısının aniden değiştiği yüksek boyut durumunda iyi çalışmaz.

  • Küme sayısı üzerinde doğrudan bir kontrole sahip değiliz, ancak bazı uygulamalarda belirli sayıda kümeye ihtiyacımız var.

  • Anlamlı ve anlamsız modlar arasında ayrım yapamaz.