Hiyerarşik Kümeleme Algoritması Python!

Kaynak Düğüm: 1055669

Bu makale, Veri Bilimi Blogathon

Giriş

Bu makalede, Hiyerarşik Kümeleme adı verilen K Means kümelemesine farklı bir yaklaşıma bakacağız. K Means veya K Mode ile karşılaştırıldığında, hiyerarşik Kümeleme, kümeleme mekanizmasının nasıl çalıştığına ilişkin farklı bir temel algoritmaya sahiptir. Hiyerarşik kümeleme, toplayıcı veya bölücü teknikler kullanırken, K Means, kümeler oluşturmak için merkez ve öklid mesafesinin bir kombinasyonunu kullanır. Dendrogramlar, anlamlı taksonomiler yoluyla sonuçların daha iyi yorumlanmasına yardımcı olabilecek hiyerarşik kümelemede kümeleri görselleştirmek için kullanılabilir. Bir dendrogram yaparken küme sayısını belirtmek zorunda değiliz.

Burada Hiyerarşik Kümeleme Modelini açıklamak için Python kullanıyoruz. Veri setimizde 200 AVM müşterisine ait veri var. Her müşterinin müşteri kimliği, türü, yaşı, yıllık geliri ve harcama puanı veri çerçevesine dahildir. Müşterilerinin harcama puanlarının her biri için hesaplanan tutar, gelirleri, alışveriş merkezini haftada kaç kez ziyaret ettikleri ve bir yılda harcadıkları para miktarı gibi çeşitli kriterlere dayalıdır. Bu puan 1'den 100'e kadar değişir. Cevapları bilmediğimiz için bir iş problemi bir kümeleme problemine dönüşür. Verilerin nihai kategorileri bizim tarafımızdan bilinmiyor. Sonuç olarak hedefimiz, önceden bilinmeyen bazı müşteri kümelerini keşfetmektir.

Ama önce, hiyerarşik kümelemede bazı önemli terimlere bakacağız.

Hiyerarşik Kümelemede Önemli Terimler

Bağlantı Yöntemleri

(a) kümede orijinal gözlemler a[0],…,a[|a|1] varsa (a) ve (b) kümede orijinal b[0],…,b[|b|1] nesneleri ( b), o zaman onları (b) birleştirmek için iki küme (a) ve (b) arasındaki mesafeyi hesaplamalıyız. Diyelim ki herhangi bir kümeye atanmamış bir (d) noktası var. Kümenin (a) kümeden (d) ve kümenin (b) kümeden (d) ne kadar uzakta olduğunu bulmamız gerekecek.

Kümeler artık tipik olarak, mesafe matrisini hesaplamak için farklı bir yöntem gerektiren birden çok nokta içerir. Kümeler arasındaki mesafenin veya noktadan kümeye olan mesafenin hesaplanma yöntemi bağlantı ile belirlenir. Aşağıdakiler, en sık kullanılan bağlantı mekanizmalarından bazılarıdır:

Tek Bağlantı — En benzer üyeler arasındaki mesafeler, her küme çifti için hesaplanır ve daha sonra en kısa mesafeye göre kümeler birleştirilir.

Ortalama Bağlantı — Bir kümenin tüm üyeleri ile başka bir kümenin tüm üyeleri arasındaki mesafe hesaplanır. Daha sonra bu uzaklıkların ortalaması hangi kümelerin birleşeceğini belirlemek için kullanılır.

Komple Bağlantı — Her küme çifti için en farklı üyeler arasındaki mesafeler hesaplanır ve daha sonra en kısa mesafeye göre kümeler birleştirilir.

Medyan Bağlantı — Ortalama bağlantıya benzer şekilde ortalama mesafe yerine medyan mesafeyi kullanıyoruz.

Koğuş Bağlantısı — Varyans analizi yöntemini kullanarak kümeler arasındaki mesafeyi belirler.

Merkez Bağlantısı — Her kümenin merkezi, kümeye atanan tüm noktaların ortalaması alınarak hesaplanır ve daha sonra bu merkez kullanılarak kümeler arasındaki mesafe hesaplanır.

Mesafe Hesaplama

