Machine Learning — Clustering ( Kümeleme )— K-Means Algorithm —Hierarchical Clustering ( Hiyerarşik Kümeleme )— Part 13
Clustering ( Kümeleme ) bir veri setinde benzer özellikler gösteren verilerin gruplara ayrılmasına denir. Aynı küme içinde benzerlikler fazla, kümeler arası benzerlikler azdır. Unsupervised Learning ( Gözetimsiz öğrenme ) vardır yani önceden herhangi bir bilgi verilmez. K-Means ve Hiyerarşik Bölütleme yaygın olarak kullanılan kümeleme algoritmalarındandır. Bu algoritmalar müşteri segmentasyonu, pazar segmentasyonu, bilgisayar ile görü gibi alanlarda sıkça kullanılırlar.
K-Means Algoritması
K-Means algoritması bir unsupervised learning ve kümeleme algoritmasıdır. K-Means’ teki K değeri küme sayısını belirler ve bu değeri parametre olarak alması gerekir. Bu durum aslında bir dezavantajdır. K değerini kendi hepsalayan X-Means adında başka bir algoritmada vardır. Algoritmanın basit bir çalışma şekli vardır.
K değeri belirlendikten sonra algoritmada rastgele K tane merkez noktası seçer. Her veri ile rastgele belirlenen merkez noktaları arasındaki uzaklığı hesaplayarak veriyi en yakın merkez noktasına göre bir kümeye atar. Daha sonra her küme için yeniden bir merkez noktası seçilir ve yeni merkez noktalarına göre kümeleme işlemi yapılır. Bu durum sistem kararlı hale gelene kadar devam eder.
K-Means algoritmasındaki başlangıç merkez noktalarının rastgele atanması sorunlara yol açabilmektedir. Başlangıç noktalarını daha iyi seçebilmek için 2007 yılında David Arthur ve Sergei Vassilvitskii K-Means algoritmasının bir varyasyonu olan K-Means++ algoritmasını geliştirilmiştir. K-Means++’a göre rastgele başlangıç noktası seçildikten sonra diğer tüm veriler ile arasındaki mesafe hesaplanır. Bu mesafenin karesi alınıp belli hesaplamalar yaparak yeni başlangıç noktaları seçilir. Bu işlemin kamaşıklık analizi O(log k)’dır.
Not : Yapıcağımız iki örnekte de Iris veri seti kullanılmıştır. Buraya tıklayarak indirebilirsiniz.
Hierarchical Clustering ( Hiyerarşik Kümeleme )
Hiyerarşik kümeleme adındanda anlaşılacağı üzere bir kümeleme algoritmasıdır. Agglomerative ( Parçadan bütüne ) ve Divisive ( Bütünden parçaya ) olarak iki farklı varyasyonu vardır.
Agglomerative varyasyonunu anlatmaya çalışırsak ilk önce tüm veriler bir küme haline getirilir yani N tane eleman varsa N tane küme oluşur. Daha sonra birbirine mesafe olarak yakın olan kümeler birleşerek yeni bir küme oluşturur. Bu durum sistem kararlı oluncaya kadar devam eder. Divisive ise Agglomerative’ in tam tersidir. İlk başta tüm veriler tek bir küme oluşturulur. Daha sonra bu küme parçalanarak kümeleme işlemi yapılır.
Agglomerative ( Yığınsal ) hiyerarşik kümelemede mesafe hesaplamak için bir çok yol vardır. Dendrogram oluşturmada da kullanılırlar.
Single Linkage : İki küme arasındaki en yakın mesafeyi hesaplar.
Complete Linkage: İki küme arasındaki en uzak mesafeyi hesaplar.
Average Linkage: İki küme arasındaki ortalama mesafeyi hesaplar.
Bunların dışında ward, weighted, centroid ve median yöntemleri vardır. Seçilen yöntem sonucu etkiler.
Dendrogram ( Öbek Ağacı )
Dendrogram, benzer veri kümeleri arasındaki ilişkileri veya hiyerarşik kümelenmeyi gösteren bir ağaç diyagramıdır. Kaç tane küme oluşturacağımız bilgisini verir. En uzun bacaktan çizilen yatay çizgi küme sayısını verir. Dendrogram şemasını yorumlarsak kümelenme şekli aşağıdaki gibidir.
- E — F kümelenmiş (EF)
- A — B kümelenmiş (AB)
- D — EF kümelenmiş (DEF)
- C — DEF kümelenmiş (CDEF)
- AB —CDFE kümelenmiş (ABCDEF)
Sonuç
Hepsi bu kadar. Bu yazıda Kümeleme ve K-Means , Hiyerarşik kümeleme algoritmalarının ne olduğunu ve Python dili ile nasıl kodlanabileceğini öğrendiniz.
Okuduğunuz için teşekkürler.