K-Means Kümeleme (K-Ortalama Kümeleme)

K-Means, veri noktalarını K adet kümeye bölen gözetimsiz bir makine öğrenimi algoritmasıdır; her nokta en yakın merkeze (centroid) atanır ve merkezler yinelemeli olarak güncellenir.

K-Means, makine öğreniminde en yaygın kullanılan gözetimsiz kümeleme algoritmalarından biridir. Temel amacı, etiketlenmemiş veri noktalarını K adet anlamlı gruba (kümeye) bölmektir; küme içindeki noktalar birbirine benzerken farklı kümeler arasındaki benzerlik minimum tutulur. Algoritma, yinelemeli (iteratif) dört adımla çalışır. Başlatma aşamasında K adet merkez noktası (centroid) rastgele ya da K-Means++ yöntemiyle seçilir. K-Means++ merkezleri birbirinden olabildiğince uzağa yerleştirerek daha kararlı başlangıç sağlar ve yakınsama hızını artırır. Atama adımında her veri noktası, Öklid uzaklığı (veya seçilen mesafe ölçütü) ile en yakın merkeze atanır. Güncelleme adımında her küme için noktaların koordinat ortalaması hesaplanarak yeni centroid belirlenir. Bu atama ve güncelleme döngüsü, hiçbir centroid yer değiştirmeyene kadar tekrarlanır. Algoritmanın en kritik parametresi K değeridir — kaç küme istediğimizi önceden belirtmemiz gerekir. K'yı belirlemek için en yaygın yöntem 'Dirsek Yöntemi' (Elbow Method): farklı K değerleri için Küme İçi Kareler Toplamı (WCSS - Within-Cluster Sum of Squares) grafiğe dökülerek eğrinin dirsek yaptığı nokta optimal K olarak seçilir. Silhouette Skoru gibi istatistiksel ölçütler de K seçiminde kullanılabilir. K-Means'ın temel avantajları sadelik ve ölçeklenebilirliktir; büyük veri kümelerinde hızlı çalışır. Sınırlılıkları arasında K'nın önceden belirlenmesi zorunluluğu, yalnızca küresel şekilli kümelerde başarılı çalışması ve aykırı değerlere duyarlılık sayılabilir. K-Means++, Mini-Batch K-Means ve Bisecting K-Means gibi varyantlar bu zayıflıkları gidermeye yönelik geliştirilmiştir. Gerçek dünyada müşteri segmentasyonu, belge kümeleme, görüntü sıkıştırma, pazar analizi ve anomali tespiti gibi geniş bir uygulama alanına sahiptir.

K-Means Nasıl Çalışır? Adım Adım Algoritma

Algoritma başlatma (initialization), atama (assignment), güncelleme (update) ve yakınsama (convergence) olmak üzere dört temel adımdan oluşur. Başlatmada K adet centroid rastgele seçilir; K-Means++ varyantı ise merkezleri birbirinden uzak seçerek yerel minimuma takılma riskini azaltır. Atama adımında her veri noktası, Öklid uzaklığı en küçük olan centroid'e atanır. Güncelleme adımında her kümedeki noktaların koordinat ortalaması alınarak centroid yeni konumuna taşınır. Bu döngü yakınsana — yani centroid'ler artık hareket etmeyene — kadar sürer. Algoritmanın karmaşıklığı O(n · K · I · d): n veri noktası, K küme, I iterasyon sayısı, d boyut sayısı.

K Değeri ve Dirsek Yöntemi

Doğru K değerini seçmek K-Means'ın en kritik adımıdır. Dirsek Yöntemi (Elbow Method), K=1'den başlayarak K'yı artırırken her adımda Küme İçi Kareler Toplamı'nı (WCSS) hesaplar. K arttıkça WCSS düşer; ancak belirli bir noktadan sonra iyileşme ivmesi yavaşlar — bu kırılma noktası grafikteki 'dirsek' şekliyle tanınır ve optimal K olarak seçilir. Alternatif olarak Silhouette Skoru, bir noktanın kendi kümesiyle ne kadar uyumlu, komşu kümeden ne kadar ayrışık olduğunu -1 ile +1 arasında puanlar; daha yüksek ortalama skor daha iyi K anlamına gelir. Calinski-Harabasz ve Davies-Bouldin indeksleri de sıkça kullanılan K optimizasyon araçlarıdır.

