Algoritma Pengelompokan Hirarki Python!

Node Sumber: 1055669

Artikel ini diterbitkan sebagai bagian dari Blogathon Ilmu Data

Pengantar

Pada artikel ini, kita akan melihat pendekatan berbeda untuk pengelompokan K Means yang disebut Pengelompokan Hirarki. Dibandingkan dengan K Means atau K Mode, Hierarchical Clustering memiliki algoritma dasar yang berbeda untuk cara kerja mekanisme clustering. Pengelompokan hierarki menggunakan teknik agglomerative atau divisive, sedangkan K Means menggunakan kombinasi jarak centroid dan euclidean untuk membentuk cluster. Dendrogram dapat digunakan untuk memvisualisasikan cluster dalam pengelompokan hierarkis, yang dapat membantu interpretasi hasil yang lebih baik melalui taksonomi yang bermakna. Kita tidak perlu menentukan jumlah cluster saat membuat dendrogram.

Di sini kita menggunakan Python untuk menjelaskan Model Pengelompokan Hirarki. Kami memiliki 200 data pelanggan mal di dataset kami. Setiap customerID pelanggan, genre, usia, pendapatan tahunan, dan skor pengeluaran semua termasuk dalam kerangka data. Jumlah yang dihitung untuk setiap skor pengeluaran klien mereka didasarkan pada beberapa kriteria, seperti pendapatan mereka, berapa kali seminggu mereka mengunjungi mal, dan jumlah uang yang mereka habiskan dalam setahun. Skor ini berkisar dari 1 hingga 100. Karena kita tidak tahu jawabannya, masalah bisnis menjadi masalah pengelompokan. Kategori akhir data tidak kami ketahui. Akibatnya, tujuan kami adalah menemukan beberapa klaster pelanggan yang sebelumnya tidak dikenal.

Tetapi pertama-tama, kita melihat beberapa istilah penting dalam pengelompokan hierarkis.

Istilah Penting dalam Pengelompokan Hirarki

Metode Tautan

Jika ada (a) pengamatan asli a[0],…,a[|a|1] di cluster (a) dan (b) objek asli b[0],…,b[|b|1] di cluster ( b), maka kita harus menghitung jarak antara dua cluster (a) dan (b) untuk menggabungkannya (b). Katakanlah ada titik (d) yang belum ditetapkan ke salah satu cluster. Kita perlu mencari tahu seberapa jauh cluster (a) dari cluster (d) dan cluster (b) dari cluster (d).

Cluster sekarang biasanya berisi beberapa titik, memerlukan metode yang berbeda untuk menghitung matriks jarak. Metode dimana jarak antar cluster, atau jarak titik ke cluster, dihitung ditentukan oleh linkage. Berikut ini adalah beberapa mekanisme linkage yang paling umum digunakan:

Tautan Tunggal — Jarak antara anggota yang paling mirip dihitung untuk setiap pasangan cluster, dan cluster kemudian digabungkan berdasarkan jarak terpendek.

Hubungan Rata-Rata — Jarak antara semua anggota satu cluster dan semua anggota cluster lain dihitung. Setelah itu, rata-rata jarak tersebut digunakan untuk menentukan cluster mana yang akan bergabung.

Tautan Lengkap — Untuk setiap pasangan cluster, jarak antara anggota yang paling berbeda dihitung, dan cluster kemudian digabungkan berdasarkan jarak terpendek.

Hubungan Median — Kami menggunakan jarak median alih-alih jarak rata-rata dengan cara yang mirip dengan hubungan rata-rata.

Hubungan Lingkungan — Menentukan jarak antar cluster menggunakan metode analisis varians.

Tautan Centroid — Centroid dari setiap cluster dihitung dengan merata-ratakan semua titik yang ditetapkan ke cluster, dan jarak antar cluster kemudian dihitung menggunakan centroid ini.

Perhitungan jarak

