Kümeleme Algoritmaları - K-Ortalama Algoritması

K-Means Algoritmasına Giriş

K-anlamına gelir kümeleme algoritması, ağırlık merkezlerini hesaplar ve biz en uygun ağırlık merkezini bulana kadar yineler. Küme sayısının zaten bilindiğini varsayar. Aynı zamandaflat clusteringalgoritması. Verilerden algoritma ile tanımlanan küme sayısı K-ortalamalarında 'K' ile temsil edilmektedir.

Bu algoritmada, veri noktaları bir kümeye, veri noktaları ile ağırlık merkezi arasındaki karesi alınmış mesafenin toplamı minimum olacak şekilde atanır. Kümeler içindeki daha az varyasyonun, aynı küme içinde daha fazla benzer veri noktalarına yol açacağı anlaşılmalıdır.

K-Means Algoritmasının Çalışması

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

  • Step 1 - Öncelikle, bu algoritma tarafından üretilmesi gereken küme sayısını (K) belirlememiz gerekiyor.

  • Step 2- Daha sonra, rastgele K veri noktası seçin ve her veri noktasını bir kümeye atayın. Basit bir deyişle, verileri veri noktalarının sayısına göre sınıflandırın.

  • Step 3 - Şimdi küme merkezlerini hesaplayacak.

  • Step 4 - Ardından, artık değişmeyen kümelere veri noktalarının atanması olan en uygun ağırlık merkezini bulana kadar aşağıdakileri yinelemeye devam edin -

4.1 - İlk olarak, veri noktaları ve ağırlık merkezleri arasındaki mesafenin karesi toplamı hesaplanacaktır.

4.2 - Şimdi, her bir veri noktasını diğer kümeden (centroid) daha yakın olan kümeye atamalıyız.

4.3 - Sonunda, o kümenin tüm veri noktalarının ortalamasını alarak kümeler için ağırlık merkezlerini hesaplayın.

K-şu anlama gelir Expectation-Maximizationsorunu çözmek için yaklaşım. Beklenti adımı, veri noktalarını en yakın kümeye atamak için kullanılır ve Maksimizasyon adımı, her kümenin merkezini hesaplamak için kullanılır.

K-anlamı algoritmasıyla çalışırken aşağıdaki şeylere dikkat etmemiz gerekir -

  • K-Means dahil kümeleme algoritmalarıyla çalışırken, verilerin standart hale getirilmesi önerilir çünkü bu tür algoritmalar veri noktaları arasındaki benzerliği belirlemek için mesafeye dayalı ölçüm kullanır.

  • K-Ortalamalarının yinelemeli doğası ve ağırlık merkezlerinin rastgele başlatılması nedeniyle, K-Ortalamaları yerel bir optimumda kalabilir ve küresel optimuma yakınlaşmayabilir. Bu yüzden centroidlerin farklı ilklendirmelerinin kullanılması önerilir.

Python'da Uygulama

K-Means kümeleme algoritmasının uygulanmasına ilişkin aşağıdaki iki örnek, daha iyi anlamamıza yardımcı olacaktır -

örnek 1

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

İlk olarak, gerekli paketleri içe aktararak başlayacağız -

%matplotlib inline
import matplotlib.pyplot as plt
import seaborn as sns; sns.set()
import numpy as np
from sklearn.cluster import KMeans

Aşağıdaki kod, dört blob içeren 2D'yi oluşturacaktır -

from sklearn.datasets.samples_generator import make_blobs
X, y_true = make_blobs(n_samples=400, centers=4, cluster_std=0.60, random_state=0)

Ardından, aşağıdaki kod, veri kümesini görselleştirmemize yardımcı olacaktır -

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

Daha sonra, küme sayısının yanı sıra KMeans nesnesi yapın, modeli eğitin ve aşağıdaki gibi tahmini yapın -

kmeans = KMeans(n_clusters=4)
kmeans.fit(X)
y_kmeans = kmeans.predict(X)

Şimdi, aşağıdaki kodun yardımıyla, k-yolu Python tahmincisi tarafından seçilen kümenin merkezlerini çizebilir ve görselleştirebiliriz -

plt.scatter(X[:, 0], X[:, 1], c=y_kmeans, s=20, cmap='summer')
centers = kmeans.cluster_centers_
plt.scatter(centers[:, 0], centers[:, 1], c='blue', s=100, alpha=0.9);
plt.show()

Örnek 2

