Kỹ thuật phân cụm thích hợp cho dữ liệu thời gian?


13

Tôi có dữ liệu tạm thời về tần số hoạt động. Tôi muốn xác định các cụm trong dữ liệu chỉ ra các khoảng thời gian riêng biệt với mức độ hoạt động tương tự. Lý tưởng nhất là tôi muốn xác định các cụm mà không chỉ định số lượng cụm một tiên nghiệm.

Kỹ thuật phân cụm thích hợp là gì? Nếu câu hỏi của tôi không chứa đủ thông tin để trả lời, các phần thông tin mà tôi cần cung cấp để xác định các kỹ thuật phân cụm phù hợp là gì?

Dưới đây là một minh họa về loại dữ liệu / phân cụm mà tôi đang tưởng tượng: phân cụm theo thời gian


Cốt truyện có vẻ trơn tru (nội suy) với tôi. Đó có lẽ là sai lệch. Và "theo chiều dọc" tôi liên kết với geodata, nhưng rõ ràng bạn đang xem xét một chuỗi thời gian?
Có QUIT - Anony-Mousse

1
Đừng quá chú ý đến cốt truyện, nó chỉ là một ví dụ. Những gì tôi muốn đạt được là việc xác định các tập thời gian riêng biệt dựa trên các biến số thay đổi theo thời gian. Theo chiều dọc, trong tâm trí của tôi, giống như dữ liệu tạm thời, xem ví dụ en.wikipedia.org/wiki/Longitudinal_study
histelheim

Bởi vì trong clustering, bạn sẽ thấy cụm từ này chủ yếu như trong en.wikipedia.org/wiki/Longitude - từ câu hỏi của bạn nó không được rõ ràng những gì bạn muốn cụm. Bạn có thể phân cụm, ví dụ như các khoảng thời gian hành xử tương tự giữa các "chủ thể" hoặc các chủ đề cho thấy cùng một tiến trình theo thời gian.
Có QUIT - Anony-Mousse

1
Tôi đã thay đổi 'theo chiều dọc' thành 'tạm thời' để tránh nhầm lẫn. Sử dụng các từ của bạn, tôi nghĩ rằng tôi muốn phân cụm thời gian . Tuy nhiên, điều quan trọng đối với tôi là các cụm là những tập phim riêng biệt, liên tục theo thời gian.
histelheim

Tìm kiếm với từ khóa "phân đoạn chuỗi thời gian" hoặc "mô hình chuyển đổi chế độ" có thể giúp bạn.
Yves

Câu trả lời:


6

Từ nghiên cứu của riêng tôi, có vẻ như Mô hình Govian Hidden Markov có thể phù hợp: http://scikit-learn.org/ sóng / auto_examples / plot_hmm_stock_analysis.html # example-plot-hmm-stock-analysis-py

Nó chắc chắn dường như tìm thấy các tập hoạt động riêng biệt.

Mô hình Markov ẩn Gaussian


Bạn không cần phải biết có bao nhiêu trạng thái ẩn trước thời hạn? Có cách nào để khắc phục điều đó không?
JCWong

@JCWong Tôi nghĩ rằng bạn có thể sử dụng một biến thể Bayes không định lượng (mô hình Markov ẩn vô hạn) để tránh điều đó.
jtobin

Sau một thời gian dài: HMM dường như không phân cụm các sự kiện / nhóm theo thời gian (trông giống như trong hình). Nhưng, những gì đã được hỏi là làm thế nào để có được các cụm thời gian? Tôi chỉ tò mò, vì tôi đang làm việc trên các công cụ phân cụm thời gian.
RussellB

3

Vấn đề của bạn nghe có vẻ giống như tôi đang xem và câu hỏi này , tương tự, nhưng ít được giải thích.

Câu trả lời của họ liên kết đến một bản tóm tắt tốt về Phát hiện thay đổi. Đối với các giải pháp có thể, một tìm kiếm nhanh trên google đã tìm thấy gói Phân tích điểm thay đổi trên mã Google. R cũng có một số công cụ để làm điều này. Các bcpgói là khá mạnh mẽ và thực sự dễ sử dụng. Nếu bạn muốn thực hiện nhanh chóng khi có dữ liệu, bài báo "Phát hiện thay đổi trực tuyến và ước tính tham số với ứng dụng cho dữ liệu gen" mô tả một cách tiếp cận thực sự tinh vi, mặc dù được cảnh báo rằng nó hơi khó khăn. Cũng có strucchangegói, nhưng điều này đã làm việc ít tốt hơn đối với tôi.


1

Wavelets có thể giúp bạn xác định các thời kỳ với các thuộc tính khác nhau. Tuy nhiên tôi không chắc có phương pháp nào có thể chia thời gian của bạn thành các khoảng thời gian riêng biệt cho bạn không. Và có vẻ như có rất nhiều lý thuyết để lội qua, mà tôi chỉ mới bắt đầu. Tôi mong được đọc những gợi ý khác ..

Một chương sách giới thiệu miễn phí về wavelet.

Một gói R để thử nghiệm ý nghĩa với wavelet.


1

Bạn đã xem trang này: Trang phân loại / phân cụm chuỗi thời gian UCR chưa?

Ở đó bạn có thể tìm thấy cả hai: bộ dữ liệu để thực hành và công bố kết quả - để so sánh hiệu suất thực hiện của chính bạn (có một liên kết về hiệu suất đã biết của các kỹ thuật học máy nổi tiếng nữa). Ngoài ra, trang này đang trích dẫn một khối lượng lớn các bài báo mà bạn có thể tiếp tục nghiên cứu để có cách tiếp cận tốt nhất phù hợp với vấn đề, dữ liệu hoặc nhu cầu của bạn.

Ngoài ra, có một cách khác để làm điều đó (có khả năng) bằng cách áp dụng trình tự http: // sequitur.info. Nếu bạn có thể bình thường hóa / xấp xỉ dữ liệu của mình tốt, nó sẽ cung cấp cho ngữ pháp của bạn những "khoảng thời gian khác biệt với mức độ hoạt động tương tự" xem bài báo này và tìm kiếm một dữ liệu khác, vì tôi không thể thêm liên kết ...


3
Bạn có thể cung cấp một bản tóm tắt ngắn gọn về các tài nguyên có sẵn trên trang này?
chl

chắc chắn tôi có thể. bắt đầu từ đó tôi đã mã hóa trình phân loại
seninp

1

Tôi nghĩ rằng bạn có thể sử dụng Gói thời gian động để tìm kiếm sự tương đồng giữa các chuỗi thời gian khác nhau. Để làm điều đó, bạn có thể cần phải phân tách wavelet của mình thành các bộ sưu tập, như một mảng. Nhưng độ chi tiết sẽ là một vấn đề và nếu bạn có một chuỗi thời gian lớn, chi phí tính toán sẽ khá lớn để tính khoảng cách DTM cho mỗi cặp trong số chúng. Vì vậy, bạn có thể cần một số sự chọn lọc trước để làm việc như nhãn.

Kiểm tra này . Tôi cũng đang làm một số nhiệm vụ như của bạn và trang này đã giúp tôi một số.

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.