Öklid Mesafesi en popüler olan iki veya daha fazla küme arasındaki mesafeyi hesaplamak için birden fazla yaklaşım mevcuttur. Minkowski, City Block, Hamming, Jaccard ve Chebyshev gibi diğer mesafe ölçümleri de hiyerarşik kümeleme ile kullanılabilir. Şekil 2'de gösterildiği gibi, farklı mesafe ölçümlerinin hiyerarşik kümeleme üzerinde etkisi vardır.

mesafe hesaplama

Dendrogram

Bir özellik uzayındaki nesneler arasındaki ilişki bir dendrogram ile temsil edilir. Bir özellik uzayında, sırayla birleştirilmiş nesnelerin her bir çifti arasındaki mesafeyi göstermek için kullanılır. Dendrogramlar, veri kümesi için uygun küme sayısına karar vermeden önce hiyerarşik kümeleri incelemek için sıklıkla kullanılır. Dendrogram mesafesi, birleştikleri zaman iki küme arasındaki mesafedir. Dendrogram mesafesi, iki veya daha fazla kümenin ayrık olup olmadığını veya tek bir küme oluşturmak üzere birleştirilip birleştirilemeyeceğini belirler.

Örnek E-posta

Şimdi Hiyerarşik Kümeleme Modelini göstermek için Python kullanan örneklere bakıyoruz. 200 alışveriş merkezi müşterimizin verisi elimizde veri kümesi. Her müşterinin müşteri kimliği, türü, yaşı, yıllık geliri ve harcama puanı veri çerçevesine dahildir. Müşterilerinin her birinin harcama puanları için hesaplanan tutar, gelirleri, alışveriş merkezini haftada kaç kez ziyaret ettikleri ve bir yıl boyunca harcadıkları para gibi çeşitli kriterlere dayalıdır. Bu puan 1'den 100'e kadar değişir. Cevapları bilmediğimiz için bir iş problemi bir kümeleme problemine dönüşür.

#1 Kitaplıkları içe aktarma
numpy'yi np olarak içe aktar matplotlib.pyplot'u plt olarak içe aktar pandaları pd olarak içe aktar
#2 Mall_Customers veri kümesini pandalar tarafından içe aktarma
veri kümesi = pd.read_csv('Mall_Customers.csv') X = veri kümesi.iloc[:, [3,4]].değerler

Hiyerarşik kümelemedeki bu yeni adım, optimum küme sayısını belirlemeyi de gerektirir. Bu sefer dirsek yöntemini kullanmayacağız. Dendrogramdan yararlanacağız.

#3 Optimal küme sayısını bulmak için dendrogramı kullanma. # İlk yapacağımız şey scipy kütüphanesini import etmek. scipy, hiyerarşik kümeleme yapmak ve dendrogramlar oluşturmak için araçlar içeren açık kaynaklı bir # Python kitaplığıdır. # Yalnızca gerekli aracı içe aktarın. scipy.cluster.hierarchy'yi sch olarak içe aktar 
#Bir dendrogram değişkeni oluşturalım # bağlantı aslında hiyerarşik kümelemenin algoritmasının kendisidir ve ardından #bağlantıda hangi verilere uygulayacağımızı ve ilgileneceğimizi belirtmemiz gerekir. Bu, X veri kümesi dendrogramı = sch.dendrogram(sch.linkage(X, method = "ward")) plt.title('Dendrogram') plt.xlabel('Müşteriler') plt.ylabel('Öklid uzaklıkları') plt. göstermek()

Ward yöntemi, her küme içindeki varyansı azaltmaya çalışan bir yöntemdir. Dirsek yöntemi grafiğimizi çizmek için wcss'yi en aza indirmek için K-ortalamalarını kullandığımız zamankiyle neredeyse aynı; tek fark, wcss yerine küme içi değişkenleri en aza indiriyor olmamızdır. Her küme içinde, bu varyanstır. Dendrogram aşağıda gösterilmiştir.

dendogram

