Xác định các cụm dữ liệu 1d khác nhau từ cơ sở dữ liệu


24

Tôi có một bảng cơ sở dữ liệu chuyển dữ liệu giữa các nút khác nhau. Đây là một cơ sở dữ liệu khổng lồ (với gần 40 triệu lượt chuyển). Một trong những thuộc tính là số lượng byte (nbyte) chuyển từ 0 byte đến 2 tera byte. Tôi muốn phân cụm các nbyte sao cho k cụm được chuyển một số x1 thuộc về cụm k1, bộ chuyển đổi x2 sang k2, v.v.

Từ thuật ngữ mà tôi đã sử dụng, bạn có thể đoán được tôi đang đi với cái gì: K-nghĩa. Đây là dữ liệu 1d vì nbyte là tính năng duy nhất tôi quan tâm. Khi tôi đang tìm kiếm các phương pháp khác nhau, tôi thấy EM được nhắc đến một vài lần cùng với cách tiếp cận không phân cụm. Tôi muốn biết về quan điểm của bạn về cách tiếp cận vấn đề này (cụ thể là có nên phân cụm hay không phân cụm).

Cảm ơn!


"Chuyển x1", "chuyển x2" là gì? "Kiểu chuyển" có phải là biến thứ hai không?
Peter Flom - Tái lập Monica

Chuyển x1 chỉ là một cách để tôi nói rằng 500 chuyển này có kích thước chuyển xung quanh một số giá trị (đây sẽ là giá trị trung bình của cụm đó trong k-mean).
Shaun

5
Tôi không phải là chuyên gia về phân cụm, nhưng với rất nhiều dữ liệu và chỉ có 1 chiều, tôi tự hỏi liệu bạn có thể tạo một số ô mật độ hạt nhân bằng cách sử dụng các băng thông khác nhau và xem bạn tìm thấy bao nhiêu chế độ / đỉnh không, và liệu kết quả có giống như không nó sẽ hữu ích cho bạn
gung - Phục hồi Monica

1
Bạn hỏi có nên co cụm hay không. Điều gì sẽ là mục tiêu của bạn từ cụm? Bạn sẽ sử dụng các cụm cho một số mục đích khác, hoặc đây là lợi ích lý thuyết?
Peter Flom - Tái lập Monica

Một số thuộc tính khác từ bảng là tên người dùng, ngày bắt đầu và ngày kết thúc. Hy vọng của tôi là bằng cách phân cụm các chuyển khoản dựa trên kích thước chuyển khoản, sau đó tôi có thể tham khảo các thuộc tính khác của một lần chuyển cụ thể để xem ai sẽ chuyển bao nhiêu vào tháng nào trong năm. Chúng ta sẽ làm gì với quan sát này, tôi chưa biết. Nhưng đó là nơi tôi sẽ đến.
Shaun

Câu trả lời:


43

Trong dữ liệu một chiều, không sử dụng phân tích cụm.

Phân tích cụm thường là một kỹ thuật đa biến. Hoặc để tôi nói tốt hơn theo cách khác: đối với dữ liệu một chiều - được sắp xếp hoàn toàn - có nhiều kỹ thuật tốt hơn. Sử dụng phương tiện k và các kỹ thuật tương tự ở đây là một sự lãng phí hoàn toàn, trừ khi bạn nỗ lực đủ để thực sự tối ưu hóa chúng cho trường hợp 1-d.

Chỉ để cho bạn một ví dụ: đối với k-có nghĩa là thông thường sử dụng k đối tượng ngẫu nhiên làm hạt giống ban đầu. Đối với dữ liệu một chiều, khá dễ dàng để làm tốt hơn bằng cách chỉ sử dụng các lượng tử thích hợp (1 / 2k, 3 / 2k, 5 / 2k, v.v.), sau khi sắp xếp dữ liệu một lần , sau đó tối ưu hóa từ điểm bắt đầu này. Tuy nhiên, dữ liệu 2D không thể được sắp xếp hoàn toàn. Và trong một lưới, có khả năng sẽ có các ô trống.

