Chúng ta có cần thiết lập tập huấn luyện và tập kiểm thử để phân cụm không?


10

Khi chúng tôi phân loại và hồi quy, chúng tôi thường đặt các bộ kiểm tra và đào tạo để giúp chúng tôi xây dựng và cải thiện các mô hình.

Tuy nhiên, khi chúng ta phân cụm chúng ta cũng cần phải thiết lập các bộ kiểm tra và đào tạo? Tại sao?


Có - vì những lý do tương tự như phân loại / hồi quy. Bạn muốn đảm bảo rằng bất kỳ mô hình nào bạn tạo (giả sử biểu đồ khuỷu tay của bạn chỉ ra rằng k = 3 trong phân cụm k-mean) vẫn phù hợp để không nhìn thấy dữ liệu.
ilanman

Cảm ơn bạn ilanman;) Ngoài ra, bạn có bất kỳ đề xuất nào về cách xác định số lượng cụm thực tế khi chúng tôi thực hiện các cụm như kmeans không?
rz.

Câu trả lời:


6

Có, bởi vì phân cụm cũng có thể bị vấn đề quá phù hợp. Ví dụ: tăng số lượng cụm sẽ luôn "tăng hiệu suất".

Đây là một bản demo sử dụng phân cụm K-Means:

Hàm mục tiêu của K-mean là (chi tiết ký hiệu có thể tìm thấy ở đây )

J=i=1kj=1nxi(j)cj2

Với mục tiêu như vậy, thấp hơn có nghĩa là mô hình "tốt hơn".J

Giả sử chúng ta có dữ liệu sau (dữ liệu mống mắt), chọn số cụm là 3 5 4 J = 04 sẽ luôn "tốt hơn" so với chọn số cụm là . Sau đó chọn cụm sẽ tốt hơn cụm. Chúng ta có thể tiếp tục theo dõi này và kết thúc với chi phí : chỉ cần tạo số cụm bằng số lượng điểm dữ liệu và đặt tất cả tâm cụm trên các điểm tương ứng.354J=0

d=iris[,c(3,4)]

res4=kmeans(d, 4,nstart=20)
res3=kmeans(d, 3,nstart=20)


par(mfrow=c(1,2))
plot(d,col=factor(res4$cluster),
		 main=paste("4 clusters J=",round(res4$tot.withinss,4)))
plot(d,col=factor(res3$cluster),
		 main=paste("3 clusters J=",round(res3$tot.withinss,4)))

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

Nếu chúng tôi đã giữ dữ liệu để kiểm tra, nó sẽ ngăn chúng tôi phù hợp quá mức. Ví dụ tương tự, giả sử chúng ta đang chọn các cụm số lượng lớn và đặt mọi trung tâm cụm vào các điểm dữ liệu đào tạo. Lỗi kiểm tra sẽ lớn, vì các điểm dữ liệu kiểm tra sẽ không trùng với dữ liệu huấn luyện.


Xin chào hxd1011, cảm ơn bạn đã trả lời nhanh chóng. Một câu hỏi khác, bạn có bất kỳ khuyến nghị nào về cách xác định số lượng cụm thực tế khi chúng tôi thực hiện các cụm như kmeans không?
rz.

@ rz. Có, hãy kiểm tra câu trả lời này.stackexchange.com/questions/261537/NH
Haitao Du

2
+1 bởi vì đó là một câu trả lời mang tính xây dựng nhưng để chơi người ủng hộ của quỷ, bạn có biết chúng là 3 cụm. Nếu ai đó hiển thị dữ liệu này mà không có bất kỳ bối cảnh nào, giải pháp 2 cụm cũng sẽ hoạt động tốt. Có thể bạn thậm chí còn có một số điểm cao nhất bên phải là ngoại lệ để chơi "dữ liệu thực có dữ liệu". Sẽ có tính xây dựng hơn (và nghiêm ngặt hơn) khi xem xét sự gắn kết giữa các cụm chạy bootstrapping / jittered / subsetted bằng cách sử dụng một số thống kê (ví dụ: tương quan cophenetic, Rand-Index đã điều chỉnh, v.v.).
usεr11852

