Phân cụm dữ liệu 1D


16

Tôi có một tập dữ liệu, tôi muốn tạo các cụm trên dữ liệu đó chỉ dựa trên một biến (không có giá trị nào bị thiếu). Tôi muốn tạo 3 cụm dựa trên một biến đó.

Những thuật toán phân cụm để sử dụng, k-nghĩa, EM, DBSCAN, vv?

Câu hỏi chính của tôi là, trong trường hợp nào tôi nên sử dụng phương tiện k trên EM hoặc EM hơn phương tiện k?


1
Thuật toán EM là một công cụ có mục đích chung để thực hiện ước tính khả năng tối đa với dữ liệu bị thiếu - bạn có thể cụ thể hơn về cách nó là "thuật toán phân cụm" không?
Macro

Tôi đang sử dụng weka như một công cụ và theo thuật toán phân cụm, EM được liệt kê dưới dạng thuật toán. Tôi xin lỗi vì câu hỏi khập khiễng, tôi mới khai thác dữ liệu.
Ali

Tôi biết thuật toán EM được sử dụng để ước tính khả năng tối đa cho các mô hình biến tiềm ẩn (có thể được coi là "dữ liệu bị thiếu") và các biến tiềm ẩn thường được sử dụng để phân cụm. Có lẽ đây là những gì có nghĩa.
Macro

@macro: bạn có thể muốn xem tại đây: stat.washington.edu/mclust để bắt đầu.
user603

3
Mục đích của cụm là gì? Như với hầu hết các câu hỏi thống kê, có nhiều câu trả lời và biết mục đích là một hướng dẫn thiết yếu để chọn câu hỏi phù hợp hoặc tốt.
whuber

Câu trả lời:


11

Thuật toán K-mean và thuật toán EM sẽ khá giống nhau cho phân cụm 1D.

Trong K-nghĩa là bạn bắt đầu với việc đoán phương tiện ở đâu và gán từng điểm cho cụm với giá trị trung bình gần nhất, sau đó bạn tính lại phương tiện (và phương sai) dựa trên các điểm gán hiện tại, sau đó cập nhật phân tích điểm, sau đó cập nhật ý nghĩa ...

Trong EM, bạn cũng sẽ bắt đầu đoán xem phương tiện ở đâu, sau đó bạn tính giá trị dự kiến ​​của các bài tập (về cơ bản là xác suất của mỗi điểm trong mỗi cụm), sau đó bạn cập nhật phương tiện ước tính (và phương sai) bằng cách sử dụng các giá trị dự kiến như trọng số, sau đó tính toán các giá trị dự kiến ​​mới, sau đó tính toán các phương tiện mới, ...

Sự khác biệt chính là việc gán điểm cho các cụm trong K-mean là tất cả hoặc không có gì, trong đó EM đưa ra tỷ lệ / xác suất thành viên nhóm (một điểm có thể được xem là có xác suất 80% trong nhóm A, xác suất 18% thuộc nhóm B và xác suất 2% vào nhóm C). Nếu có nhiều sự tách biệt giữa các nhóm thì 2 phương pháp sẽ cho kết quả khá giống nhau. Nhưng nếu có một số lượng trùng lặp khá lớn thì EM có thể sẽ cho kết quả có ý nghĩa hơn (thậm chí nhiều hơn nếu phương sai / độ lệch chuẩn được quan tâm). Nhưng nếu tất cả những gì bạn quan tâm là chỉ định thành viên nhóm mà không quan tâm đến các tham số, thì K-mean có lẽ đơn giản hơn.

Tại sao không làm cả hai và xem các câu trả lời khác nhau như thế nào? nếu chúng giống nhau thì đi với cái đơn giản hơn, nếu chúng khác nhau thì quyết định so sánh việc phân nhóm với dữ liệu và kiến ​​thức bên ngoài.


