Làm thế nào để quyết định số cụm chính xác?


54

Chúng tôi tìm thấy các trung tâm cụm và gán điểm cho k thùng khác nhau trong cụm k-nghĩa là thuật toán rất nổi tiếng và được tìm thấy gần như trong mọi gói học máy trên mạng. Nhưng phần còn thiếu và quan trọng nhất theo ý kiến ​​của tôi là sự lựa chọn của một k chính xác. Giá trị tốt nhất cho nó là gì? Và, tốt nhất là gì?

Tôi sử dụng MATLAB cho tính toán khoa học trong đó việc nhìn vào các ô bóng được đưa ra như một cách để quyết định k thảo luận ở đây . Tuy nhiên, tôi sẽ quan tâm nhiều hơn đến các phương pháp Bayes. Bất kỳ đề xuất đều được đánh giá cao.


2
Câu hỏi hay ...


Theo trực quan hóa để phân cụm, có (ahem) một cách để hình dung các cụm k và xem hiệu ứng của nhiều k khác nhau trong một lần chụp, sử dụng MST.
chối

Tôi đã trả lời câu hỏi này với một nửa tá các phương pháp trong Rqua đây
Ben

1
Quyết định số k "tốt nhất" của cụm có nghĩa là so sánh các giải pháp cụm với k khác nhau - giải pháp nào "tốt hơn". Về mặt tôn trọng, tác vụ xuất hiện tương tự như cách so sánh các phương thức phân cụm - "tốt hơn" cho dữ liệu của bạn. Các hướng dẫn chung là ở đây .
ttnphns

Câu trả lời:


28

Điều này đã được hỏi một vài lần trên stackoverflow: đây , đâyđây . Bạn có thể xem đám đông ở đó nghĩ gì về câu hỏi này (hoặc một biến thể nhỏ của nó).

Hãy để tôi cũng sao chép câu trả lời của riêng tôi cho câu hỏi này, trên stackoverflow.com:

Thật không may, không có cách nào để tự động đặt "quyền" K và cũng không có định nghĩa về "quyền" là gì. Không có một phương pháp thống kê nguyên tắc, đơn giản hay phức tạp nào có thể đặt "K đúng". Có những heuristic, quy tắc ngón tay cái đôi khi hoạt động, đôi khi không.

Tình hình chung chung hơn khi nhiều phương pháp phân cụm có các loại tham số này và tôi nghĩ đây là một vấn đề mở lớn trong cộng đồng nghiên cứu học tập phân cụm / không giám sát.


+1 Sau khi đọc nó - có vẻ như tôi rất trực quan .... nhưng tôi phải nói rằng tôi chưa bao giờ nghĩ về điều này trước đây. thực ra vấn đề chọn số lượng PC trong PCA tương đương với vấn đề chọn số cụm trong K-mean ...
Dov

2
@Dov hai điều này không hoàn toàn tương đương. Có các biện pháp cụ thể có thể được sử dụng để kiểm tra chất lượng của giải pháp PCA (đáng chú ý nhất là lỗi tái cấu trúc, nhưng cũng có% phương sai được ghi lại, v.v.) và những xu hướng này (hầu hết) nhất quán. Tuy nhiên, trong phân cụm thường không có "câu trả lời đúng" - một cụm có thể tốt hơn một số liệu theo một số liệu và điều ngược lại có thể đúng khi sử dụng một số liệu khác. Và trong một số tình huống, hai cụm khác nhau có thể có thể xảy ra như nhau trong cùng một số liệu.
tdc

@tdc nhưng đừng làm điều này en.wikipedia.org/wiki/. Ít nhiều giống như điều này được cải thiện.com / docs / WebSiteDocs / PCA / Lỗi ?
Dov

2
@Dov Vâng, họ "ít nhiều" giống nhau, nhưng tôi chỉ đơn giản nói rằng vấn đề chọn số cụm nhiều hơn nhiều so với việc chọn số lượng PC - tức là chúng không "tương đương".
tdc

1
+1 Bạn đúng. Chúng tôi giới thiệu một số mô hình hoặc giả định khác để quyết định k tốt nhất nhưng sau đó câu hỏi hóa ra là tại sao mô hình đó hoặc giả định là tốt nhất ...
petrichor

19

Đầu tiên là một cảnh báo. Trong phân cụm thường không có ai "trả lời đúng" - một cụm có thể tốt hơn một số liệu theo một số liệu và điều ngược lại có thể đúng khi sử dụng một số liệu khác. Và trong một số tình huống, hai cụm khác nhau có thể có thể xảy ra như nhau trong cùng một số liệu.

Có nói rằng, bạn có thể muốn có một cái nhìn về Quy trình Dirichlet . Cũng xem hướng dẫn này .