Và nếu bạn không sử dụng phương tiện k? Nói, cụm liên kết trung bình? Tôi sợ rằng câu trả lời của bạn quá phù hợp với phương tiện k .
Có QUIT - Anony-Mousse

@ Anony-Mousse: Câu trả lời cụ thể cho k-nghĩa là một ví dụ nhưng nó sẽ giống nhau về mặt chất lượng nếu DBSCAN hoặc phân cụm phổ hoặc bất cứ thứ gì khác được sử dụng. Nó chỉ cho thấy rằng một số liệu cụ thể có thể được trang bị quá mức.
usεr11852

5

Không, điều này thường sẽ không thể.

Có rất ít cụm mà bạn có thể sử dụng như một bộ phân loại. Chỉ với phương tiện k, PAM, v.v. bạn có thể đánh giá "tổng quát hóa", nhưng việc phân cụm đã trở nên đa dạng hơn (và thú vị) kể từ đó. Và trên thực tế, ngay cả cụm phân cấp cũ cũng không khái quát tốt cho dữ liệu 'mới'. Phân cụm không phân loại. Nhiều phương pháp từ phân loại không chuyển tốt sang phân cụm; bao gồm tối ưu hóa siêu tham số.

Nếu bạn chỉ có một phần dữ liệu được gắn nhãn, bạn có thể sử dụng các nhãn này để tối ưu hóa các tham số. Nhưng kịch bản chung của phân cụm sẽ là bạn muốn tìm hiểu thêm về tập dữ liệu của mình; vì vậy bạn chạy phân cụm nhiều lần, điều tra các cụm thú vị (vì thông thường, một số cụm rõ ràng quá nhỏ hoặc quá lớn để trở nên thú vị!) và ghi lại một số hiểu biết bạn có. Phân cụm là một công cụ giúp con người khám phá một tập dữ liệu , không phải là một thứ tự động. Nhưng bạn sẽ không "triển khai" một cụm. Chúng quá không đáng tin cậy, và một cụm duy nhất sẽ không bao giờ "kể toàn bộ câu chuyện".


1
Phân cụm phản ánh một thuộc tính toàn cầu của dữ liệu và nó thường không có "sự thật". Có điều buồn, tôi không nghĩ rằng bất cứ ai ủng hộ việc sử dụng một cụm như là một phân loại đầu tiên; tuy nhiên nếu chúng ta tìm thấy một cụm thú vị thì sẽ thật ngu ngốc nếu không thử sử dụng những phát hiện này bằng cách kết hợp chúng trong một quá trình ra quyết định. (Nếu không thì tại sao chúng ta phân cụm dữ liệu để bắt đầu?)
usεr11852

để chạy phân cụm, chúng ta vẫn cần một mục tiêu để tối ưu hóa. nếu đó là một vấn đề tối ưu hóa thì nó có thể phù hợp với một dữ liệu. Ngoài kmeans, nhiều phương pháp khác vẫn cần số cụm.
Haitao Du

1
Không phải mọi thuật toán phân cụm là một vấn đề tối ưu hóa.
Có QUIT - Anony-Mousse

1
Và theo như sử dụng kết quả: bạn muốn sử dụng thông tin chi tiết, không phải kết quả thô. Giải thích cụm và làm việc với giải thích , bởi vì sẽ có rất nhiều điểm được gán kém.
Có QUIT - Anony-Mousse

Tôi ủng hộ câu trả lời này, bởi vì khi một điểm dữ liệu mới xuất hiện, bạn học biểu diễn và sau đó cụm, do đó không cần kiểm tra. Ngay cả khi bạn đang chia nó thì bạn đang mất thông tin dữ liệu.
Aaditya Ura

1

Không. Bạn không sử dụng đào tạo và kiểm tra trong học tập không giám sát. Không có chức năng khách quan trong học tập không giám sát để kiểm tra hiệu năng của thuật toán.


3
Không có thêm một số chi tiết, điều này không thực sự thêm vào cuộc thảo luận và hai câu trả lời hiện có. Bạn có thể mở rộng về nó?
mdewey
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.