Tại sao thống kê khoảng cách cho k-nghĩa là gợi ý một cụm, mặc dù rõ ràng có hai trong số chúng?


18

Tôi đang sử dụng phương tiện K để phân cụm dữ liệu của mình và đang tìm cách đề xuất số cụm "tối ưu". Thống kê khoảng cách dường như là một cách phổ biến để tìm một số cụm tốt.

Vì một số lý do, nó trả về 1 là số cụm tối ưu, nhưng khi tôi nhìn vào dữ liệu thì rõ ràng có 2 cụm:

! [1] (http://i60.tinypic.com / 28bdy6u.jpg)

Đây là cách tôi gọi khoảng cách trong R:

gap <- clusGap(data, FUN=kmeans, K.max=10, B=500)
with(gap, maxSE(Tab[,"gap"], Tab[,"SE.sim"], method="firstSEmax"))

Tập kết quả:

> Number of clusters (method 'firstSEmax', SE.factor=1): 1
          logW   E.logW           gap    SE.sim
[1,]  5.185578 5.085414 -0.1001632148 0.1102734
[2,]  4.438812 4.342562 -0.0962498606 0.1141643
[3,]  3.924028 3.884438 -0.0395891064 0.1231152
[4,]  3.564816 3.563931 -0.0008853886 0.1387907
[5,]  3.356504 3.327964 -0.0285393917 0.1486991
[6,]  3.245393 3.119016 -0.1263766015 0.1544081
[7,]  3.015978 2.914607 -0.1013708665 0.1815997
[8,]  2.812211 2.734495 -0.0777154881 0.1741944
[9,]  2.672545 2.561590 -0.1109558011 0.1775476
[10,] 2.656857 2.403220 -0.2536369287 0.1945162

Tôi đang làm gì đó sai hay ai đó biết một cách tốt hơn để có được một số cụm tốt?

Câu trả lời:


37

Phân cụm phụ thuộc vào quy mô , trong số những thứ khác. Đối với các cuộc thảo luận về vấn đề này, xem ( liên alia ) Khi nào bạn nên tập trung và chuẩn hóa dữ liệu? PCA về hiệp phương sai hay tương quan? .

Dưới đây là dữ liệu của bạn được vẽ với tỷ lệ khung hình 1: 1, cho thấy tỷ lệ của hai biến khác nhau bao nhiêu:

Hình 1

Ở bên phải của nó, biểu đồ của các số liệu thống kê khoảng cách hiển thị số liệu thống kê theo số cụm ( ) với các lỗi tiêu chuẩn được vẽ bằng các phân đoạn dọc và giá trị tối ưu của được đánh dấu bằng một đường thẳng đứt nét màu xanh. Theo sự giúp đỡ,kkkclusGap

Phương thức mặc định "firstSEmax" tìm nhỏ nhất sao cho giá trị nó không vượt quá 1 lỗi tiêu chuẩn so với mức tối đa cục bộ đầu tiên.f ( k )kf(k)

Các phương pháp khác hành xử tương tự. Tiêu chí này không làm cho bất kỳ số liệu thống kê khoảng cách nào nổi bật, dẫn đến ước tính .k=1

Lựa chọn thang đo phụ thuộc vào ứng dụng, nhưng điểm bắt đầu mặc định hợp lý là thước đo độ phân tán của dữ liệu, chẳng hạn như MAD hoặc độ lệch chuẩn. Biểu đồ này lặp lại phân tích sau khi nhập về 0 và thay đổi kích thước để tạo độ lệch chuẩn đơn vị cho từng thành phần và :bab

Hình 2

Giải pháp K-mean được biểu thị bằng cách thay đổi loại ký hiệu và màu sắc trong biểu đồ phân tán dữ liệu ở bên trái. Trong số các tập , được ưu tiên rõ ràng trong biểu đồ thống kê khoảng cách ở bên phải: đó là mức tối đa cục bộ đầu tiên và số liệu thống kê cho nhỏ hơn (nghĩa là ) thấp hơn đáng kể. Các giá trị lớn hơn của có khả năng phù hợp hơn cho một tập dữ liệu nhỏ như vậy và không có giá trị nào tốt hơn đáng kể so với . Chúng được hiển thị ở đây chỉ để minh họa phương pháp chung. k { 1 , 2 , 3 , 4 , 5 } k = 2 k k = 1 k k = 2k=2k{1,2,3,4,5}k=2kk=1kk=2


Đây là Rmã để sản xuất những số liệu này. Các dữ liệu xấp xỉ khớp với những gì được hiển thị trong câu hỏi.

library(cluster)
xy <- matrix(c(29,391, 31,402, 31,380, 32.5,391, 32.5,360, 33,382, 33,371,
        34,405, 34,400, 34.5,404, 36,343, 36,320, 36,303, 37,344,
        38,358, 38,356, 38,351, 39,318, 40,322, 40, 341), ncol=2, byrow=TRUE)
colnames(xy) <- c("a", "b")
title <- "Raw data"
par(mfrow=c(1,2))
for (i in 1:2) {
  #
  # Estimate optimal cluster count and perform K-means with it.
  #
  gap <- clusGap(xy, kmeans, K.max=10, B=500)
  k <- maxSE(gap$Tab[, "gap"], gap$Tab[, "SE.sim"], method="Tibs2001SEmax")
  fit <- kmeans(xy, k)
  #
  # Plot the results.
  #
  pch <- ifelse(fit$cluster==1,24,16); col <- ifelse(fit$cluster==1,"Red", "Black")
  plot(xy, asp=1, main=title, pch=pch, col=col)
  plot(gap, main=paste("Gap stats,", title))
  abline(v=k, lty=3, lwd=2, col="Blue")
  #
  # Prepare for the next step.
  #
  xy <- apply(xy, 2, scale)
  title <- "Standardized data"
}

được rồi, cảm ơn vì lời giải thích Btw: Bạn có biết bất kỳ số liệu cụm nào khác như thống kê khoảng cách không? Tôi đã tìm thấy một số, nhưng tôi không biết cái nào thường được sử dụng với phương tiện k?
MikeHuber

+1. Trình diễn rất hay và thật ấn tượng khi bạn dường như đã số hóa số liệu của OP để có được cùng một dữ liệu.
amip nói phục hồi Monica

3
@amoeba Tôi đã nhìn vào biểu đồ phân tán và gõ vào tọa độ chính xác như bạn thấy ở đây (nghĩa là các chữ số liên quan là ngón tay của chính tôi :-)). Đôi khi cách tiếp cận đơn giản nhất là hiệu quả.
whuber