Müşteriler x ekseninde temsil edilir ve kümeler arasındaki Öklid mesafesi y ekseninde temsil edilir. Bu şemaya göre en iyi küme sayısını nasıl buluruz? Yukarıdaki şemada kırmızı çerçeveli çizgi olan herhangi bir yatay çizgiyi geçmeden yapabileceğimiz en uzun dikey mesafeyi bulmak istiyoruz. Diyagramdaki satırları sayalım ve en iyi kaç kümenin olduğunu bulalım. Bu veri kümesi için küme numarası 5 olacaktır.

#4 Hiyerarşik kümelemeyi Mall_Customes veri kümesine uydurma # Hiyerarşik kümeleme için iki algoritma vardır: Toplayıcı Hiyerarşik Kümeleme ve # Bölücü Hiyerarşik Kümeleme. sklearn.cluster import AgglomerativeClustering hc = AgglomerativeClustering(n_clusters = 5, affinity = 'euclidean', linkage ='ward') # algoritma sınıfımız için Öklid uzaklığı ve ward yöntemini seçiyoruz # X veri kümesine hiyerarşik kümeleme algoritmasını sığdırmaya çalışalım her müşteri için müşterinin hangi kümeye ait olduğunu söyleyen # küme vektörünü oluştururken. y_hc=hc.fit_predict(X)
#5 Kümeleri görselleştirme. Bu kod, k-means görselleştirme koduna benzer. #Hiyerarşik kümeleme için sadece y_kmeans vektör adını y_hc olarak değiştiriyoruz plt.scatter(X[y_hc==0, 0], X[y_hc==0, 1], s=100, c='red', label = 'Küme 1') plt.scatter(X[y_hc==1, 0], X[y_hc==1, 1], s=100, c='mavi', label ='Küme 2') plt.scatter( X[y_hc==2, 0], X[y_hc==2, 1], s=100, c='green', label ='Küme 3') plt.scatter(X[y_hc==3, 0] , X[y_hc==3, 1], s=100, c='camgöbeği', etiket ='Küme 4') plt.scatter(X[y_hc==4, 0], X[y_hc==4, 1 ], s=100, c='macenta', label ='Küme 5') plt.title('Müşteri Kümeleri (Hiyerarşik Kümeleme Modeli)') plt.xlabel('Yıllık Gelir(k$)') plt.ylabel ('Harcama Puanı(1-100') plt.show()
kümeler | Hiyerarşik kümeleme
Küme1(Kırmızı), Küme2 (Mavi), Küme3(Yeşil), Küme4(Mavi), Küme5 (Macenta)

Bu kümeler alışveriş merkezinin müşteri segmenti olarak düşünülebilir.

Standart bir Hiyerarşik Kümeleme Modeli için hepsi bu kadar. Veri kümesi ve tüm kodlar Github bölümünde mevcuttur.

Sonuç

Herhangi bir kümeleme alıştırmasında, küme sayısını belirlemek zaman alan bir süreçtir. İşin ticari tarafı daha çok bu gruplardan anlam çıkarmakla ilgili olduğundan, kümeleri iki boyutta görselleştirmek ve farklı olup olmadıklarını görmek çok önemlidir. Bu amaca ulaşmak için PCA veya Faktör Analizi kullanılabilir. Bu, nihai sonuçları çeşitli paydaşlara sunmak için yaygın olarak kullanılan bir yöntemdir ve herkesin çıktıyı tüketmesini kolaylaştırır.

EndNote

Okuduğunuz için teşekkürler!
Umarım makaleyi beğenmişsinizdir ve bilginizi artırmışsınızdır.
Benimle rahatça iletişime geçebilirsin on e-posta
Bahsedilmeyen bir şey mi var veya düşüncelerinizi paylaşmak mı istiyorsunuz? Aşağıda yorum yapmaktan çekinmeyin, size geri döneceğim.

Yazar Hakkında

Hardikkumar M. Dhaduk
Veri Analisti | Dijital Veri Analiz Uzmanı | Veri Bilimi Öğrencisi
Benimle bağlan Linkedin
Benimle bağlan Github

Bu makalede gösterilen medya Analytics Vidhya'ya ait değildir ve Yazarın takdirine bağlı olarak kullanılır.

Kaynak: https://www.analyticsvidhya.com/blog/2021/08/hierarchical-clustering-algorithm-python/

Zaman Damgası:

Den fazla Analitik Vidhya