Python ile Agglomeratif Kümeleme: Temeller ve Uygulamalar

Agglomeratif Kümeleme Nedir?

Agglomeratif kümeleme, veri madenciliği ve makine öğrenmesinde yaygın olarak kullanılan bir kümeleme tekniğidir. Bu yöntem, verileri benzerliklerine göre gruplandırarak, veri kümesinde doğal yapılar ortaya çıkarır. Temel olarak, her bir veri noktasıyla başlar ve ardından bu noktaları benzerliklerine göre gruplar. Kümeleme süreci, başlangıçta her bir veri noktasının kendi başına bir küme olduğu varsayımıyla başlar ve zamanla daha büyük kümelerin oluşturulmasıyla devam eder.

Agglomeratif kümeleme, hiyerarşik bir yaklaşım benimsediği için, oluşan kümelerin düzeylerini gösteren bir dendrogram (hiyerarşik ağaç) oluşturur. Bu ağaç, farklı kümelerin nasıl bir araya geldiğini ve hangi noktada birleştiğini görselleştirmek için kullanılır. Böylece, kullanıcılar veri kümesine dair daha derinlemesine bir anlayış elde edebilir.

Agglomeratif Kümeleme Yöntemleri

Agglomeratif kümeleme, kullanılan mesafe ölçümüne ve birleştirme stratejisine göre farklı yöntemler içerebilir. En yaygın kullanılan mesafe ölçüm yöntemleri arasında Euclidean, Manhattan ve Cosine benzerliği bulunmaktadır. Bu ölçümler, veri noktaları arasındaki mesafeyi belirler ve hangi noktaların daha yakın olduğunu tanımlar.

Kümeleme işlemi sırasında, iki kümenin birleştirilmesi için birkaç yöntem mevcuttur. En popüler yöntemlerden bazıları şunlardır: İlk komşuluk (Single Linkage), Tam komşuluk (Complete Linkage) ve Ortalama komşuluk (Average Linkage). İlk komşuluk, iki küme arasındaki en küçük mesafeyi kullanırken, tam komşuluk en büyük mesafeyi dikkate alır. Ortalama komşuluk ise her iki kümenin ortalama mesafesini hesaplar. Bu yöntemler, küme yapısını etkilemeden ve verinin doğru bir şekilde gruplandırılmasına yardımcı olur.

Python’da Agglomeratif Kümeleme Uygulaması

Python, agglomeratif kümeleme uygulamaları için oldukça zengin kütüphaneler sunar. En sık kullanılan kütüphanelerden biri scikit-learn‘dür. Bu kütüphane, hem hiyerarşik kümeleme yöntemlerini hem de diğer gözetimsiz öğrenme algoritmalarını destekler. Kümeleme işlemi için, öncelikle gerekli kütüphaneleri yüklememiz gerekir:

import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import AgglomerativeClustering
from sklearn.datasets import make_blobs

Yukarıdaki kodda numpy ve matplotlib kütüphanelerini kullanarak veri setimizi oluşturacak ve görselleştireceğiz. Ayrıca make_blobs fonksiyonu, başlangıçta belli sayıda veri noktası oluşturmak için kullanılır. İşte bunun bir örneği:

X, y = make_blobs(n_samples=100, centers=3, cluster_std=0.60, random_state=0)
plt.scatter(X[:, 0], X[:, 1])
plt.title('Oluşturulan Veri Seti')
plt.show()

Agglomeratif Kümeleme Uygulaması

Veri setimiz oluşturulduktan sonra, agglomeratif kümeleme algoritması uygulanabilir. AgglomerativeClustering sınıfı, kümeleri oluşturmak için kullanılabilir. Aşağıdaki kod, kümeleri operasyonel hale getirmek için bu sınıfı nasıl kullanacağınızı göstermektedir:

model = AgglomerativeClustering(n_clusters=3)
model.fit(X)
plt.scatter(X[:, 0], X[:, 1], c=model.labels_, cmap='rainbow')
plt.title('Agglomeratif Kümeleme Sonucu')
plt.show()