Thống kê khoảng cách có thể được sử dụng để tìm số cụm trong một mảng 1-d của các giá trị số không?
dùng1971988

@ user1971988 Tại sao không thử? Thay thế xymã bằng xy <- xy[, 1, drop=FALSE](để biến nó thành một mảng ). Nếu bạn không sử dụng , hãy xem xét thử nghiệm nhỏ này: bất kỳ mảng 1-d cũng có thể được coi là mảng 2-d mà không thay đổi bất kỳ khoảng cách nào. Phân cụm cái sau sẽ phân cụm cái trước. ( x i ) ( x i , 0 )n×1R(xi)(xi,0)
whuber

9

Tôi nghĩ bạn không hiểu gì khi sử dụng thống kê GAP. Tôi tin rằng mặc dù bạn bị đánh lừa một phần bởi quy mô của dữ liệu trong hình dung. Bạn thấy hai cụm nhưng thực ra xhướng khá nhỏ so với yhướng. Trên cơ sở đó bạn mong chờ hai enlonged cụm. Tuy nhiên, có vẻ như một chế độ phương sai của bạn thống trị chế độ khác. Vì thống kê GAP giả định một mô hình null có một thành phần duy nhất ( ) và sau đó cố gắng từ chối mô hình này cho một mô hình thay thế với ; những gì bạn quan sát là không có khả năng từ chối null. Xin lưu ý rằng việc không thể từ chối giả thuyết khống không làm cho nó đúngK > 1K=1K>1. Bài viết phương pháp mô tả thống kê GAP có sẵn trực tuyến nếu bạn muốn kiểm tra các chi tiết kỹ thuật nhiều hơn.

Tôi chạy mô hình của bạn bằng Mô hình hỗn hợp Gaussian (GMM - một khái quát của -means, xem chủ đề này để biết thêm về vấn đề đó). Đúng như vậy trong trường hợp đó, thống kê GAP đã đề xuất một cụm duy nhất. BIC cũng đề xuất một cụm duy nhất. AIC gợi ý 4 cụm (!), Đây là một dấu hiệu rõ ràng chúng ta bắt đầu phù hợp. Mẫu được sử dụng không quá lớn; bạn có 21 điểm trong đó một chế độ phương sai chiếm ưu thế so với chế độ khác. Đó là một chút kéo dài để có hai cụm 2 chiều (nghĩa là phù hợp với hai phương tiện 2-D và hai ma trận hiệp phương sai ) chỉ với 21 điểm 2-D. :) (Trong trường hợp -means, ma trận hiệp phương sai của bạn có cấu trúc chặt chẽ hơn (bạn không nhìn vào hiệp phương sai) nhưng tôi sẽ không tập trung vào vấn đề đó ở đây.)2 × 2 kk2×2k

EDIT: Chỉ để hoàn thiện: @whuber cho thấy hai cụm sẽ xuất hiện dưới dạng tối ưu trong -means nếu một tiêu chuẩn hóa dữ liệu của anh ấy; tiêu chí GAP được áp dụng trên GMM fit cũng sẽ cho là số cụm tối ưu nếu một tiêu chuẩn hóa dữ liệu.K = 2kK=2


+1 Bạn đã thấy vấn đề tiềm ẩn bằng cách đọc kỹ cốt truyện: hoàn thành tốt! Liên kết đến bài viết của HỌ cũng được hỗ trợ cho câu trả lời của bạn.
whuber

@whuber: Chúng tôi đã thảo luận về quy mô này, phải không? :)
usεr11852 nói Phục hồi Monic

Đó là một bối cảnh khác nhau mà tôi đã không tạo ra kết nối ....
whuber

Đó thực sự là một bối cảnh khác nhau; Tôi đã đề cập với bạn chỉ vì nó là "vảy" ở đó, và "vảy" ở đây.
usεr11852 nói Phục hồi Monic

0

Tôi đã có cùng một vấn đề như các poster ban đầu. Tài liệu R hiện nói rằng cài đặt gốc và mặc định của d.power = 1 là không chính xác và nên được thay thế bằng d.power: 2 tương ứng với những gì mà Tibshirani et al đã đề xuất. Điều này đã được tìm thấy bởi Juan Gonzalez, vào năm 2016/02. "

Do đó, việc thay đổi d.power = 2 đã giải quyết vấn đề cho tôi.

https://www.rdocumentation.org/packages/cluster/versions/2.0.6/topics/clusGap

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.