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.