Clustering ( Kümeleme )
Clustering ( Kümeleme ) bir veri setinde benzer özellikler gösteren verilerin gruplara ayrılmasına denir. Kümelemeyi basitçe “nesneleri benzerliklerine göre belli gruplar halinde düzenleme işi” olarak tanımlayabiliriz. Kümeleme yöntemlerinde, çıktı değerlerinin olmadığı durumlarda sadece girdi değerlerinden hareketle yani denetimsiz öğrenme(unsupervised learning) ile bu girdiler gruplandırılmaktadır.
Unsupervised learning(Denetimsiz öğrenme):
Veri kümesi ile çıktıların olmadığı öğrenme metodudur. Veri kümesindeki verileri yorumlayarak ortak noktaları bulmak ve bunları kümeleştirme işlemi yapılarak anlamlı bir veri elde edebilmektir.
K-Means Algoritması
En eski kümeleme algoritmalarından olan k-means, 1967 yılında J.B. MacQueen tarafından geliştirilmiştir.
K-Means Kümeleme Algoritması Data Mining Dünyasında En Çok Kullanılan Algoritmaların başında yer almaktadır.
K-Means algoritması bir unsupervised learning(denetimsiz öğrenme) 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.
K adet özgün küme oluşturduğu ve her kümenin merkezi, kümedeki değerlerin ortalaması olduğu için K-Ortalamalar denmektedir.
Algoritma istatistiksel olarak benzer nitelikteki kayıtları aynı gruba sokar. Bir elemanın yalnızca bir kümeye ait olmasına izin verilir. Küme merkezi kümeyi temsil eden değerdir.
Bu algoritmada ‘K’ parametresi elimizdeki verinin kaç tane kümeye ayrılacağını belirtiyor. Bu parametrenin seçimi için birkaç analiz yöntemi olsa da en iyisi algoritmayı farklı k değerlerinde yürütüp işimize en çok yarayanı almaktır. Çünkü farklı sayıda gruplar, farklı özellikleri yüz üstüne çıkarabilir.

Burada en önemli iki amaç şudur;
- Küme içindeki değerler birbirlerine en çok benzemeli,
- Kümeler birbirine mümkün olduğunca benzememeli
Bu istekleri gerçekleştirmek için algoritma tarafında sırasıyla şu adımlar gerçekleştirilmelidir:
- Küme merkezlerinin belirlenmesi
- Merkez dışındaki örneklerin mesafelerine göre sınıflandırılması
- Yapılan sınıflandırmaya göre yeni merkezlerin belirlenmesi (veya eski merkezlerin yeni merkeze kaydırılması)
- Kararlı hale (stable state) gelinene kadar 2. ve 3. adımların tekrarlanması
Bu yöntemde K sayısını belirleme önemli bir problemdir. Uygun K sayısını seçmek için çeşitli metotlar bulunmaktadır. Kısaca metotları açıklamak gerekirse;
Elbow metodu; noktaların her K değerine göre küme merkezine uzaklıklarının karesi toplamı hesaplanmaktadır. Bu değerlere göre her K değeri için grafik çizilmektedir. Grafik üzerinde toplamlar arasındaki farkın azalmaya başladığı dirsek noktası en uygun K değeri olarak belirlenmektedir. Dirsek yöntemi olarak da biliniyor.

Silhoutte metodu; her K değeri için kümelerin farklılığına bakmaktadır. Oluşan kümeler için -1 ve 1 arasında değerler üretmektedir. 1’e en yakın K değeri en uygun olarak belirlenmektedir.





Şekil:1 k başlangıç ”Means” (bu durumda k = 3) veri alanında rastgele oluşturulur (renkli olarak gösterilir).
Şekil:2 k kümeler, her gözlemi en yakın ortalama ile ilişkilendirerek oluşturulur. Buradaki bölümler , araçlarla oluşturulan Voronoi diagram temsil eder .
Şekil: 3 K kümelerinin her birinin centroid yeni ortalama haline gelir.
Şekil :4 Adım 2 ve 3 yakınsama sağlanana kadar tekrarlanır.

K-Means ile işlenmiş data ile işlem yapmamız daha kolay yoksa daha çok uğraşırız veri ile istenmeyen sonuçlar çıkabilir.Bu durumu ufak verilerde gözlemleyemeyiz ama büyük ve kritik verilerde can sıkıcı olabilir .
Şekilde 5 ‘de görüldüğü gibi Original data ve Clustered data arasında ki farkı;
Bundan dolayı veriyi işlememiz lazım ki problemler için uygun çözümü bulalım değil mi?
Veriyi işledikten sonra şekil 6’deki gibi probleme çözüm olsun isteriz .

