Thuật toán phân cụm phân cấp Python!

Nút nguồn: 1055669

Bài báo này đã được xuất bản như một phần của Blogathon Khoa học Dữ liệu

Giới thiệu

Trong bài viết này, chúng ta sẽ xem xét một cách tiếp cận khác đối với phân cụm K Means được gọi là Phân cụm theo thứ bậc. So với K Means hoặc K Mode, phân cụm phân cấp có một thuật toán cơ bản khác về cách hoạt động của cơ chế phân cụm. Phân cụm phân cấp sử dụng kỹ thuật cộng gộp hoặc phân chia, trong khi K Means sử dụng kết hợp khoảng cách centroid và euclidean để tạo thành cụm. Biểu đồ có thể được sử dụng để hình dung các cụm trong phân nhóm theo thứ bậc, điều này có thể giúp giải thích tốt hơn các kết quả thông qua các đơn vị phân loại có ý nghĩa. Chúng ta không cần phải chỉ định số lượng cụm khi tạo một biểu đồ dendrogram.

Ở đây chúng tôi sử dụng Python để giải thích Mô hình phân cụm phân cấp. Chúng tôi có dữ liệu của 200 khách hàng trung tâm thương mại trong bộ dữ liệu của chúng tôi. ID khách hàng, thể loại, độ tuổi, thu nhập hàng năm và điểm chi tiêu của mỗi khách hàng đều được đưa vào khung dữ liệu. Số tiền được tính cho điểm chi tiêu của mỗi khách hàng của họ dựa trên một số tiêu chí, chẳng hạn như thu nhập của họ, số lần họ đến trung tâm mua sắm mỗi tuần và số tiền họ đã chi tiêu trong một năm. Điểm này nằm trong khoảng từ 1 đến 100. Bởi vì chúng tôi không biết câu trả lời, một vấn đề kinh doanh trở thành một vấn đề phân cụm. Chúng tôi chưa biết danh mục cuối cùng của dữ liệu. Do đó, mục tiêu của chúng tôi là khám phá một số cụm khách hàng chưa được biết đến trước đây.

Nhưng trước tiên, chúng ta xem xét một số thuật ngữ quan trọng trong phân cụm phân cấp.

Các thuật ngữ quan trọng trong phân cụm phân cấp

Phương thức liên kết

Nếu có (a) các quan sát ban đầu a [0],…, a [| a | 1] trong cụm (a) và (b) các đối tượng ban đầu b [0],…, b [| b | 1] trong cụm ( b), sau đó chúng ta phải tính khoảng cách giữa hai cụm (a) và (b) để kết hợp chúng (b). Giả sử có một điểm (d) chưa được gán cho bất kỳ cụm nào. Chúng ta sẽ cần tìm ra cụm (a) cách cụm (d) và cụm (b) cách cụm (d) bao xa.

Các cụm bây giờ thường chứa nhiều điểm, đòi hỏi một phương pháp khác để tính toán ma trận khoảng cách. Phương pháp tính toán khoảng cách giữa các cụm hoặc khoảng cách điểm đến cụm được xác định bằng liên kết. Sau đây là một số cơ chế liên kết được sử dụng phổ biến nhất:

Liên kết đơn - Khoảng cách giữa các thành viên giống nhau nhất được tính toán cho từng cặp cụm, và các cụm sau đó được hợp nhất dựa trên khoảng cách ngắn nhất.

Liên kết trung bình - Khoảng cách giữa tất cả các thành viên của một cụm với tất cả các thành viên của cụm khác được tính toán. Sau đó, giá trị trung bình của các khoảng cách này được sử dụng để xác định cụm nào sẽ hợp nhất.

Liên kết hoàn chỉnh - Đối với mỗi cặp cụm, khoảng cách giữa các thành viên khác nhau nhất được tính toán và sau đó các cụm được hợp nhất dựa trên khoảng cách ngắn nhất.

Liên kết trung bình - Chúng tôi sử dụng khoảng cách trung bình thay vì khoảng cách trung bình theo cách tương tự với liên kết trung bình.

Liên kết phường - Xác định khoảng cách giữa các cụm bằng phương pháp phân tích phương sai.

