Do giữa tổng bình phương betweenss
và vector của trong tổng bình phương cho mỗi cụm withinss
các công thức là những:
totss = tot.withinss + betweenss
tot.withinss = sum(withinss)
Ví dụ, nếu chỉ có một cụm sau đó betweenss
sẽ 0
, sẽ chỉ có một thành phần trong withinss
và totss = tot.withinss = withinss
.
Để biết thêm chi tiết, chúng tôi có thể tính toán các số lượng khác nhau này cho các bài tập nhóm và có thể giúp làm rõ ý nghĩa của chúng. Xem xét dữ liệu x
và gán cụm cl$cluster
từ ví dụ trong help(kmeans)
. Xác định tổng bình phương hàm này như sau - điều này trừ giá trị trung bình của mỗi cột của x từ cột đó và sau đó tiền của các hình vuông của mỗi phần tử của ma trận còn lại:
# or ss <- function(x) sum(apply(x, 2, function(x) x - mean(x))^2)
ss <- function(x) sum(scale(x, scale = FALSE)^2)
Sau đó, chúng tôi có những điều sau đây. Lưu ý rằng cl$centers[cl$cluster, ]
là các giá trị được trang bị, tức là nó là ma trận với một hàng trên mỗi điểm sao cho hàng thứ i là trung tâm của cụm mà điểm thứ i thuộc về.
example(kmeans) # create x and cl
betweenss <- ss(cl$centers[cl$cluster,]) # or ss(fitted(cl))
withinss <- sapply(split(as.data.frame(x), cl$cluster), ss)
tot.withinss <- sum(withinss) # or resid <- x - fitted(cl); ss(resid)
totss <- ss(x) # or tot.withinss + betweenss
cat("totss:", totss, "tot.withinss:", tot.withinss,
"betweenss:", betweenss, "\n")
# compare above to:
str(cl)
EDIT:
Kể từ khi câu hỏi này được trả lời, R đã bổ sung thêm tương tự kmeans
ví dụ (example(kmeans)
) và một fitted.kmeans
phương pháp mới và bây giờ chúng ta thấy làm thế nào phương pháp được trang bị phù hợp trên trong các ý kiến trailing các dòng mã.
Ahum. Vì vậy, * tot.withinss * phải là tổng trong biến thể cụm và các * tots * phải là biến thể dữ liệu tổng thể. tổng trong biến thể cụm + số ss của các trung tâm cụm. Đúng? – Marius
Tôi đã thêm một số làm rõ thêm. –
Vì vậy, nếu người ta muốn tìm ra tổng số trong sự thay đổi cụm, sau đó * tot.whitinss * là một. Cảm ơn bạn. – Marius