K-Means’ı Uygulama Örnekleri
- Belge Sınıflandırması: Belgeleri etiketlere, konulara ve belgenin içeriğine göre birden fazla kategoride kümeleyin. Bu çok standart bir sınıflandırma problemidir ve k-means aracı bu amaç için oldukça uygun bir algoritmadır.
- Suç Yerlerinin Belirlenmesi: Bir şehirdeki belirli bölgelerde mevcut olan suçlarla ilgili veriler, suç kategorisi, suç alanı ve ikisi arasındaki ilişki, bir şehirdeki ya da bölgedeki suça eğilimli alanlara ilişkin kaliteli bilgiler verebilir.
- Oyuncu Analizi: Oyuncu istatistiklerini analiz etmek, spor dünyasının her zaman kritik bir unsuru olmuştur ve artan rekabetle birlikte, makine öğrenmenin burada oynayacağı kritik bir rol vardır.
- Müşteri Segmentasyonu: Kümeleme, pazarlamacıların müşteri tabanını geliştirmelerine, hedef alanlarda çalışmasına ve müşterileri satın alma geçmişine, ilgi alanlarına veya etkinlik izlemeye göre segmentlere ayırmasına yardımcı olur. Sınıflandırma, şirketin belirli kampanyalar için belirli müşteri kümelerini hedeflemesine yardımcı olur.
- Sigortacılık: motor sigorta poliçe sahiplerinin ortalama maliyetlerinin hesaplanması için, sahtekârlıkların belirlenmesi için gruplandırılması
- Şehir plancılığı: tiplerine, değerlerine ve coğrafik konumlarında göre evlerin gruplandırılması
- Deprem araştırmaları: gözlenen deprem merkezlerinin gruplanarak tehlikeli bölgelerin belirlenmesi
- Biyoloji: bitkilerin ve hayvanların verilen ¨özelliklerine göre sınıflandırılması Kütüphaneler: kitapların düzenlenmesi
- Sigorta Dolandırıcılığı Tespiti:Hileli iddialarla ilgili geçmiş verileri kullanarak, sahte iddiaları gösteren kümelere olan yakınlığına dayanarak yeni iddiaları izole etmek mümkündür. Sigorta sahtekarlığının bir şirket üzerinde potansiyel olarak milyonlarca dolarlık bir etkisi olabileceğinden, sahtekarlıkları tespit etme yeteneği çok önemlidir.
- Pazar Segmentasyonu: müşteri özelliklerini ve geçmiş alışverişlerini barındıran geniş bir veritabanından benzer davranışları sergileyen müşterilerin gruplandırılması
Şimdi K-Means üzerinde ufak bir örnek proje yapacam . İris veri seti üzerinden kümele yapıcam kodları Jupyter notebook üzerinden göstericem her koda açıklama satırı ekledim.
1 2 3 |
# csv dosyalarını okumak için #pandası import ettik import pandas as pd |
1 2 |
# csv dosyamızı okuduk. data = pd.read_csv('Iris.csv') |
1 2 |
# Veriler düzenledik v = data.iloc[:,1:-1].values |
1 2 |
# KMeans sınıfını import ettik from sklearn.cluster import KMeans |
1 2 3 4 |
# KMeans sınıfından bir nesne ürettik # n_clusters = Ayıracağımız küme sayısı # init = Başlangıç noktalarının belirlenmesi km = KMeans(n_clusters=3, init='k-means++',random_state=0) |
1 2 |
# Kümeleme işlemi yaptık km.fit(v) |
1 2 |
# Tahmin işlemi yapıyoruz. predict = km.predict(v) |
1 2 |
# Küme merkez noktalarını ayarladık. print(km.cluster_centers_) |
1 2 3 4 5 6 7 8 9 |
# Grafik şeklinde ekrana basmak için matplotlib kütüphanesini import ettim import matplotlib.pyplot as plt #Sonra kümeleme ve renk verilerini ayarladım plt.scatter(v[predict==0,0],v[predict==0,1],s=50,color='red') plt.scatter(v[predict==1,0],v[predict==1,1],s=50,color='blue') plt.scatter(v[predict==2,0],v[predict==2,1],s=50,color='green') plt.title('K-Means Iris Dataset') plt.show() |
1 2 3 4 5 6 7 8 9 |
#Sonra kümeleme ve renk verilerini ayarladım plt.scatter(v[predict==0,0],v[predict==0,1],s=50,color='red') plt.scatter(v[predict==1,0],v[predict==1,1],s=50,color='blue') plt.scatter(v[predict==2,0],v[predict==2,1],s=50,color='green') #burada siyah rengi ekledim çıktılara bakalım plt.scatter(v[predict==3,0],v[predict==3,2],s=50,color='black') plt.title('K-Means Iris Dataset') plt.show() |
Şekil:7 ve Şekil:8 de görüldüğü gibi “K” seçimini önemlidir.Çünkü kümeleme yaparken yanlış veri etiketleme kritik projelerde çok etkili olabilir.
Kodlara buradan ulaşabilirsiniz. https://bit.ly/2BKiAZx
Sağlıcakla kalın 🙂
Kaynaklar:
https://en.wikipedia.org/wiki/K-means_clustering
https://dzone.com/articles/10-interesting-use-cases-for-the-k-means-algorithm
http://mustafaakca.com/k-means-kumeleme-algoritmasi/
https://medium.com/deep-learning-turkiye/k-means-algoritması-b460620dd02a
http://bilgisayarkavramlari.sadievrenseker.com/2008/12/15/k-ortalama-algoritmasi-k-means-algorithm/