Tôi cũng sẽ không gọi nó là cụm. Tôi sẽ gọi nó là khoảng . Những gì bạn thực sự muốn làm là để tối ưu hóa các đường viền khoảng. Nếu bạn thực hiện k-mean, nó sẽ kiểm tra từng đối tượng nếu nó được chuyển sang cụm khác. Điều đó không có ý nghĩa trong 1D: chỉ các đối tượng ở các đường viền khoảng cần được kiểm tra. Điều đó rõ ràng là nhanh hơn nhiều, vì chỉ có ~ 2k đối tượng ở đó. Nếu họ không thích các khoảng khác, các đối tượng trung tâm hơn cũng sẽ không.

Bạn có thể muốn xem xét các kỹ thuật như tối ưu hóa Jenks Natural Breaks chẳng hạn.

Hoặc bạn có thể thực hiện ước tính mật độ hạt nhân và tìm cực tiểu cục bộ của mật độ để phân chia ở đó. Điều tuyệt vời là bạn không cần chỉ định k cho việc này!

PS vui lòng sử dụng chức năng tìm kiếm. Dưới đây là một số câu hỏi về phân cụm dữ liệu 1-d mà bạn đã bỏ lỡ:


Quantiles không nhất thiết phải đồng ý với các cụm. Phân phối 1d có thể có 3 cụm tự nhiên trong đó hai cụm giữ 10% dữ liệu mỗi cụm và cụm cuối cùng chứa 80% dữ liệu. Vì vậy, tôi nghĩ rằng có thể phân cụm ở đây, mặc dù tôi đồng ý rằng sẽ tối ưu hóa việc chạy bằng cách chọn hạt giống một cách thông minh, v.v. hoặc sử dụng các ý tưởng khác.
Bitwise

Các lượng tử có lẽ là điểm hạt giống tốt để tối ưu hóa , đó là những gì tôi đã đề cập. Và chỉ đưa ra một ví dụ về những gì bạn có thể làm trong 1D mà không hoạt động tốt ở hơn 2 chiều.
Anony-Mousse

Tôi đồng ý rằng sẽ rất đáng để sử dụng các lượng tử làm hạt giống, nhưng tôi vẫn sẽ thử một số khởi tạo ngẫu nhiên (ví dụ như cái tôi đã cho). Trong mọi trường hợp, phương pháp tốt nhất sẽ là chỉ nhìn vào biểu đồ / biểu đồ mật độ và chọn hạt giống theo cách thủ công và sau đó tối ưu hóa chúng với phân cụm. Điều đó sẽ hội tụ rất nhanh đến một giải pháp tốt.
Bitwise

3
Jenks k-nghĩa trong 1D.
whuber

1
@whuber ngay cả khi nó là toán học, tôi hy vọng anh ta đủ thông minh để khai thác rằng dữ liệu có thể được đặt hàng . Nếu bạn sử dụng phương pháp Lloyd để thực hiện phương tiện k trên dữ liệu 1-d, bạn thật ngu ngốc, bởi vì bạn đang thực hiện rất nhiều tính toán mà bạn có thể bỏ qua. Và với hầu hết mọi người, k-nghĩa là Lloyd. Và một số người quan tâm đến việc tránh các tính toán lại không cần thiết.
Anony-Mousse

1

Là câu hỏi của bạn cho dù bạn nên cụm hoặc phương pháp bạn nên sử dụng để cụm?

Về việc bạn có nên phân cụm hay không, điều này phụ thuộc vào việc bạn có muốn tự động phân vùng dữ liệu của mình hay không (ví dụ nếu bạn muốn lặp lại phân vùng này nhiều lần). Nếu bạn chỉ làm điều này một lần, bạn có thể chỉ cần nhìn vào biểu đồ phân phối các giá trị của bạn và phân vùng nó bằng mắt, như đề xuất trong các nhận xét. Tôi sẽ khuyên bạn nên xem dữ liệu bằng mắt, vì nó có thể giúp bạn xác định có bao nhiêu cụm bạn muốn và cả cụm có "hoạt động" không.

Về kiểu phân cụm, phương tiện k sẽ ổn nếu có cụm "thực" trong dữ liệu. Nếu bạn không thấy bất kỳ cụm nào trong biểu đồ, thì dù sao nó cũng không có ý nghĩa phân cụm nó, vì bất kỳ phân vùng nào trong phạm vi dữ liệu của bạn sẽ cung cấp các cụm hợp lệ (hoặc trong trường hợp bắt đầu ngẫu nhiên của kmeans, bạn sẽ nhận được các cụm khác nhau mỗi lần chạy).


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.