Basit basamak veri setine K-ortalama kümelemesini uygulayacağımız başka bir örneğe geçelim. K-araçları, orijinal etiket bilgilerini kullanmadan benzer basamakları tanımlamaya çalışacaktır.

İlk olarak, gerekli paketleri içe aktararak başlayacağız -

%matplotlib inline
import matplotlib.pyplot as plt
import seaborn as sns; sns.set()
import numpy as np
from sklearn.cluster import KMeans

Ardından, sklearn'den rakam veri setini yükleyin ve bunun bir nesnesini yapın. Ayrıca bu veri kümesindeki satır ve sütun sayısını aşağıdaki gibi bulabiliriz -

from sklearn.datasets import load_digits
digits = load_digits()
digits.data.shape

Çıktı

(1797, 64)

Yukarıdaki çıktı, bu veri setinin 64 özelliğe sahip 1797 örneğe sahip olduğunu göstermektedir.

Kümelemeyi yukarıdaki Örnek 1'de yaptığımız gibi yapabiliriz -

kmeans = KMeans(n_clusters=10, random_state=0)
clusters = kmeans.fit_predict(digits.data)
kmeans.cluster_centers_.shape

Çıktı

(10, 64)

Yukarıdaki çıktı, K-ortalamasının 64 özelliğe sahip 10 küme oluşturduğunu göstermektedir.

fig, ax = plt.subplots(2, 5, figsize=(8, 3))
centers = kmeans.cluster_centers_.reshape(10, 8, 8)
for axi, center in zip(ax.flat, centers):
   axi.set(xticks=[], yticks=[])
   axi.imshow(center, interpolation='nearest', cmap=plt.cm.binary)

Çıktı

Çıktı olarak, k-araçlarıyla öğrenilen küme merkezlerini gösteren aşağıdaki resmi alacağız.

Aşağıdaki kod satırları, öğrenilen küme etiketlerini içlerinde bulunan gerçek etiketlerle eşleştirecektir -

from scipy.stats import mode
labels = np.zeros_like(clusters)
for i in range(10):
   mask = (clusters == i)
   labels[mask] = mode(digits.target[mask])[0]

Ardından, doğruluğunu aşağıdaki şekilde kontrol edebiliriz -

from sklearn.metrics import accuracy_score
accuracy_score(digits.target, labels)

Çıktı

0.7935447968836951

Yukarıdaki çıktı, doğruluğun% 80 civarında olduğunu göstermektedir.

Avantajlar ve dezavantajlar

Avantajlar

Aşağıdakiler, K-Means kümeleme algoritmalarının bazı avantajlarıdır -

  • Anlaması ve uygulaması çok kolaydır.

  • Çok sayıda değişkenimiz varsa, K-ortalamaları Hiyerarşik kümelemeden daha hızlı olacaktır.

  • Centroidlerin yeniden hesaplanmasında, bir örnek kümeyi değiştirebilir.

  • Hiyerarşik kümelemeye kıyasla K-ortalamaları ile daha sıkı kümeler oluşturulur.

Dezavantajları

Aşağıdakiler, K-Means kümeleme algoritmalarının bazı dezavantajlarıdır -

  • Küme sayısını, yani k değerini tahmin etmek biraz zordur.

  • Çıktı, küme sayısı (k değeri) gibi ilk girdilerden büyük ölçüde etkilenir.

  • Veri sırasının nihai çıktı üzerinde güçlü bir etkisi olacaktır.

  • Yeniden ölçeklendirmeye karşı çok hassastır. Verilerimizi normalleştirme veya standardizasyon yoluyla yeniden ölçeklendirirsek, çıktı tamamen değişecektir. Son çıktı.

  • Kümelerin karmaşık bir geometrik şekli varsa, kümeleme işi yapmak iyi değildir.

K-Means Kümeleme Algoritmasının Uygulamaları

Kümeleme analizinin ana hedefleri:

  • Üzerinde çalıştığımız verilerden anlamlı bir sezgi elde etmek için.

  • Farklı alt gruplar için farklı modellerin nerede oluşturulacağını küme sonra tahmin edin.

Yukarıda belirtilen hedefleri gerçekleştirmek için, K-anlamına gelir kümeleme yeterince iyi performans gösteriyor. Aşağıdaki uygulamalarda kullanılabilir -

  • Pazar bölümleme

  • Belge Kümeleme

  • Resim parçalama

  • Görüntü sıkıştırma

  • Müşteri segmentasyonu

  • Dinamik verilerdeki eğilimi analiz etmek