Nếu bạn bắt đầu với mô hình Hỗn hợp Gaussian, bạn có cùng một vấn đề như với phương tiện k - rằng bạn phải chọn số lượng cụm. Bạn có thể sử dụng bằng chứng mô hình, nhưng nó sẽ không mạnh trong trường hợp này. Vì vậy, mẹo là sử dụng Quy trình Dirichlet trước các thành phần hỗn hợp, sau đó cho phép bạn có số lượng thành phần hỗn hợp vô hạn, nhưng mô hình sẽ (thường) sẽ tự động tìm số thành phần "chính xác" (theo giả định của ngươi mâu).

Lưu ý rằng bạn vẫn phải chỉ định tham số nồng độ của Quy trình Dirichlet trước đó. Đối với các giá trị nhỏ của , các mẫu từ DP có thể bao gồm một số lượng nhỏ các biện pháp nguyên tử có trọng lượng lớn. Đối với các giá trị lớn, hầu hết các mẫu có khả năng là khác biệt (tập trung). Bạn có thể sử dụng siêu ưu tiên cho tham số nồng độ và sau đó suy ra giá trị của nó từ dữ liệu và siêu ưu tiên này có thể mơ hồ phù hợp vì cho phép nhiều giá trị khác nhau có thể. Tuy nhiên, khi có đủ dữ liệu, tham số nồng độ sẽ không còn quan trọng nữa và siêu ưu tiên này có thể bị loại bỏ.alphaαα


1
Một quá trình Dirichlet theo tham số nồng độ nào? Nó là loại tương đương với cùng một câu hỏi ban đầu, k-nghĩa là gì dưới k? Mặc dù tôi đồng ý rằng chúng tôi hiểu rõ hơn về phân phối Direchlet rằng hành vi của một số thuật toán phức tạp trên một số dữ liệu trong thế giới thực.
carlosdc

@carlosdc điểm tốt, tôi đã cập nhật câu trả lời để bao gồm một chút thảo luận về tham số nồng độ
tdc

1
Theo kinh nghiệm của tôi, việc tìm hiểu một tham số nồng độ có giá trị liên tục như alpha dễ dàng hơn nhiều so với việc xác định số lượng cụm trong mô hình hỗn hợp hữu hạn. Nếu bạn muốn gắn bó với mô hình hỗn hợp hữu hạn và thực hiện chiến thuật Bayes, có MCMC nhảy đảo ngược ( onlinel Library.wiley.com/doi/10.1111/1467-9868.00095/abab )

1
Câu trả lời chính xác. Tôi sẽ thêm bài viết Xem lại K-Means: Thuật toán mới thông qua Bayesian Nonparametrics . Cung cấp một cách tiếp cận "Liên tục" đơn giản cho K-Means. Sau đó, thật dễ dàng, sử dụng tối ưu hóa, để tìm giá trị tối ưu.
Royi

9

Tôi sử dụng phương pháp Elbow :

  • Bắt đầu với K = 2 và tiếp tục tăng từng bước 1, tính toán các cụm của bạn và chi phí đi kèm với đào tạo. Tại một số giá trị cho K, chi phí giảm đáng kể và sau đó nó đạt đến một cao nguyên khi bạn tăng thêm. Đây là giá trị K bạn muốn.

Lý do là sau này, bạn tăng số lượng cụm nhưng cụm mới rất gần một số hiện có.


Điều này nghe có vẻ như là nguyên tắc mà Phương pháp L (xem câu trả lời của tôi) đánh giá.
winwaed

6

Kích thước cụm phụ thuộc nhiều vào cả dữ liệu của bạn và những gì bạn sẽ sử dụng kết quả cho. Nếu bạn sử dụng dữ liệu của mình để phân chia mọi thứ thành các danh mục, hãy thử tưởng tượng có bao nhiêu danh mục bạn muốn đầu tiên. Nếu đó là để trực quan hóa dữ liệu, hãy đặt cấu hình để mọi người có thể thấy cả cụm lớn và cụm nhỏ hơn.

Nếu bạn cần tự động hóa nó, bạn có thể muốn thêm một hình phạt để tăng k và tính toán cụm tối ưu theo cách đó. Và sau đó bạn chỉ cần trọng lượng k tùy thuộc vào việc bạn muốn một tấn cụm hay bạn muốn rất ít.



5

Tôi đã quản lý để sử dụng "Phương pháp L" để xác định số lượng cụm trong một ứng dụng địa lý (nghĩa là về cơ bản là vấn đề 2d mặc dù về mặt kỹ thuật không phải là Euclide).

Phương pháp L được mô tả ở đây: Xác định số lượng cụm / phân đoạn trong thuật toán phân cụm / phân đoạn phân cấp Stan Salvador và Philip Chan

Về cơ bản điều này đánh giá sự phù hợp cho các giá trị khác nhau của k. Biểu đồ hình chữ "L" được nhìn thấy với giá trị k tối ưu được biểu thị bằng đầu gối trong biểu đồ. Một phép tính khớp vuông góc nhỏ nhất đơn giản được sử dụng để tìm điểm đầu gối.