K-Means ve Diğer Kümeleme Algoritmalarının Karşılaştırması

  • check_circle K-Means: K önceden belirlenmeli, yalnızca küresel şekilli kümeler için uygun, aykırı değerlere duyarlı. Büyük veri kümelerinde hızlı ve ölçeklenebilir.
  • check_circle DBSCAN: Küme sayısı otomatik belirlenir, keyfi şekilli kümeler tespit eder, gürültü noktaları açıkça etiketler. ε ve minPts parametre seçimi deneyim gerektirir.
  • check_circle Hiyerarşik Kümeleme: Dendrogram oluşturarak farklı çözünürlüklerde kümeleri görselleştirir. Küçük-orta ölçekli verilerde yorumlanabilirliği yüksek, büyük verilerde yavaş.
  • check_circle Gaussian Mixture Model (GMM): Olasılıksal yaklaşım; her küme bir Gaussian dağılımla temsil edilir. Esnek şekilli kümeler ve üyelik belirsizliğini modellemek için güçlü alternatif.

Uygulama Alanları

Müşteri segmentasyonu

Satın alma davranışı, demografik ve coğrafi veriler kullanılarak müşterileri benzer gruplara ayırır; hedefli pazarlama kampanyaları oluşturmayı sağlar.

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

Piksel renklerini K kümeye indirgeleyerek görüntüyü yalnızca centroid renkleriyle temsil eder; bu sayede dosya boyutunu önemli ölçüde küçültür.

Belge kümeleme

TF-IDF veya embedding vektörleri üzerinde K-Means çalıştırarak benzer içerikli belgeleri otomatik gruplar; haber sınıflandırma ve konu keşfinde kullanılır.

Anomali tespiti

Centroid'e olan uzaklık eşiğini aşan noktalar anormal kabul edilir; ağ güvenliği, kredi kartı dolandırıcılığı ve kalite kontrolde yaygındır.

Python ile K-Means Uygulaması

scikit-learn kütüphanesi K-Means için kullanıma hazır implementasyon sunar: `from sklearn.cluster import KMeans; km = KMeans(n_clusters=3, init='k-means++', random_state=42).fit(X)`. Küme etiketleri `km.labels_`, centroid koordinatları `km.cluster_centers_` ile alınır. Büyük veri setleri için `MiniBatchKMeans` kullanımı önerilir; her adımda yalnızca rastgele örneklenmiş bir alt küme işlenerek bellek ve zaman maliyeti önemli ölçüde düşer. K seçimi için `KElbowVisualizer` (Yellowbrick kütüphanesi) ya da `silhouette_score` (sklearn.metrics) ile otomatik değerlendirme yapılabilir.

Sık Sorulan Sorular

  • check_circle K-Means nedir?: Etiketlenmemiş veriyi K adet kümeye bölen gözetimsiz bir makine öğrenimi algoritmasıdır. Her veri noktası en yakın centroid'e atanır; centroid'ler yinelemeli olarak güncellenerek küme oluşturulur.
  • check_circle K-Means ile DBSCAN arasındaki temel fark nedir?: K-Means küme sayısını önceden gerektirir ve yalnızca küresel şekilli kümeler için uygundur. DBSCAN küme sayısını otomatik belirler, keyfi şekilli kümeler bulur ve gürültü noktalarını açıkça etiketler.
  • check_circle Kaç küme seçmeliyim (K değeri)?: Dirsek Yöntemi (WCSS eğrisindeki kırılma noktası) veya Silhouette Skoru ile belirlenebilir. Alan bilgisi varsa iş probleminin doğal segmentasyon sayısı da referans alınabilir.
  • check_circle K-Means neden aynı veriye farklı sonuç verebilir?: Centroid başlatması rastgele yapıldığında farklı lokal minimumlara yakınsanabilir. K-Means++ başlatması bu riski azaltır; ayrıca `n_init` parametresiyle birden fazla başlatma denenerek en iyi sonuç seçilir.
  • check_circle K-Means büyük veri setlerinde kullanılabilir mi?: Evet; `MiniBatchKMeans` mini-batch örneklemesiyle büyük veri kümelerinde hızlı çalışır. Spark MLlib ve Dask gibi dağıtık çerçeveler milyonlarca veri noktasında K-Means uygulamasını destekler.