Cắt dendrogram ở đâu?


61

Phân cụm phân cấp có thể được biểu diễn bằng một dendrogram. Cắt một dendrogram ở một mức độ nhất định sẽ cho một tập hợp các cụm. Cắt ở cấp độ khác cho một cụm khác. Làm thế nào bạn sẽ chọn nơi để cắt dendrogram? Có một cái gì đó chúng ta có thể xem xét một điểm tối ưu? Nếu tôi nhìn vào một dendrogram theo thời gian khi nó thay đổi, tôi có nên cắt ở cùng một điểm không?


Tôi cũng đã tự hỏi về vấn đề này, nhưng (không may) chưa tìm thấy câu trả lời thuyết phục nào. Tôi nghĩ rằng không có giải pháp. Có các gói R / BioC như hopack(và các gói khác) có thể ước tính số lượng cụm, nhưng điều đó không trả lời câu hỏi của bạn.
suncoolsu

Các pvclustgói cho Rcó chức năng cung cấp cho bootstrapped p-giá trị cho các cụm dendrogram, cho phép bạn xác định các nhóm: is.titech.ac.jp/~shimo/prog/pvclust
Ben

Câu trả lời:


46

Không có câu trả lời dứt khoát vì phân tích cụm về cơ bản là một cách tiếp cận thăm dò; việc giải thích cấu trúc phân cấp kết quả là phụ thuộc vào ngữ cảnh và thường một số giải pháp tốt như nhau theo quan điểm lý thuyết.

Một số manh mối đã được đưa ra trong một câu hỏi liên quan, Tiêu chí dừng nào cho phân cụm phân cấp kết tụ được sử dụng trong thực tế? Tôi thường sử dụng các tiêu chí trực quan, ví dụ như sơ đồ hình bóng và một số loại tiêu chí số, như chỉ số hiệu lực của Dunn, gamma của Hubert, hệ số G2 / G3 hoặc chỉ số Rand đã sửa. Về cơ bản, chúng tôi muốn biết ma trận khoảng cách ban đầu được xấp xỉ tốt như thế nào trong không gian cụm, do đó, một phép đo tương quan cophenetic cũng hữu ích. Tôi cũng sử dụng phương tiện k, với một số giá trị bắt đầu và thống kê khoảng cách ( gương ) để xác định số lượng cụm giảm thiểu phạm vi trong SS. Sự phù hợp với phân cụm phân cấp Ward cho ý tưởng về tính ổn định của giải pháp cụm (Bạn có thể sử dụngmatchClasses()trong gói e1071 cho điều đó).

Bạn sẽ tìm thấy các tài nguyên hữu ích trong Cụm xem tác vụ CRAN , bao gồm pvclust , fpc , clv , trong số những người khác. Cũng đáng để thử là gói clValid ( được mô tả trong Tạp chí Phần mềm Thống kê ).

Bây giờ, nếu cụm của bạn thay đổi theo thời gian, điều này là một chút khó khăn hơn; Tại sao chọn giải pháp cụm đầu tiên chứ không phải giải pháp khác? Bạn có mong đợi rằng một số cá nhân chuyển từ cụm này sang cụm khác là kết quả của một quá trình cơ bản phát triển theo thời gian?

Có một số biện pháp cố gắng khớp các cụm có sự trùng lặp tuyệt đối hoặc tương đối tối đa, như được đề xuất cho bạn trong câu hỏi trước của bạn. Nhìn vào So sánh cụm - Tổng quan từ Wagner và Wagner.


12

Thật sự không có câu trả lời. Nó ở đâu đó giữa 1 và N.

Tuy nhiên, bạn có thể nghĩ về nó từ góc độ lợi nhuận.

Ví dụ, trong tiếp thị, người ta sử dụng phân đoạn, giống như phân cụm.

Một tin nhắn (một quảng cáo hoặc thư, nói) được thiết kế riêng cho từng cá nhân sẽ có tỷ lệ phản hồi cao nhất. Một thông điệp chung được điều chỉnh theo mức trung bình sẽ có tỷ lệ phản hồi thấp nhất. Có thể nói ba tin nhắn phù hợp với ba phân đoạn sẽ ở đâu đó ở giữa. Đây là khía cạnh doanh thu.

Một thông điệp được thiết kế riêng cho từng cá nhân sẽ có chi phí cao nhất. Một thông điệp chung phù hợp với mức trung bình sẽ có chi phí thấp nhất. Ba thông điệp phù hợp với ba phân đoạn sẽ ở đâu đó ở giữa.

