🎯 Denetimsiz Öğrenme

Kümeleme Analizi: K-Means Kapsamlı Rehber

📅 Güncellendi: 5 Temmuz 2026 ⏱️ 23 dk okuma 🎯 Denetimsiz Öğrenme

Elinizde etiketlenmemiş veri var ve bu veride doğal gruplar olup olmadığını keşfetmek istiyorsunuz. Müşterilerinizi satın alma alışkanlıklarına göre segmentlere ayırmak veya pazar araştırması katılımcılarını benzer profillere göre gruplamak gibi durumlarda denetimsiz öğrenme devreye girer. Bu kapsamlı rehberde K-Means algoritmasının matematiksel temelinden optimal k seçim yöntemlerine, DBSCAN karşılaştırmasından Python uygulamasına kadar kümeleme analizinin tüm boyutlarını ele alıyoruz.

1. K-Means Nedir? Denetimsiz Öğrenmeye Giriş

Denetimli öğrenmenin aksine (etiketli veriyle "doğru cevap" öğretilir), denetimsiz öğrenmede etiket yoktur — algoritma veri içindeki gizli yapıyı kendi başına keşfeder. K-Means, denetimsiz öğrenmenin en yaygın kullanılan yöntemlerinden biridir: gözlemleri, aralarındaki benzerliğe (genellikle Öklid mesafesi) göre k adet kümeye ayırır.

2. K-Means Algoritması Nasıl Çalışır?

MacQueen tarafından 1967'de tanımlanan K-Means, basit ama güçlü bir yinelemeli algoritmadır (Lloyd'un algoritması olarak da bilinir). Çalışma adımları:

  1. Başlangıç merkezlerini belirle: K adet merkez (centroid) rastgele seçilir veya K-Means++ yöntemiyle akıllıca başlatılır (bkz. Bölüm 4).
  2. Her noktayı en yakın merkeze ata (Assignment Step): Öklid mesafesine göre her gözlem en yakın kümeye atanır.
  3. Merkezleri güncelle (Update Step): Her kümedeki noktaların ortalaması alınarak yeni merkez hesaplanır.
  4. Yinele: Merkez konumları değişmeyene (veya değişim bir eşiğin altına düşene) kadar 2. ve 3. adımlar tekrarlanır.
1. Rastgele Başlat merkezler rastgele 2. Ata & Güncelle renk = atama, merkez taşınır 3. Yakınsama merkezler sabitlendi
Şekil 1. K-Means yinelemeli süreci: rastgele başlangıç → atama+güncelleme döngüsü → merkezler değişmeyene kadar tekrar (yakınsama).

3. Matematiksel Amaç Fonksiyonu: WCSS

Algoritma, her küme içindeki noktaların merkeze olan toplam kare uzaklığını — Within-Cluster Sum of Squares (WCSS) — minimize etmeye çalışır:

WCSS = Σᵢ₌₁ᵏ Σₓ∈Cᵢ ‖x − μᵢ‖²

Burada k küme sayısı, Cᵢ i. kümedeki noktalar kümesi, μᵢ i. kümenin merkezi (centroid), ‖x−μᵢ‖ Öklid mesafesidir. K-Means, her iterasyonda WCSS'yi azaltır (asla artırmaz) ancak global minimumu garanti etmez — yalnızca yerel bir minimuma yakınsar; bu nedenle farklı başlangıçlarla birden fazla kez çalıştırmak (scikit-learn'de n_init parametresi) iyi bir uygulamadır.

4. K-Means++ ile Akıllı Başlatma

Tamamen rastgele başlangıç merkezleri, kötü yerel minimumlara takılma riskini artırır. K-Means++ (Arthur & Vassilvitskii, 2007), ilk merkezi rastgele seçer; sonraki her merkezi ise mevcut merkezlere uzaklığıyla orantılı olasılıkla seçer — böylece başlangıç merkezleri veri uzayına daha iyi yayılır. Bu, hem yakınsama hızını hem de sonuç kalitesini belirgin biçimde iyileştirir; scikit-learn'de varsayılan başlatma yöntemidir.

5. Veri Ölçeklendirmenin Zorunluluğu

K-Means mesafeye dayalı bir algoritmadır. Değişkenler farklı ölçeklerdeyse (örneğin 0-100.000 TL gelir ve 1-5 memnuniyet puanı), yüksek ölçekli değişken analizi baskın şekilde yönlendirir. Analiz öncesinde her değişken StandardScaler (z-skoru) veya MinMaxScaler ile aynı ölçeğe getirilmelidir.

6. Optimal K Sayısı: Elbow Yöntemi

Farklı k değerleri için WCSS hesaplanır ve k'ya göre grafiğe dökülerek "dirsek" oluşturan nokta optimal k olarak seçilir. Bu noktadan sonra k artırmak WCSS'yi çok az azaltır; dolayısıyla ek küme eklemek anlamlı olmaz.