Beberapa pendekatan untuk menghitung jarak antara dua atau lebih cluster ada, dengan Euclidean Distance menjadi yang paling populer. Metrik jarak lainnya, seperti Minkowski, City Block, Hamming, Jaccard, dan Chebyshev, dapat digunakan dengan pengelompokan hierarkis juga. Metrik jarak yang berbeda berdampak pada pengelompokan hierarkis, seperti yang ditunjukkan pada Gambar 2.

perhitungan jarak

dendrogram

Hubungan antara objek dalam ruang fitur diwakili oleh dendrogram. Dalam ruang fitur, ini digunakan untuk menunjukkan jarak antara setiap pasangan objek yang digabungkan secara berurutan. Dendrogram sering digunakan untuk memeriksa cluster hierarkis sebelum memutuskan jumlah cluster yang sesuai untuk dataset. Jarak dendrogram adalah jarak antara dua cluster ketika mereka bergabung. Jarak dendrogram menentukan apakah dua atau lebih cluster terpisah atau dapat bergabung bersama untuk membentuk satu cluster.

Contoh

Sekarang kita melihat contoh menggunakan Python untuk mendemonstrasikan Model Pengelompokan Hirarki. Kami memiliki 200 data pelanggan mal di kami kumpulan data. Setiap customerID pelanggan, genre, usia, pendapatan tahunan, dan skor pengeluaran semua termasuk dalam kerangka data. Jumlah yang dihitung untuk setiap skor pengeluaran klien mereka didasarkan pada beberapa kriteria, seperti pendapatan mereka, berapa kali mereka mengunjungi mal per minggu, dan uang yang mereka habiskan selama setahun. Skor ini berkisar dari 1 hingga 100. Karena kita tidak tahu jawabannya, masalah bisnis menjadi masalah pengelompokan.

#1 Mengimpor perpustakaan
impor numpy sebagai np impor matplotlib.pyplot sebagai plt impor panda sebagai pd
#2 Mengimpor kumpulan data Mall_Customers oleh panda
kumpulan data = pd.read_csv('Mall_Customers.csv') X = kumpulan data.iloc[:, [3,4]].nilai

Langkah baru dalam pengelompokan hierarkis ini juga memerlukan penentuan jumlah cluster yang optimal. Kami tidak akan menggunakan metode siku kali ini. Kami akan menggunakan dendrogram.

#3 Menggunakan dendrogram untuk menemukan jumlah cluster yang optimal. # Hal pertama yang akan kita lakukan adalah mengimpor perpustakaan scipy. scipy adalah pustaka # Python open source yang berisi alat untuk melakukan pengelompokan hierarkis dan membangun dendrogram. # Hanya impor alat yang dibutuhkan. impor scipy.cluster.hierarchy sebagai sch 
#Lets create a dendrogram variable # linkage sebenarnya adalah algoritme itu sendiri dari pengelompokan hierarkis dan kemudian dalam #linkage kita harus menentukan data mana yang kita terapkan dan libatkan. Ini adalah X dataset dendrogram = sch.dendrogram(sch.linkage(X, method = "ward")) plt.title('Dendrogram') plt.xlabel('Customers') plt.ylabel('Euclidean distances') plt. menunjukkan()

Metode Ward adalah metode yang mencoba untuk mengurangi varians dalam setiap cluster. Ini hampir sama seperti ketika kita menggunakan K-means untuk meminimalkan wcss untuk memplot diagram metode elbow kita; satu-satunya perbedaan adalah bahwa alih-alih wcss, kami meminimalkan varian dalam-cluster. Dalam setiap cluster, ini adalah varians. Dendogramnya ditunjukkan di bawah ini.

dendogram

