Làm thế nào để đánh giá phân cụm văn bản?


8

Những số liệu nào có thể được sử dụng để đánh giá các mô hình phân cụm văn bản? Tôi đã sử dụng tf-idf+ k-means, tf-idf+ hierarchical clustering, doc2vec+ k-means (metric is cosine similarity), doc2vec+ hierarchical clustering (metric is cosine similarity). Làm thế nào để quyết định mô hình nào là tốt nhất?

Câu trả lời:


6

Kiểm tra giấy này . Nó cũng giải quyết câu hỏi về việc sử dụng bao nhiêu cụm. Mclust gói R có một thói quen sẽ thử các mô hình cụm / số cụm khác nhau và vẽ tiêu chí suy luận Bayes (BIC). (họa tiết tuyệt vời ở đây ). Đó là một phương pháp chung, có nghĩa là, một cái gì đó bạn có thể làm mà không phải là miền / dữ liệu cụ thể. (Luôn luôn tốt cho từng miền cụ thể nếu bạn có thời gian và dữ liệu.)

Biểu đồ là từ họa tiết của Lucca Scrucca. MClust thử 14 thuật toán phân cụm khác nhau (được biểu thị bằng các ký hiệu khác nhau), tăng số lượng cụm từ 1 lên một số giá trị mặc định. Nó tìm thấy BIC mỗi lần. BIC cao nhất thường là sự lựa chọn tốt nhất. Bạn có thể áp dụng phương pháp này cho các thuật toán phân cụm ổn định của riêng bạn.

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


2

Kiểm tra điểm bóng

Công thức cho điểm dữ liệu thứ i

(b(i) - a(i)) / max(a(i),b(i))

trong đó b (i) -> không giống nhau từ cụm lân cận gần nhất

a (i) -> khác biệt giữa các điểm trong cụm

Điều này cho điểm giữa -1 và +1.

Diễn dịch

+1 có nghĩa là rất phù hợp

-1 có nghĩa là phân loại sai [nên thuộc về một cụm khác]

Sau khi tính toán điểm bóng cho từng điểm dữ liệu, bạn có thể thực hiện cuộc gọi theo lựa chọn cho số lượng cụm.

Mã ví dụ

from sklearn.datasets import make_blobs
from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_samples, silhouette_score

X, y = make_blobs(n_samples=500,
                  n_features=2,
                  centers=4,
                  cluster_std=1,
                  center_box=(-10.0, 10.0),
                  shuffle=True,
                  random_state=1)  # For reproducibility

range_n_clusters = [2, 3, 4, 5, 6]

for n_clusters in range_n_clusters:
    # Initialize the clusterer with n_clusters value and a random generator
    # seed of 10 for reproducibility.
    clusterer = KMeans(n_clusters=n_clusters, random_state=10)
    cluster_labels = clusterer.fit_predict(X)

    # The silhouette_score gives the average value for all the samples.
    # This gives a perspective into the density and separation of the formed
    # clusters
    silhouette_avg = silhouette_score(X, cluster_labels)
    print("For n_clusters =", n_clusters,
          "The average silhouette_score is :", silhouette_avg)

    # Compute the silhouette scores for each sample
    sample_silhouette_values = silhouette_samples(X, cluster_labels)

0

Một thước đo chất lượng phân cụm sẽ rất tốt đẹp để có. Thật không may, biện pháp đó rất khó tính - có lẽ là khó AI. Bạn đang cố gắng giảm một điều rất phức tạp thành một con số duy nhất.

Nếu nó khó về AI, thì bạn có thể yêu cầu mọi người đánh giá các cụm sao bằng cách nào đó. Điều đó không lý tưởng, và sẽ không mở rộng quy mô nhưng bạn sẽ có một con số duy nhất đại diện cho thứ gì đó gần với những gì bạn muốn.


Tôi không nghĩ rằng điều này là chính xác. Tôi chỉ có thể cung cấp một tài liệu văn bản được nghiên cứu kỹ lưỡng vào các mô hình. Sau đó so sánh các thành viên cụm với kỳ vọng của tôi.
HelloWorld

Vâng. Sử dụng "kỳ vọng" của bạn là những gì bạn làm khi biện pháp này là AI. Bạn sẽ có được một biện pháp tốt hơn nếu bạn bao gồm những kỳ vọng của người khác.
Ray

Tôi có ý này. Tôi có thể cố gắng đào tạo phân loại và lắp nó với các nhãn từ các mô hình khác nhau với cùng một số cụm. Độ chính xác tốt hơn, mô hình tốt hơn.
Ứng dụng này vào
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.