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.