Làm thế nào để 'thông minh' bin một bộ sưu tập dữ liệu được sắp xếp?


11

Tôi đang cố gắng thông minh bin một bộ sưu tập được sắp xếp. Tôi có một bộ sưu tập gồm mẩu dữ liệu. Nhưng tôi biết rằng dữ liệu này phù hợp vào không đều có kích thước thùng. Tôi không biết làm thế nào để chọn điểm cuối một cách thông minh để phù hợp với dữ liệu. ví dụ:nm

Giả sử tôi có 12 mục trong bộ sưu tập của mình và tôi biết dữ liệu sẽ phù hợp với 3 thùng:

Index:  1 2 3 4 5 6 7 8 9 10 11 12
Value:  1 1 1 3 3 3 3 3 3 5  5  6

Làm cách nào để tôi chọn điểm dừng của mình một cách thông minh cho các thùng của ?i={13},{49},{1012}

Việc triển khai hiện tại tôi đã chia dữ liệu thành các thùng có kích thước đồng đều và sau đó lấy trung bình của các điểm cuối để tìm các chỉ mục cho phần cuối của các thùng. Vì vậy, nó hoạt động như thế này:

Index:  1 2 3 4 5 6 7 8 9 10 11 12
Value:  1 1 1 3 3 3 3 3 3 5  5  6

first break evenly: i = 1-4, 5-8, 9-12
mean endpoints:  between 4 and 5: (3+3)/2 = 3
                 between 8 and 9: (3+3)/2 = 3

Vì vậy, bây giờ bất cứ điều gì dưới 3 phù hợp với bin 1, bất cứ điều gì trên 3 nhưng dưới 3 phù hợp với bin 2 và bất cứ điều gì trên 3 phù hợp với bin 3. Bạn có thể thấy vấn đề của tôi là gì. Nếu dữ liệu có các thùng không bằng nhau, phương pháp của tôi không thành công.

Một người bạn đã đề cập đến thuật toán hàng xóm gần nhất k nhưng tôi không chắc chắn.


1
Bạn có thể giải thích "thông minh" nghĩa là gì không? Bạn đang cố gắng thực hiện điều gì với binning? Tại sao bạn lại đóng thùng ngay từ đầu?
whuber

Đối với đoạn thứ hai đến đoạn cuối của bạn, bạn có nghĩa là , và ? Mặt khác, nó không có ý nghĩa với tôi. <3bin13&<4bin24bin3
gung - Phục hồi Monica

Tôi có nghĩa là thông minh như không ngây thơ như tôi đã làm bằng cách giả sử các thùng được cách đều nhau. nếu một phần dữ liệu rơi vào một thùng cụ thể cho tôi biết điều gì đó rất quan trọng về phần dữ liệu đó. Tôi sắp xếp dữ liệu để xác định các chỉ số ngắt bin và sau đó quyết định từng thùng dữ liệu rơi riêng lẻ.
Matthew Kemnetz

trừ khi tôi đã làm điều gì đó sai trong trung bình của tôi, tôi nghĩ rằng tôi có nó đúng. bằng cách chọn chẵn; y cách nhau tất cả các điểm cuối của tôi là 3. Vì vậy, tôi không thể bin dữ liệu của mình. Đây là lý do tại sao việc thực hiện của tôi bị phá vỡ mà không có các thùng cách đều nhau.
Matthew Kemnetz

Đây là một cái gì đó tôi đã làm trong một thiết lập hơi khác nhau.
Macro

Câu trả lời:


9

Tôi nghĩ những gì bạn muốn làm được gọi là phân cụm. Bạn muốn nhóm lại các "Giá trị" của mình sao cho các giá trị tương tự được thu thập trong cùng một thùng và số lượng tổng số thùng được đặt trước.

Bạn có thể giải quyết vấn đề này bằng thuật toán phân cụm k-mean . Trong MATLAB, bạn có thể làm điều này bằng cách:

bin_ids = kmeans(Values,3); 

Cuộc gọi ở trên sẽ nhóm các giá trị trong Valuesba nhóm sao cho phương sai trong nhóm là tối thiểu.


1
Tôi thấy rằng ra quá. Đây chính xác là những gì tôi đã thực hiện và nó hoạt động xuất sắc. Tôi đến đây để trả lời câu hỏi của riêng tôi nhưng bạn đã đánh bại tôi! Phân cụm là những gì tôi đã cố gắng để làm.
Matthew Kemnetz

8

k-mean là một tùy chọn, nhưng nó không hợp lý cho dữ liệu 1 chiều. Trong dữ liệu một chiều, bạn có một lợi ích to lớn : dữ liệu có thể được sắp xếp đầy đủ.

Thay vào đó, hãy xem tối ưu hóa các ngắt tự nhiên :
http://en.wikipedia.org/wiki/Jenks_natural_breaks_optimization


Điều này là vô cùng thú vị. Bạn có thể đi vào chi tiết hơn về lý do tại sao điều này có thể tốt hơn k nghĩa là gì không?
Matthew Kemnetz

Lý do chính tại sao tôi hỏi là vì tôi đang sử dụng MATLAB cho thuật toán của mình và tôi không thể tìm thấy bất kỳ tối ưu hóa tự nhiên nào của Jenks trong bất kỳ hộp công cụ nào, v.v. vì vậy tôi sẽ cần phải tự thực hiện. Tôi chỉ muốn biết điều này có thể tốt hơn / nhanh hơn bao nhiêu trước khi tôi chuyển đổi bánh răng và thực hiện điều này.
Matthew Kemnetz

1
k-nghĩa là khá ngu ngốc. Nó có phương tiện, và nó sẽ luôn luôn phân chia ở giữa hai phương tiện. Vì vậy, được đưa ra, ví dụ 0 1 2 3 4 5 7 7 7, k-
mean
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.