K-Means Elbow Yöntemi: Neden Yanılgıya Düşüyorsunuz?
# K-Means Elbow Yöntemi: Neden Yanılgıya Düşüyorsunuz?
Elbow yöntemi K-Means için popüler bir seçim ama çoğu zaman yanıltıcı sonuçlar verir. Sorunu anlamak için önce yöntemin mantığını gözden geçirelim.
Yöntem, inertia (küme içi varyans toplamı) değerini farklı k değerleriyle hesaplar. Grafik üzerinde "dirsek" noktası ideal küme sayısı olarak seçilir. Ama bu dirsek her zaman net değildir.
Yanılgılar şöyle oluşur:
1. Belirsiz dirsek noktası: Grafik düz veya kademeli düşebilir; açı net olmayabilir.
2. Veri dağılımına bağımlılık: Kümelenmiş veya rastgele dağılmış veriler farklı dirsekler gösterir.
3. Ölçeklendirme sorunları: Özellik ölçekleri inertia değerlerini çarpıtır.
Bu kod, yanılgının nasıl ortaya çıktığını ve çözümü gösterir:
1import numpy as np2import matplotlib.pyplot as plt3from sklearn.cluster import KMeans4from sklearn.datasets import make_blobs5from sklearn.preprocessing import StandardScaler67# Örnek veri: 4 gerçek küme8X, y_true = make_blobs(n_samples=300, centers=4, n_features=2, random_state=42)9X = StandardScaler().fit_transform(X)1011# Elbow yöntemi12inertias = []13silhouette_scores = []14from sklearn.metrics import silhouette_score1516for k in range(1, 11):17kmeans = KMeans(n_clusters=k, random_state=42, n_init=10)18kmeans.fit(X)19inertias.append(kmeans.inertia_)20if k > 1:21silhouette_scores.append(silhouette_score(X, kmeans.labels_))2223# Görselleştirme24fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(12, 4))2526ax1.plot(range(1, 11), inertias, 'bo-')27ax1.set_xlabel('Küme Sayısı (k)')28ax1.set_ylabel('Inertia')29ax1.set_title('Elbow Yöntemi (Belirsiz!)')30ax1.grid()3132ax2.plot(range(2, 11), silhouette_scores, 'ro-')33ax2.set_xlabel('Küme Sayısı (k)')34ax2.set_ylabel('Silhouette Score')35ax2.set_title('Silhouette Yöntemi (Daha Güvenilir)')36ax2.grid()3738plt.tight_layout()39plt.show()4041print(f"Silhouette en yüksek k: {silhouette_scores.index(max(silhouette_scores)) + 2}")Beklenen çıktı: Silhouette yöntemi k=4'te maksimum puan verir; Elbow grafiğinde dirsek belirsizdir.
Yalnızca Elbow'a güvenme. Şu adımları takip et:
1. Silhouette Score hesapla, ne kadar iyi ayrılmış olduğunu gösterir.
2. Davies-Bouldin Index kontrol et, düşük değer iyidir.
3. Domain bilgisini ekle, iş mantığında kaç küme mantıklı?
4. Verini ölçeklendir, StandardScaler kullan, ölçek farkını ortadan kaldır.
Elbow yöntemi başlangıç noktası olarak kullanabilir ama tek başına karar verme. Veri yapısına göre birden fazla yöntemi birleştir ve en tutarlı sonucu seç.
0 yorum