Liên kết Centroid - Trọng tâm của mỗi cụm được tính bằng cách lấy trung bình tất cả các điểm được gán cho cụm, và khoảng cách giữa các cụm sau đó được tính bằng cách sử dụng trung tâm này.

Tính toán khoảng cách

Có nhiều cách tiếp cận để tính toán khoảng cách giữa hai hoặc nhiều cụm, trong đó Khoảng cách Euclide là phổ biến nhất. Các chỉ số khoảng cách khác, chẳng hạn như Minkowski, City Block, Hamming, Jaccard và Chebyshev, cũng có thể được sử dụng với phân nhóm phân cấp. Các số liệu về khoảng cách khác nhau có tác động đến việc phân nhóm theo thứ bậc, như thể hiện trong Hình 2.

tính toán khoảng cách

chương trình dendro

Mối quan hệ giữa các đối tượng trong không gian đối tượng được biểu diễn bằng biểu đồ hình hạt. Trong không gian đặc trưng, ​​nó được sử dụng để hiển thị khoảng cách giữa từng cặp đối tượng được hợp nhất tuần tự. Biểu đồ thường được sử dụng để kiểm tra các cụm phân cấp trước khi quyết định số lượng cụm thích hợp cho tập dữ liệu. Khoảng cách dendrogram là khoảng cách giữa hai cụm khi chúng kết hợp với nhau. Khoảng cách dendrogram xác định xem hai hoặc nhiều cụm rời rạc hoặc có thể được kết hợp với nhau để tạo thành một cụm duy nhất.

Ví dụ

Bây giờ chúng ta xem xét các ví dụ sử dụng Python để chứng minh Mô hình phân cụm phân cấp. Chúng tôi có dữ liệu 200 khách hàng trung tâm mua sắm trong tập dữ liệu. ID khách hàng, thể loại, độ tuổi, thu nhập hàng năm và điểm chi tiêu của mỗi khách hàng đều được đưa vào khung dữ liệu. Số tiền được tính cho điểm chi tiêu của mỗi khách hàng của họ dựa trên một số tiêu chí, chẳng hạn như thu nhập của họ, số lần họ đến trung tâm mua sắm mỗi tuần và số tiền họ đã chi tiêu trong một năm. Điểm này nằm trong khoảng từ 1 đến 100. Bởi vì chúng tôi không biết câu trả lời, một vấn đề kinh doanh trở thành một vấn đề phân cụm.

# 1 Nhập các thư viện
import numpy as np import matplotlib.pyplot as plt import pandas as pd
# 2 Nhập tập dữ liệu Mall_Customers theo gấu trúc
dataset = pd.read_csv ('Mall_Customers.csv') X = dataset.iloc [:, [3,4]]. giá trị

Bước mới này trong phân cụm phân cấp cũng đòi hỏi phải xác định số lượng các cụm tối ưu. Chúng tôi sẽ không sử dụng phương pháp khuỷu tay lần này. Chúng tôi sẽ sử dụng dendrogram.

# 3 Sử dụng biểu đồ dendrogram để tìm số lượng cụm tối ưu. # Điều đầu tiên chúng ta sẽ làm là nhập thư viện scipy. scipy là một thư viện # Python mã nguồn mở chứa các công cụ để thực hiện phân nhóm phân cấp và xây dựng các biểu đồ. # Chỉ nhập công cụ cần thiết. import scipy.cluster.hierarchy dưới dạng sch 
# Cho phép tạo biến dendrogram # linkage thực sự là thuật toán phân cụm phân cấp và sau đó trong #linkage, chúng tôi phải chỉ định dữ liệu nào chúng tôi áp dụng và tương tác. Đây là tập dữ liệu X dendrogram = sch.dendrogram (sch.linkage (X, method = "ward")) plt.title ('Dendrogram') plt.xlabel ('Khách hàng') plt.ylabel ('Khoảng cách Euclidean') plt. buổi bieu diễn()

Phương pháp Ward là một phương pháp cố gắng giảm phương sai trong mỗi cụm. Nó gần giống như khi chúng tôi sử dụng K-means để giảm thiểu wcss để vẽ biểu đồ phương pháp khuỷu tay của chúng tôi; sự khác biệt duy nhất là thay vì wcss, chúng tôi đang giảm thiểu các biến thể trong cụm. Trong mỗi cụm, đây là phương sai. Hình ảnh dendrogram được hiển thị bên dưới.

