Makine öğrenmesindeki öğrenmeler gözetimli, gözetimsiz ve takviyeli öğrenme olarak ayrılabilir. Gözetimli öğrenmede sınıflandırma ve regresyon çalışmaları yer alır ve hedef değerleri algoritmaya verilerek makine öğrenmesi sağlanır. Gözetimsiz öğrenmede ise en sık çalışılan konu kümeleme çalışmasıdır. Gözetimsiz öğrenmede ayrıca özellik çıkarımı (Feature Extraction), birincil etken analizi (Principle Component Analysis), ya da aykırı veri analizi (Outlier Analysis) gibi çalışmalar bulunur. Bu yazıda gözetimsiz öğrenmedeki kümeleme çalışmalarına örnek olarak K-Means algoritması ve uygulaması gösterilecektir.
Gözetimli ve Gözetimsiz Öğrenme

Sınıflandırma grafiğinde kırmızı ve daire şeklinde noktalar görülebilir. Başlangıçta bu noktaların sınıfları ya da renkleri ve şekilleri makineye veriliyor. Ardından makinenin bunları öğrenmesi ve yeni gelecek verileri bu öğrenmeye göre sınıflandırması isteniyor. Sınıflandırma çalışmasında sınıfları birbirinden ayıracak en uygun çizgi belirlenmeye çalışılır. Bu çizgiyi çizdikten sonra veri setini ne kadar iyi sınıflandırdığımız daha sonra eğitim ve test setleri üzerinden hesaplanır. Diğer grafikte sadece kırmızı ve daire şeklinde noktalar olduğu görülür. Bu veri setinde gruplar oluşturulmak istenirse kümeleme algoritmalarını kullanılabilir. Kümeleme algoritmaları veri setindeki benzer yapıda bulunan verileri bir araya getirerek gruplar oluşturmaya çalışır. Veriler arasındaki Öklid uzaklığa, Minkowski uzaklığa, Manhattan uzaklığa bakarak verilerin ne kadar benzediğini/benzemediğini hesaplamaya çalışır.
Kümeleme Analizinde Sorulacak Sorular
Kısaca kümeleme algoritmasında şu sorular başlangıçta sorulur.
- Gruplama denklemi olarak hangi verilerin ne kadar benzediğine nasıl karar vereceğiz?
- Kümeleme sonucu ne kadar doğru, ne kadar hızlı verimli?
- Veri içerisinde ne kadar küme olacağını düşüneceğiz?
Kümeleme Algoritmalarının Örnek Uygulama Alanları
- Benzer özellikteki müşterilerin belirlenerek reklam kampanyalarının müşteri özelliklerine göre ayrı belirlemek
- İnternetteki benzer dokümanları gruplamak (Benzerlik raporları gibi)
- Benzer özellikteki protein dizilimlerinin ortaya çıkarılması (COVID19 hangi virüsün protein dizisine benziyor gibi)
- Benzer özellikteki şarkıları bir araya getirerek bir kategorizasyon yapmak
K-Means Kümeleme Algoritması
K-means kümelemede en çok kullanılan algoritmadır. Verinin kesin bir şekilde hangi kümeye ait olduğunu söyler. Yani bulanık ya da kaba küme olduğunu belirtmez. K-means algoritması önce veriyi k adet kümeye böler. Kümelerin orta noktalarını(centroid) bulur. Her bir veriyi bölünen kümelerden verinin en yakın olduğu kümesine atar. Burada hangi uzaklık ölçüsü kullanılacaksa ona göre bir hesaplama gerçekleştirilir. K-means algoritması bulunan kümedeki orta noktanın diğer orta noktalardan olabildiğince uzak olmasını bir kümenin içerisindeki verilerin ise olabildiğince yakın olmasını amaçlar. Aşağıda akış şeması verilmiştir.
K nokta sayısı kadar orta nokta belirle
Tekrarla
Her bir noktayı en yakın orta noktanın olduğu kümeye dahil et.
Tekrar orta noktaları hesapla
Orta noktalar değişmeyene kadar devam et
K-Means Algoritması Uygulaması
Scikit learn kütüphanesi içerisinde K-Means gibi birçok kümeleme algoritması vardır. K-means algoritması uygulamasını biraz daha kolay anlayabilmek için iris veri seti üzerinde ele alalım.
# Gerekli kütüphanelerin çağrılması from sklearn.datasets import load_iris import matplotlib.pyplot as plt import pandas as pd from sklearn import cluster plt.style.use('ggplot')
# Veriseti iris = load_iris() X, y = load_iris(return_X_y=True)
# ilk 2 özelliğin serpilme grafiği plt.scatter(X[:,0], X[:,1], c=y) plt.xlabel(iris.feature_names[0]) plt.ylabel(iris.feature_names[1])

# 3 kümeye ayıralım kmeans = cluster.KMeans(n_clusters=3, random_state=42) kmeans.fit(X)
# bulunan 3 kümenin orta noktası kmeans.cluster_centers_.round(2)
array([[5.9 , 2.75, 4.39, 1.43], [5.01, 3.43, 1.46, 0.25], [6.85, 3.07, 5.74, 2.07]])
# Sonuç kümeleri kmeans.labels_
array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 0, 2, 0, 2, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 0, 2, 2, 2, 0, 2, 2, 2, 0, 2, 2, 0])
# Kümeleme Sonuçları plt.scatter(X[:,0], X[:,1], c=kmeans.labels_)

# Gerçek sınıfların olduğu grafik plt.scatter(X[:,0], X[:,1], c=y) plt.xlabel(iris.feature_names[0]) plt.ylabel(iris.feature_names[1])

Ders Sunumu
Ders Videosu
Kaynaklar
- Akküçük, Ulaş. “Veri madenciliği: kümeleme ve sınıflama algoritmaları”. İstanbul: Yalın Yayıncılık 18 (2011).
- Han, Jiawei, Jian Pei, ve Micheline Kamber. Data mining: concepts and techniques. Elsevier, 2011.
- Kantardzic, Mehmed. Data mining: concepts, models, methods, and algorithms. John Wiley & Sons, 2011.
- Sumathi, Sai, ve S. N. Sivanandam. Introduction to data mining and its applications. C. 29. Springer, 2006.
- Tan, Pang-Ning, Michael Steinbach, ve Vipin Kumar. Introduction to data mining. Pearson Education India, 2016.
- Towards Data Science. “Towards Data Science”. Erişim 29 Mart 2020. https://towardsdatascience.com/.VanderPlas, Jake. Python Data Science Handbook. OReilly Media. Inc, 2017.