Pelanggan direpresentasikan pada sumbu x, dan jarak Euclidean antar cluster direpresentasikan pada sumbu y. Bagaimana kita mengetahui jumlah cluster terbaik berdasarkan diagram ini? Kami ingin mencari jarak vertikal terpanjang yang kami bisa tanpa melintasi garis horizontal apa pun, yang merupakan garis berbingkai merah pada diagram di atas. Mari kita hitung garis pada diagram dan cari tahu berapa banyak cluster yang terbaik. Untuk dataset ini, jumlah cluster akan menjadi 5.

#4 Memasang pengelompokan hierarkis ke dataset Mall_Customes # Ada dua algoritme untuk pengelompokan hierarkis: Pengelompokan Hirarki Agglomerative dan # Pengelompokan Hirarki Divisive. Kami memilih metode jarak dan lingkungan Euclidean untuk # kelas algoritma kami dari sklearn.cluster import AgglomerativeClustering hc = AgglomerativeClustering(n_clustering = 5, affinity = 'euclidean', linkage ='ward') # Mari kita coba menyesuaikan algoritma clustering hierarkis ke dataset X sambil membuat # vektor klaster yang memberi tahu setiap pelanggan klaster mana yang menjadi milik pelanggan. y_hc=hc.fit_predict(X)
# 5 Memvisualisasikan cluster. Kode ini mirip dengan kode visualisasi k-means. #Kami hanya mengganti nama vektor y_kmeans menjadi y_hc untuk pengelompokan hierarkis plt.scatter(X[y_hc==0, 0], X[y_hc==0, 1], s=100, c='red', label = 'Cluster 1') plt.scatter(X[y_hc==1, 0], X[y_hc==1, 1], s=100, c='blue', label ='Cluster 2') plt.scatter( X[y_hc==2, 0], X[y_hc==2, 1], s=100, c='hijau', label ='Cluster 3') plt.scatter(X[y_hc==3, 0] , X[y_hc==3, 1], s=100, c='cyan', label ='Cluster 4') plt.scatter(X[y_hc==4, 0], X[y_hc==4, 1 ], s=100, c='magenta', label ='Cluster 5') plt.title('Clusters of Customers (Hierarchical Clustering Model)') plt.xlabel('Annual Income(k$)') plt.ylabel ('Spending Score(1-100') plt.show()
cluster | Pengelompokan Hirarkis
Cluster1(Merah), Cluster2 (Biru), Cluster3(Hijau), Cluster4(Cyan), Cluster5 (Magenta)

Cluster ini dapat dianggap sebagai segmen pelanggan mal.

Itu saja yang ada pada Model Pengelompokan Hirarki standar. Dataset serta semua kode tersedia di bagian Github.

Kesimpulan

Dalam setiap latihan pengelompokan, menentukan jumlah cluster adalah proses yang memakan waktu. Karena sisi komersial bisnis lebih peduli dengan mengekstraksi makna dari kelompok-kelompok ini, sangat penting untuk memvisualisasikan kelompok dalam dua dimensi dan melihat apakah mereka berbeda. PCA atau Analisis Faktor dapat digunakan untuk mencapai tujuan ini. Ini adalah metode umum untuk mempresentasikan hasil akhir kepada berbagai pemangku kepentingan, sehingga lebih mudah bagi semua orang untuk mengkonsumsi hasilnya.

EndNote

Terima kasih telah membaca!
Saya harap Anda menikmati artikel ini dan menambah pengetahuan Anda.
Jangan ragu untuk menghubungi saya on Email
Sesuatu yang tidak disebutkan atau ingin berbagi pemikiran Anda? Jangan ragu untuk berkomentar di bawah dan saya akan menghubungi Anda kembali.

tentang Penulis

Hardikkumar M.Dhaduk
Analis Data | Spesialis Analisis Data Digital | Pembelajar Ilmu Data
Terhubung dengan saya di Linkedin
Terhubung dengan saya di Github

Media yang ditampilkan dalam artikel ini tidak dimiliki oleh Analytics Vidhya dan digunakan atas kebijaksanaan Penulis.

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

Stempel Waktu:

Lebih dari Analisis Vidhya