biểu đồ nhánh cây

Khách hàng được thể hiện trên trục x và khoảng cách Euclide giữa các cụm được biểu diễn trên trục y. Làm thế nào để chúng tôi tìm ra số lượng cụm tốt nhất dựa trên sơ đồ này? Chúng tôi muốn tìm khoảng cách dọc dài nhất mà chúng tôi có thể mà không vượt qua bất kỳ đường ngang nào, đó là đường có khung màu đỏ trong sơ đồ trên. Hãy đếm các dòng trên sơ đồ và tìm ra bao nhiêu cụm là tốt nhất. Đối với tập dữ liệu này, số cụm sẽ là 5.

# 4 Phù hợp phân nhóm phân cấp với tập dữ liệu Mall_Customes # Có hai thuật toán để phân nhóm phân cấp: Phân cụm phân cấp và # Phân nhóm theo thứ bậc. Chúng tôi chọn khoảng cách Euclidean và phương pháp ward cho lớp thuật toán # của chúng tôi từ sklearn.cluster import AgglomerativeClustering hc = AgglomerativeClustering (n_clusters = 5, affinity = 'euclidean', linkage = 'ward') # Hãy thử điều chỉnh thuật toán phân cụm phân cấp với tập dữ liệu X trong khi tạo vectơ # cụm cho mỗi khách hàng biết khách hàng thuộc cụm nào. y_hc = hc.fit_p Dự đoán (X)
# 5 Hình dung các cụm. Mã này tương tự như mã trực quan k-mean. # Chúng tôi chỉ thay thế tên vectơ y_kmeans thành y_hc cho vật chất phân cụm phân cấp (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 = 'green', 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 ('Cluster of Khách hàng (Mô hình phân cụm phân cấp)') plt.xlabel ('Thu nhập hàng năm (k $)') plt.ylabel ('Điểm chi tiêu (1-100') plt.show ()
cụm | Phân cụm phân cấp
Cluster1 (Red), Cluster2 (Blue), Cluster3 (Green), Cluster4 (Cyan), Cluster5 (Magenta)

Những cụm này có thể được coi là phân khúc khách hàng của trung tâm mua sắm.

Đó là tất cả những gì cần có đối với Mô hình phân cụm theo thứ bậc tiêu chuẩn. Tập dữ liệu cũng như tất cả các mã có sẵn trong phần Github.

Kết luận

Trong bất kỳ bài tập phân cụm nào, việc xác định số lượng các cụm là một quá trình tốn nhiều thời gian. Bởi vì khía cạnh thương mại của doanh nghiệp quan tâm nhiều hơn đến việc trích xuất ý nghĩa từ các nhóm này, điều quan trọng là phải hình dung các cụm theo hai chiều và xem liệu chúng có khác biệt hay không. PCA hoặc Phân tích Nhân tố có thể được sử dụng để đạt được mục tiêu này. Đây là một phương pháp phổ biến để trình bày kết quả cuối cùng cho các bên liên quan khác nhau, giúp mọi người tiêu thụ đầu ra dễ dàng hơn.

Ghi chú cuối

Cảm ơn bạn đã đọc!
Tôi hy vọng bạn thích bài viết và nâng cao kiến ​​thức của bạn.
Xin vui lòng liên hệ với tôi on E-mail
Một cái gì đó không được đề cập hoặc muốn chia sẻ suy nghĩ của bạn? Hãy bình luận bên dưới và tôi sẽ liên hệ lại với bạn.

Lưu ý

Hardikkumar M. Dhaduk
Nhà phân tích dữ liệu | Chuyên gia phân tích dữ liệu kỹ thuật số | Người học Khoa học Dữ liệu
Kết nối với tôi trên Linkedin
Kết nối với tôi trên Github

Phương tiện hiển thị trong bài viết này không thuộc sở hữu của Analytics Vidhya và được sử dụng theo quyết định của Tác giả.

Nguồn: https://www.analyticsvidhya.com/blog/2021/08/hierarchical-clustering-algorithm-python/

Dấu thời gian:

Thêm từ Phân tích Vidhya