Tôi thấy phương thức này rất chậm vì các phương tiện k lặp phải được tính cho mỗi giá trị của k. Ngoài ra tôi thấy k-mean hoạt động tốt nhất với nhiều lần chạy và chọn thứ tốt nhất ở cuối. Mặc dù mỗi điểm dữ liệu chỉ có hai chiều, khoảng cách Pythagore đơn giản không thể được sử dụng. Vì vậy, đó là rất nhiều tính toán.

Một suy nghĩ là bỏ qua mọi giá trị khác của k (giả sử) để giảm một nửa các phép tính và / hoặc giảm số lần lặp k-nghĩa, và sau đó làm mịn đường cong kết quả để tạo ra độ khớp chính xác hơn. Tôi đã hỏi về vấn đề này tại StackOverflow - IMHO, câu hỏi làm mịn vẫn là một câu hỏi nghiên cứu mở.


4

Bạn cần xem xét lại những gì k-nghĩa là gì. Nó cố gắng tìm phân vùng Voronoi tối ưu của tập dữ liệu thành các ô . Các tế bào Voronoi là các tế bào có hình dạng kỳ lạ, cấu trúc trực giao của một tam giác Delaunay.k

Nhưng nếu bộ dữ liệu của bạn không thực sự phù hợp với sơ đồ Voronoi thì sao?

Nhiều khả năng, các cụm thực tế sẽ không có ý nghĩa lắm. Tuy nhiên, họ vẫn có thể làm việc cho bất cứ điều gì bạn đang làm. Ngay cả việc chia một cụm "thật" thành hai phần vì của bạn quá cao, kết quả có thể hoạt động rất tốt, ví dụ như để phân loại. Vì vậy, tôi muốn nói: tốt nhất là, hoạt động tốt nhất cho nhiệm vụ cụ thể của bạn.kkk

Trong thực tế, khi bạn có các cụm không có kích thước và khoảng cách bằng nhau (và do đó không phù hợp với sơ đồ phân vùng Voronoi), bạn có thể cần tăng k cho phương tiện k để có kết quả tốt hơn.k


3
Mặc dù mô tả về K-nghĩa trong đoạn đầu tiên không sai, nhưng nó có thể khiến một số người hiểu lầm về việc đánh đồng phương pháp này với phân vùng Voronoi dựa trên dữ liệu gốc. Điều này không phải là như vậy: phân vùng dựa trên vị trí của cụm có nghĩa là có thể không (và thường sẽ không) trùng với bất kỳ dữ liệu gốc nào.
whuber

3

Nhìn chung, bạn có thể chọn số lượng cụm trong hai đường dẫn khác nhau.

  1. kiến thức định hướng: bạn nên có một số ý tưởng bạn cần bao nhiêu cụm từ quan điểm kinh doanh. Chẳng hạn, bạn đang phân cụm khách hàng, bạn nên tự hỏi, sau khi có được những khách hàng này, tôi nên làm gì tiếp theo? Có thể bạn sẽ có cách điều trị khác nhau cho các cụm khác nhau? (ví dụ: quảng cáo qua email hoặc điện thoại). Sau đó, có bao nhiêu phương pháp điều trị có thể bạn đang lên kế hoạch? Trong ví dụ này, bạn chọn nói 100 cụm sẽ không có ý nghĩa quá nhiều.

  2. Dữ liệu điều khiển: số lượng cụm nhiều hơn phù hợp và số lượng cụm ít hơn phù hợp. Bạn luôn có thể chia dữ liệu thành một nửa và chạy xác thực chéo để xem có bao nhiêu số cụm là tốt. Lưu ý, trong phân cụm bạn vẫn có chức năng mất, tương tự như cài đặt được giám sát.

Cuối cùng, bạn nên luôn kết hợp kiến ​​thức điều khiển và dữ liệu được điều khiển cùng nhau trong thế giới thực.


2

Vì chưa ai chỉ ra điều đó, tôi nghĩ tôi sẽ chia sẻ điều này. Có một phương pháp gọi là X-mean, ( xem liên kết này ) ước tính số lượng cụm thích hợp sử dụng tiêu chí thông tin Bayes (BIC). Về cơ bản, điều này sẽ giống như thử K có nghĩa với các K khác nhau, tính toán BIC cho mỗi K và chọn K. tốt nhất Thuật toán này thực hiện điều đó một cách hiệu quả.

Ngoài ra còn có một triển khai weka , chi tiết có thể được tìm thấy ở đây .


0

Một cách tiếp cận khác là sử dụng một thuật toán tiến hóa có các cá thể có nhiễm sắc thể có độ dài khác nhau. Mỗi cá nhân là một giải pháp ứng cử viên: mỗi người mang tọa độ trọng tâm. Số lượng trọng tâm và tọa độ của chúng được phát triển để đạt được một giải pháp mang lại điểm đánh giá phân cụm tốt nhất.

Bài viết này giải thích thuật toán.

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.