Yukarıdaki örnekte, veri setimize 3 küme belirledik ve bu kümeleri oluşturmak için fit metodunu kullandık. Ardından, kümeleri görselleştirmek için matplotlib kullanarak sonuçları çizdik. Her bir renk, farklı bir kümeyi temsil etmektedir.

Dendrogram ile Görselleştirme

Agglomeratif kümeleme yöntemine özgü görselleştirme, dendrogram kullanmakla mümkün hale gelir. Scikit-learn kütüphanesi, dendrogram oluşturmak için scipy ile birlikte kullanılabilir. Aşağıda dendrogram oluşturan bir örnek verilmiştir:

from scipy.cluster.hierarchy import dendrogram, linkage
Z = linkage(X, 'ward')
plt.figure(figsize=(10, 7))
dendrogram(Z)
plt.title('Dendrogram')
plt.show()

Bu kod parçası, linkage fonksiyonunu kullanarak verileri hiyerarşik olarak birleştirir ve ardından dendrogram ile sonucu görselleştirir. Dendrogramda, verinin nasıl bir araya geldiği ve kümelerin ne zaman oluştuğu hakkında bilgi edinebilirsiniz.

Kümeleme Sonuçlarının Değerlendirilmesi

Agglomeratif kümeleme uygulamalarında elde edilen sonuçların değerlendirilmesi, başarı kriterlerinin belirlenmesi açısından önemlidir. Kümeleme sonuçlarını değerlendirmenin en yaygın yollarından biri, içsel ve dışsal değerlendirme metriklerini kullanmaktır. İçsel metrikler, kümelerin kendi aralarındaki benzerliğe ve ayrılığa dayanırken, dışsal metrikler önceden belirlenmiş etiketlere dayanarak değerlendirme yapar.

Örneğin, Silhouette Skoru, veri noktalarının kendi kümeleri içindeki konumlarını değerlendirmek için yaygın bir içsel metrik olarak kullanılır. Skor 1’e yaklaştıkça, noktaların kendi kümelerinde daha iyi bir konumda olduğu anlamına gelir. Öte yandan, Rand Indeksi, gerçek etiketlerin ile varsayılan etiketlerin karşılaştırılmasına dayanarak kullanılır:

from sklearn.metrics import silhouette_score
silhouette_avg = silhouette_score(X, model.labels_) 
print(f'Silhouette Skoru: {silhouette_avg}')

Sonuç ve Yöntemin Uygulanabilirliği

Agglomeratif kümeleme, veri analizi ve sınıflandırmada önemli bir yer tutan güçlü bir yöntemdir. Python’un sağladığı zengin kütüphane ekosistemi ile birlikte bu yöntemi kullanmak oldukça kolaydır. Kullanıcılar, hiyerarşik yapılar oluşturarak verilerini daha iyi anlamak için bu teknikten faydalanabilir. Dendrogram oluşturarak, verinin yapısını görselleştirmek ve yorumlamak, özellikle büyük veri setlerinde oldukça faydalı olabilir.

Agglomeratif kümeleme, çok çeşitli alanlarda uygulanabilir; örneğin, pazarlama analitiği, biyoinformatik ve sosyal ağ analizi gibi alanlarda. Verilerin doğal yapısını ortaya çıkarmak isteyen araştırmacılar ve veri bilimcileri için bu yöntem, güçlü bir araçtır. Hem hiyerarşik yapısı hem de görselleştirme yetenekleri sayesinde, veri setleri arasındaki ilişkileri anlamak kolaylaşır.

Siz de Python ile agglomeratif kümeleme yöntemini deneyerek veri setlerinizi daha iyi anlamak ve yeni keşifler yapmak için kullanabilirsiniz. Unutmayın ki, veri bilimi yolculuğunuzda denemek, öğrenmek ve bilgi paylaşmak, önemli adımlar arasında yer alır. Bu sayede, hem kendinizi geliştirebilir hem de Python topluluğuna katkı sağlarsınız.

Scroll to Top