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 benzer özellikler taşırken farklı kümeler arasındaki benzerlik minimum düzeyde tutulur. Algoritma dört temel adımla çalışır. Başlatma aşamasında K adet merkez noktası (centroid) rastgele ya da K-Means++ yöntemiyle belirlenir. K-Means++, merkezleri birbirinden olabildiğince uzağa yerleştirerek daha kararlı bir başlangıç noktası oluşturur; bu da yakınsama hızını artırır ve yerel minimuma takılma riskini azaltır. Atama adımında her veri noktası, Öklid uzaklığı ölçütüyle en yakın merkeze atanır. Güncelleme adımında her küme için noktaların koordinat ortalaması hesaplanarak yeni centroid belirlenir. Atama ve güncelleme döngüsü, hiçbir centroid yer değiştirmeyene kadar ya da belirli bir iterasyon sınırına ulaşılana kadar tekrarlanır. Algoritmanın zaman karmaşıklığı O(n · K · I · d) olup n veri noktası sayısını, K küme sayısını, I iterasyon sayısını ve d boyut sayısını ifade eder. Algoritmanın en kritik parametresi K değeridir; kaç küme istediğimizi önceden belirtmek gerekir. K'yı belirlemek için en yaygın yöntem Dirsek Yöntemi'dir (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, Calinski-Harabasz ve Davies-Bouldin indeksleri gibi istatistiksel ölçütler de K seçiminde kullanılan alternatif yaklaşımlardır. K-Means'ın temel avantajları sadelik ve ölçeklenebilirliktir; milyonlarca veri noktasında bile makul sürelerde çalışır. Bununla birlikte bazı sınırlılıkları göz ardı edilmemelidir: K değerinin önceden belirlenmesi zorunludur; algoritma yalnızca küresel (convex) biçimli kümelerde tutarlı sonuçlar verir; aykırı değerlere (outlier) karşı duyarlıdır ve rastgele başlangıç noktaları farklı çalışmalarda farklı sonuçlara yol açabilir. Bu zayıflıkları gidermek amacıyla K-Means++, Mini-Batch K-Means, Bisecting K-Means ve ISODATA gibi varyantlar geliştirilmiştir. Gerçek dünyada K-Means'ın uygulama alanları son derece geniştir: müşteri segmentasyonu, belge ve haber kümeleme, görüntü renk niceleme, pazar analizi, anomali tespiti ve öneri sistemlerinde özellik mühendisliği adımı olarak kullanılır. Scikit-learn, Spark MLlib ve TensorFlow gibi kütüphaneler K-Means'ı hazır API'lerle sunmakta; bu da algoritmayı veri bilimcilerin günlük araç setinin vazgeçilmez bir parçası haline getirmektedir.

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 dek — 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; eğri belirgin biçimde yataylaşmadan önce dirsek yaptığı noktadaki K optimal seçimdir. Silhouette Skoru ise her noktanın kendi kümesine ne kadar yakın, komşu kümeye ne kadar uzak olduğunu ölçer: -1 ile +1 arasında değer alır, yüksek değerler daha iyi kümeleme kalitesine işaret eder.

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

  • check_circle K-Means vs. DBSCAN: DBSCAN K değeri gerektirmez ve keyfi şekilli kümeleri tespit edebilir; ancak büyük veri setlerinde K-Means kadar hızlı değildir.
  • check_circle K-Means vs. Hiyerarşik Kümeleme: Hiyerarşik yöntem dendogram ile tüm kümeleme yapısını gösterir; K-Means ise büyük veri setlerinde çok daha verimlidir.
  • check_circle K-Means vs. Gaussian Mixture Model: GMM olasılıksal bir çerçeve kullanır ve esnek eliptik küme biçimlerine uyum gösterebilir; K-Means ise katı küre varsayımı yapar.
  • check_circle K-Means vs. Mini-Batch K-Means: Mini-Batch varyantı her iterasyonda tam veri seti yerine rastgele küçük bir örnek kullanır; büyük veri setlerinde belirgin hız kazanımı sağlar.

Uygulama Alanları

  • check_circle Müşteri Segmentasyonu: Satın alma alışkanlıkları ve demografik verilere göre müşterileri gruplandırarak hedefli pazarlama stratejileri geliştirilir.
  • check_circle Belge ve Metin Kümeleme: Haber makaleleri veya akademik yayınlar konu benzerliğine göre otomatik olarak gruplandırılır.
  • check_circle Görüntü Sıkıştırma: Pikseller renk uzayında kümelenerek görüntüdeki renk paleti azaltılır; bu işlem kayıplı görüntü sıkıştırmanın temelidir.
  • check_circle Anomali Tespiti: Hiçbir kümeye yakın olmayan veri noktaları aykırı değer (outlier) olarak işaretlenir; dolandırıcılık tespitinde kullanılır.

Python ile K-Means Uygulaması

Scikit-learn kütüphanesinde K-Means kullanımı birkaç satıra indirgenir: from sklearn.cluster import KMeans kmeans = KMeans(n_clusters=5, init='k-means++', random_state=42) kmeans.fit(X) labels = kmeans.labels_ n_clusters parametresi K değerini, init='k-means++' ise geliştirilmiş başlatma stratejisini belirtir. random_state tekrarlanabilirlik için sabitlenir. Büyük veri setlerinde MiniBatchKMeans sınıfı kullanılarak bellek ve hız optimizasyonu yapılabilir.

Sık Sorulan Sorular

  • check_circle K-Means neden her seferinde farklı sonuç verebilir?: Algoritma centroid'leri rastgele başlattığı için farklı başlangıç noktaları farklı yerel minimumlara yakınsayabilir. K-Means++ başlatması ve n_init parametresiyle birden fazla çalıştırma bu sorunu büyük ölçüde azaltır.
  • check_circle K-Means kategorik verilerle çalışır mı?: Standart K-Means Öklid uzaklığına dayandığından yalnızca sayısal verilerle çalışır. Kategorik veriler için K-Modes veya K-Prototypes gibi varyantlar ya da kategorik değişkenlerin sayısal kodlanması gerekir.
  • check_circle Optimal K sayısını bulmak için hangi yöntem daha iyidir?: Dirsek Yöntemi sezgisel ve hızlıdır ancak bazen net bir dirsek noktası oluşmaz. Silhouette Skoru matematiksel olarak daha tutarlı bir ölçüt sunar; her iki yöntemi birlikte kullanmak en güvenilir seçimi getirir.
  • check_circle K-Means büyük veri setleriyle kullanılabilir mi?: Evet; Mini-Batch K-Means, tam veri seti yerine rastgele örnekler üzerinde çalışarak milyonlarca kayıt içeren veri setlerinde hızlı ve ölçeklenebilir kümeleme yapar. Spark MLlib ise dağıtık ortamlar için K-Means'ı paralel olarak çalıştırır.