Cảm ơn greg bài viết của bạn đã giúp đỡ, tôi đã áp dụng cả hai và có vẻ như EM đã tạo ra các cụm tốt hơn so với k-mean. (Tôi nghĩ chủ yếu là vì dữ liệu tôi có liên tục và không có khoảng trống). Tôi hơi bối rối, vì tôi chỉ có dữ liệu 1D, nên có lẽ tôi nên làm binning để phân loại dữ liệu. Bạn nghĩ sao? Chính xác những gì bạn có nghĩa là bởi các tham số? Nó có đề cập đến các thuộc tính của một thể hiện không? Cảm ơn Ali
Ali

Một mình EM dường như là không đủ. Bạn cần một giả định về việc phân phối các phân phối cơ bản của hỗn hợp.
tomka

2

EM tốt hơn k-mean về kết quả.

K-nghĩa là, tuy nhiên, có thời gian chạy nhanh hơn.

Chúng sẽ tạo ra kết quả tương tự nếu độ lệch chuẩn / ma trận hiệp phương sai xấp xỉ bằng nhau. Nếu bạn nghi ngờ điều này là đúng, hãy sử dụng phương tiện k.

DBSCAN được sử dụng khi dữ liệu không phải là gaussian. Nếu bạn đang sử dụng dữ liệu 1 chiều, điều này thường không áp dụng được, vì xấp xỉ gaussian thường có giá trị trong 1 chiều.


0

Một cách đơn giản khác là về cơ bản sử dụng sắp xếp mảng 1D: tức là lặp qua từng điểm và lấy các giá trị ở khoảng cách tối thiểu từ nó theo cả hai hướng tích cực và tiêu cực. Ví dụ:

data = [1,2,3,4,5,6,7,8,9,10,12]
k = 5
for a in data:
   print {'group': sorted(k, key=lambda n: abs(n-a))[0:k], 'point': a}

sẽ đưa ra:

{'group': [1, 2, 3, 4, 5], 'point': 1}
{'group': [2, 1, 3, 4, 5], 'point': 2}
{'group': [3, 2, 4, 1, 5], 'point': 3}
{'group': [4, 3, 5, 2, 6], 'point': 4}
{'group': [5, 4, 6, 3, 7], 'point': 5}
{'group': [6, 5, 7, 4, 8], 'point': 6}
{'group': [7, 6, 8, 5, 9], 'point': 7}
{'group': [8, 7, 9, 6, 10], 'point': 8}
{'group': [9, 8, 10, 7, 6], 'point': 9}
{'group': [10, 9, 8, 12, 7], 'point': 10}
{'group': [12, 10, 9, 8, 7], 'point': 12}

Những điểm nào, rằng các mục gần với một điểm cụ thể về cơ bản thuộc nhóm của nó. Điều duy nhất cần suy ngẫm trong kỹ thuật này là biến k, là kích thước cố định của cụm :-).


-2

Nếu chỉ có một biến, không cần phân cụm. Bạn có thể dễ dàng nhóm các quan sát của mình dựa trên phân phối của biến.

Hay tôi đang thiếu một số điểm ở đây?


5
Bạn có thể đưa ra một ví dụ cụ thể về cách nhóm các quan sát dựa trên phân phối của biến không?
Ali

@ nhà soạn nhạc314: với một biểu đồ?
nico

1
Tôi xin lỗi, nhưng tôi vẫn không theo dõi. Làm thế nào tôi có thể sử dụng biểu đồ để quan sát nhóm? (Tôi đoán câu hỏi tôi có thể hỏi thực sự là như thế nào một khối tìm trong một biểu đồ điều này sẽ là tương tự như hái đỉnh quang phổ?)
Ali

5
@composer Sử dụng biểu đồ hoặc thậm chí là một kernel của dữ liệu thường không phải là một cách "dễ dàng" để phân cụm. Nếu bạn muốn đi theo cách này, bạn cần phải phù hợp với một mô hình hỗn hợp hữu hạn . Nếu bạn chỉ muốn một cái nhìn bình thường về biểu đồ có thể gợi ý, hãy sử dụng phương tiện K (còn được gọi là phương pháp của Jenks , phổ biến trong các người vẽ bản đồ).
whuber
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.