Menu
CoddyTech

K-Means’e Giriş

Coddy'nin Makine Öğrenmesine Giriş kursunda ders 9 / 19.

K-means, en basit ve en yaygın kullanılan kümeleme algoritmalarından biridir. n adet gözlemi, her bir gözlemin en yakın ortalamaya (merkez noktası - centroid) sahip kümeye ait olduğu ve kümenin bir prototipi olarak hizmet ettiği k adet kümeye bölmeyi amaçlar. Diyelim ki elinizde bir sürü farklı meyve var ve bunları türlerine göre sepetlere ayırmak istiyorsunuz ama etiketleriniz yok. K-means, meyveler yerine veri noktalarıyla tam olarak bunu yapmanıza yardımcı olur!

Incheol, CC BY-SA 4.0, Wikimedia Commons aracılığıyla

K-Means Nasıl Çalışır?

Algoritma, bir veri kümesini k kümeye bölmek için basit ve verimli bir yinelemeli prosedür izler.

  1. Merkez Noktalarını Başlatın: İlk olarak, veri kümesinden başlangıç merkez noktaları olarak k nokta seçin. Bu noktalar rastgele veya belirli bir stratejiye göre seçilebilir.
  2. Kümeleri Atayın: Veri kümesindeki her bir nokta için, en yakın merkez noktasını bulun (Öklid mesafesi gibi mesafe ölçümleri kullanarak) ve noktayı o kümeye atayın.
  3. Merkez Noktalarını Güncelleyin: Tüm noktalar kümelere atandıktan sonra, her kümedeki tüm noktaların ortalamasını alarak merkez noktalarını yeniden hesaplayın.
  4. 2. ve 3. Adımları Tekrarlayın: Yukarıdaki adımlar, merkez noktaları artık önemli ölçüde değişmeyene kadar tekrarlanır. Bu, algoritmanın yakınsadığı ve kümelerin kararlı olduğu anlamına gelir.
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

challenge icon

Görev

Kolay

Optimal küme sayısını, k, belirlemek çok önemli bir adımdır. Bunun için çeşitli yöntemler vardır ve Dirsek Yöntemi (Elbow Method) en popüler olanlardan biridir.

Bu teknik, K-means algoritmasını k=1'den k=n'ye kadar sürekli olarak yinelemeyi içerir. Her k değeri için, küme içi kareler toplamı (WCSS) değerini hesaplarız.

Her kümenin bir merkezi (centroid) vardır; WCSS, merkezden olan tüm uzaklıkların karelerinin toplamıdır.

Aynı kümedeki veri noktalarının bir listesini alan ve kümenin wcss değerini döndüren wcss adında bir fonksiyon oluşturun. Şu adımları izleyin:

  • Merkezi (centroid) bulun - Bir merkez, bir kümedeki tüm noktaların ortalama konumunu temsil eden bir noktadır: 
    Centroid formula
    Örneğin, işte iki adet 3D noktadan oluşan bir liste: (1, 2 ,3), (4, 5, 6). Merkez şudur:

    (1 + 4) / 2 = 2.5,
    (2 + 5) / 2 = 3.5,
    (3 + 6) / 2 = 4.5,
    >> (2.5, 3.5, 4.5)
  • Her nokta ile merkez arasındaki Öklid mesafesini (Euclidian distance) hesaplayın
  • Tüm mesafelerin toplamını nokta sayısına bölerek döndürün

Kendin dene

def euclidian_distance(point_a, point_b):
    return (sum([(point_a[i] - point_b[i])**2 for i in range(len(point_a))]))**0.5

def wcss(points):
    # Buraya kod yazın

Makine Öğrenmesine Giriş bölümündeki tüm dersler

Kendi başına pratik yap: Online Python derleyicisi