k (küme sayısı) WCSS Dirsek (k=4)
Şekil 2. WCSS eğrisi k arttıkça azalır; "dirsek" noktası, ek kümenin getirdiği faydanın belirgin biçimde azaldığı yeri gösterir.

Grafik her zaman net bir dirsek vermeyebilir; bu durumda diğer yöntemler devreye girer.

7. Optimal K Sayısı: Silhouette Skoru

Rousseeuw (1987) tarafından geliştirilen silhouette skoru, her noktanın kendi kümesine ne kadar uyduğunu ve komşu kümeye ne kadar uzak olduğunu ölçer. −1 ile +1 arasında değer alır; 1'e yakın değerler iyi küme ayrımına, 0 sınır durumuna, negatif değerler ise yanlış atamaya işaret eder. Farklı k değerleri için ortalama silhouette skoru hesaplanarak en yüksek skor veren k seçilir.

8. Optimal K Sayısı: Gap Statistic

Tibshirani, Walther ve Hastie'nin (2001) geliştirdiği Gap Statistic, gözlenen WCSS'yi, aynı aralıkta rastgele üretilmiş (kümesiz) referans veri üzerindeki beklenen WCSS ile karşılaştırır. Gözlenen WCSS ile referans WCSS arasındaki fark ("gap") en büyük olduğu k değeri optimal kabul edilir. Elbow ve Silhouette'e göre daha istatistiksel bir temele sahiptir çünkü "hiç küme yokmuş gibi" bir karşılaştırma sunar.

💡 Pratik Öneri: Elbow, Silhouette ve Gap Statistic'i birlikte değerlendirin. Üçü aynı k değerini işaret ediyorsa güvenle seçebilirsiniz. Farklı değer gösteriyorsa alan bilgisi ve yorumlanabilirlik ön plana çıkar — örneğin pazarlamada "6 anlamsız mikro-segment" yerine "4 yorumlanabilir segment" tercih edilebilir.

9. K-Means'in Sınırlılıkları

  • Kümelerin yuvarlak (küresel) ve benzer büyüklükte olduğunu varsayar; uzun elipsoid veya düzensiz şekilli kümeler için uygun değildir.
  • Aykırı değerlere karşı hassastır; bu değerler merkez konumunu çarpıtabilir.
  • Kategorik değişkenlerle doğrudan çalışmaz (bkz. Bölüm 12).
  • K değerinin önceden bilinmesini/tahmin edilmesini gerektirir.
  • Yüksek boyutlu verilerde "boyut laneti" (curse of dimensionality) nedeniyle mesafe ölçütü anlamını yitirebilir; PCA ile boyut indirgeme sonrası kümeleme önerilir.

10. Hiyerarşik Kümeleme ile Karşılaştırma

ÖzellikK-MeansHiyerarşik Kümeleme
K sayısıÖnceden belirtilmeliDendrogramdan seçilir
Büyük veriVerimli çalışır (O(n))Yavaş (O(n²) veya O(n³))
YorumlamaBasitDendrogram zengin bilgi sunar
Küme şekliYuvarlak kümeler varsayarDaha esnek

11. DBSCAN ve Diğer Yöntemlerle Karşılaştırma

DBSCAN (Density-Based Spatial Clustering), yoğunluk tabanlı bir yaklaşımla çalışır: birbirine yeterince yakın noktalar aynı kümeye dahil edilir, hiçbir kümeye yeterince yakın olmayan noktalar "gürültü" (noise) olarak işaretlenir.

🔷 K-Means kullanın, eğer…

  • Kümelerin küresel/dışbükey olduğunu düşünüyorsanız
  • Küme sayısı hakkında makul bir fikriniz varsa
  • Büyük veri setinde hızlı sonuç istiyorsanız

🟩 DBSCAN kullanın, eğer…

  • Kümeler düzensiz/keyfi şekilliyse (örn. coğrafi veri)
  • Küme sayısını önceden bilmiyorsanız
  • Aykırı değerleri ayrı bir sınıf olarak tespit etmek istiyorsanız

Diğer alternatifler: Gaussian Mixture Models (GMM) olasılıksal (soft) atama yapar — bir nokta birden fazla kümeye farklı olasılıklarla ait olabilir; Spectral Clustering grafik teorisi tabanlıdır ve K-Means'in başarısız olduğu karmaşık geometrilerde işe yarar.

12. Kategorik Veri: K-Modes ve Gower Mesafesi

K-Means, Öklid mesafesi kategorik değişkenler için anlamlı olmadığından kategorik verilerle doğrudan çalışmaz. Alternatifler:

  • K-Modes: Merkez olarak ortalama yerine "mod" (en sık görülen kategori) kullanır; mesafe ölçütü olarak eşleşmeyen özellik sayısını (Hamming mesafesi benzeri) kullanır.
  • K-Prototypes: Sayısal ve kategorik değişkenleri birlikte işleyen hibrit yöntem.
  • Gower Mesafesi: Karma veri tiplerinde (sayısal + kategorik + ordinal) genel amaçlı bir benzerlik ölçütü; ardından hiyerarşik kümeleme veya PAM (K-Medoids) ile birlikte kullanılabilir.