Nói rằng trả tiền cho một nhà văn để viết một tin nhắn tùy chỉnh có giá 1000, hai chi phí 2000 và cứ thế.

Nói bằng cách sử dụng một tin nhắn, doanh thu của bạn sẽ là 5000. Nếu bạn phân đoạn khách hàng của mình thành 2 phân khúc và viết tin nhắn phù hợp cho từng phân khúc, tỷ lệ phản hồi của bạn sẽ cao hơn. Giả sử doanh thu hiện là 7500. Với ba phân khúc, tỷ lệ phản hồi cao hơn một chút và doanh thu của bạn là 9000. Thêm một phân khúc nữa và bạn ở mức 9500.

Để tối đa hóa lợi nhuận, hãy tiếp tục phân khúc cho đến khi doanh thu cận biên từ phân khúc bằng với chi phí cận biên của phân khúc. Trong ví dụ này, bạn sẽ sử dụng ba phân khúc để tối đa hóa lợi nhuận.

Segments  Revenue  Cost  Profit
1         5000     1000  4000
2         7500     2000  5500
3         9000     3000  6000
4         9500     4000  5500

Đây là một viễn cảnh thú vị!
AndyF

5

Có lẽ một trong những phương pháp đơn giản nhất sẽ là biểu diễn đồ họa trong đó trục x là số lượng nhóm và trục y bất kỳ số liệu đánh giá nào là khoảng cách hoặc độ tương tự. Trong biểu đồ đó, bạn thường có thể quan sát hai vùng được phân biệt, là giá trị trục x ở 'đầu gối' của dòng số 'tối ưu' của cụm.

Ngoài ra còn có một số thống kê có thể ảnh hưởng đến nhiệm vụ này: gamma của Hubert, giả hành, giả giả F hoặc tiêu chí phân cụm (CCC) trong số các tiêu chí khác.


Tôi đồng ý với chl. Phân tích cụm là cách tiếp cận thăm dò và giải thích kết quả, trong trường hợp cụ thể này, số lượng cụm tối ưu, phụ thuộc vào bối cảnh của bạn. Ví dụ, trong công việc của tôi là phổ biến để phân tích cụm được sử dụng để phân loại các cá nhân dựa trên một số đặc điểm và đôi khi số lượng cụm được đặt trước. Trong trường hợp này, mục tiêu của chúng tôi là tìm ra tập hợp các biến phân loại để phân biệt tốt nhất các cá thể thuộc các cụm khác nhau.
Manuel Ramón


3

Trong phân cụm phân cấp, số lượng phân vùng đầu ra không chỉ là các vết cắt ngang, mà còn là các vết cắt không nằm ngang quyết định phân cụm cuối cùng. Do đó, đây có thể được coi là một tiêu chí thứ ba bên cạnh 1. chỉ số khoảng cách2. Tiêu chí liên kết . http://en.wikipedia.org/wiki/HVELical_clustering

Tiêu chí bạn đã đề cập là loại thứ 3 là một loại ràng buộc tối ưu hóa trên tập các phân vùng trong hệ thống phân cấp. Điều này được chính thức trình bày trong bài báo này và các ví dụ về phân khúc được đưa ra!

http://www.esiee.fr/~kiranr/ClimbingECCV2012_Preprint.pdf


1

Như các câu trả lời khác đã nói, nó chắc chắn chủ quan và phụ thuộc vào loại độ chi tiết mà bạn đang cố gắng nghiên cứu. Đối với một cách tiếp cận chung, tôi cắt cái này để cho tôi 2 cụm và 1 ngoại lệ. Sau đó tôi sẽ tập trung vào hai cụm để xem liệu có gì đáng kể giữa chúng không.

# Init
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns; sns.set()

# Load data
from sklearn.datasets import load_diabetes

# Clustering
from scipy.cluster.hierarchy import dendrogram, fcluster, leaves_list
from scipy.spatial import distance
from fastcluster import linkage # You can use SciPy one too

%matplotlib inline

# Dataset
A_data = load_diabetes().data
DF_diabetes = pd.DataFrame(A_data, columns = ["attr_%d" % j for j in range(A_data.shape[1])])

# Absolute value of correlation matrix, then subtract from 1 for disimilarity
DF_dism = 1 - np.abs(DF_diabetes.corr())

# Compute average linkage
A_dist = distance.squareform(DF_dism.as_matrix())
Z = linkage(A_dist,method="average")

# Dendrogram
D = dendrogram(Z=Z, labels=DF_dism.index, color_threshold=0.7, leaf_font_size=12, leaf_rotation=45)

nhập mô tả hình ảnh ở đây

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.