13. Python ile Uçtan Uca K-Means Uygulaması

import pandas as pd import numpy as np from sklearn.preprocessing import StandardScaler from sklearn.cluster import KMeans from sklearn.metrics import silhouette_score import matplotlib.pyplot as plt # ---- Ölçeklendirme ---- X = df[['recency', 'frequency', 'monetary']] scaler = StandardScaler() X_scaled = scaler.fit_transform(X) # ---- Elbow + Silhouette için k tarama ---- wcss = [] silhouette_skorlari = [] k_araligi = range(2, 11) for k in k_araligi: km = KMeans(n_clusters=k, init='k-means++', n_init=10, random_state=42) etiketler = km.fit_predict(X_scaled) wcss.append(km.inertia_) silhouette_skorlari.append(silhouette_score(X_scaled, etiketler)) # ---- Elbow grafiği ---- plt.plot(k_araligi, wcss, marker='o') plt.xlabel('k'); plt.ylabel('WCSS'); plt.title('Elbow Yöntemi') # ---- Optimal k ile final model ---- optimal_k = 4 # elbow + silhouette sonucuna göre kmeans_final = KMeans(n_clusters=optimal_k, init='k-means++', n_init=10, random_state=42) df['kume'] = kmeans_final.fit_predict(X_scaled) # ---- Küme profillerini incele ---- print(df.groupby('kume')[['recency', 'frequency', 'monetary']].mean())

14. Pazarlama Uygulaması: RFM ile Müşteri Segmentasyonu

K-Means'in en popüler uygulama alanı müşteri segmentasyonudur. RFM analizi (Recency — son alışverişten bu yana geçen süre, Frequency — alışveriş sıklığı, Monetary — toplam harcama) verisiyle müşteriler segmentlere ayrılır. Tipik bir analiz 3-5 küme ortaya çıkarır:

SegmentRFM ProfiliStrateji
ŞampiyonlarDüşük Recency, Yüksek Frequency & MonetarySadakat programı, erken erişim
Risk AltındakilerYüksek Recency, geçmişte Yüksek FrequencyGeri kazanım kampanyası
Yeni MüşterilerDüşük Recency, Düşük FrequencyHoş geldin serisi, ilk alışveriş teşviki
Tek Seferlik AlıcılarYüksek Recency, Frequency=1Düşük öncelik, otomatik e-posta

15. Yaygın Hatalar

  • Ölçeklendirmeyi atlamak: Farklı ölçekli değişkenlerle doğrudan K-Means çalıştırmak, büyük ölçekli değişkenin analiz üzerinde haksız baskınlığına yol açar.
  • Tek bir yönteme (yalnızca elbow) güvenmek: Elbow her zaman net bir sonuç vermez; Silhouette ve Gap Statistic ile çapraz kontrol edin.
  • n_init=1 kullanmak: Tek bir rastgele başlangıçla çalıştırmak kötü yerel minimuma takılma riskini artırır; n_init≥10 önerilir.
  • Küresel olmayan veri yapısına K-Means uygulamak: Ay şeklinde veya iç içe geçmiş kümelerde K-Means başarısız olur; DBSCAN veya Spectral Clustering denenmelidir.
  • Kategorik değişkenleri sayısal gibi kodlayıp doğrudan K-Means'e vermek: Örneğin şehir kodlarını 1,2,3... olarak kodlamak yapay bir sıralama/mesafe anlamı katar; K-Modes veya one-hot encoding + dikkatli ölçeklendirme kullanılmalıdır.

Kaynaklar

  • MacQueen, J. B. (1967). Some methods for classification and analysis of multivariate observations. Proceedings of the Fifth Berkeley Symposium on Mathematical Statistics and Probability, 1, 281–297.
  • Arthur, D., & Vassilvitskii, S. (2007). k-means++: The Advantages of Careful Seeding. Proceedings of the ACM-SIAM Symposium on Discrete Algorithms.
  • Rousseeuw, P. J. (1987). Silhouettes: A graphical aid to the interpretation and validation of cluster analysis. Journal of Computational and Applied Mathematics, 20, 53–65.
  • Tibshirani, R., Walther, G., & Hastie, T. (2001). Estimating the number of clusters in a data set via the gap statistic. Journal of the Royal Statistical Society: Series B, 63(2), 411–423.

Müşteri Segmentasyonu ve Kümeleme Analizi

K-Means ve hiyerarşik kümeleme ile müşteri segmentlerinizi belirliyor, segmente özel stratejiler için veri odaklı içgörüler sunuyoruz.

Teklif Al