Teknik pengelompokan yang sesuai untuk data temporal?

13

Saya memiliki data sementara frekuensi aktivitas. Saya ingin mengidentifikasi cluster dalam data yang menunjukkan periode waktu yang berbeda dengan tingkat aktivitas yang sama. Idealnya saya ingin mengidentifikasi kluster tanpa menentukan jumlah kluster apriori.

Apa teknik pengelompokan yang tepat? Jika pertanyaan saya tidak mengandung informasi yang cukup untuk dijawab, informasi apa yang perlu saya berikan untuk menentukan teknik pengelompokan yang sesuai?

Di bawah ini adalah ilustrasi dari jenis data / pengelompokan yang saya bayangkan: pengelompokan lintas waktu

histelheim
sumber
Plotnya terlihat mulus (diinterpolasi) untuk saya. Itu mungkin menyesatkan. Dan "longitudinal" yang saya asosiasikan dengan geodata, tetapi ternyata Anda sedang melihat rangkaian waktu?
Memiliki QUIT - Anony-Mousse
1
Jangan terlalu memperhatikan plot, itu hanya contoh. Apa yang ingin saya capai adalah identifikasi episode waktu yang berbeda berdasarkan pada variabel yang bervariasi antar waktu. Longitudinal, dalam pikiran saya, adalah sama dengan data yang temporal, lihat misalnya en.wikipedia.org/wiki/Longitudinal_study
histelheim
Karena dalam pengelompokan, Anda akan melihat istilah ini sebagian besar seperti di en.wikipedia.org/wiki/Longitude - dari pertanyaan Anda, tidak jelas apa yang ingin Anda pengelompokan. Anda dapat mengelompokkan misalnya interval waktu yang berperilaku serupa di "subjek", atau subjek yang menunjukkan kemajuan yang sama dari waktu ke waktu.
Memiliki QUIT - Anony-Mousse
1
Saya telah mengubah 'longitudinal' menjadi 'temporal' untuk menghindari kebingungan. Menggunakan kata-kata Anda, saya pikir saya ingin mengelompokkan interval waktu . Namun, penting bagi saya bahwa cluster berbeda, episode berkelanjutan dalam waktu.
histelheim
Pencarian dengan kata kunci "segmentasi seri waktu" atau "model pengalihan rezim" dapat membantu Anda.
Yves

Jawaban:

6

Dari penelitian saya sendiri, sepertinya Model Gaussian Hidden Markov mungkin cocok: http://scikit-learn.org/stable/auto_examples/plot_hmm_stock_analysis.html#contoh-plot-hmm-stock-analysis-py

Tampaknya menemukan episode kegiatan yang berbeda.

Gaussian Hidden Markov Model

histelheim
sumber
Tidakkah Anda harus tahu berapa banyak negara tersembunyi yang ada sebelumnya? Apakah ada cara untuk menyiasatinya?
JCWong
@ JCWong Saya pikir Anda dapat menggunakan varian Bayesian nonparametrik (model Markov tersembunyi yang tak terbatas) untuk menghindarinya.
jtobin
Setelah sekian lama: HMM tampaknya tidak mengelompokkan / mengelompokkan acara sementara (seperti yang terlihat pada gambar). Tapi, yang ditanyakan adalah bagaimana cara mendapatkan klaster temporal? Saya hanya ingin tahu, karena saya mengerjakan hal-hal pengelompokan temporal.
RussellB
3

Masalah Anda terdengar mirip dengan yang saya lihat dan pertanyaan ini , yang serupa, tetapi kurang dijelaskan.

Jawaban mereka menghubungkan ke ringkasan bagus tentang Ubah Deteksi. Untuk solusi yang mungkin, pencarian google cepat ditemukan menemukan paket Analisis Titik Perubahan pada kode Google. R juga memiliki beberapa alat untuk melakukan ini. The bcppaket cukup kuat dan sangat mudah digunakan. Jika Anda ingin melakukannya dengan cepat saat data masuk, makalah "On-line changepoint detection dan estimasi parameter dengan aplikasi ke data genomik" menggambarkan pendekatan yang sangat canggih, meskipun diperingatkan bahwa itu sedikit menantang. Ada juga strucchangepaketnya, tetapi ini kurang berhasil bagi saya.

untuk makan siang
sumber
1

Pernahkah Anda melihat halaman ini: Halaman Klasifikasi / Clustering Seri Waktu UCR ?

Di sana Anda dapat menemukan keduanya: kumpulan data untuk dipraktikkan dan hasil yang dipublikasikan - untuk membandingkan kinerja implementasi Anda sendiri (ada juga tautan tentang kinerja yang dikenal dari teknik pembelajaran mesin yang terkenal). Selain itu, halaman ini mengutip sejumlah besar makalah dari mana Anda bisa melangkah lebih jauh dengan penelitian untuk pendekatan terbaik yang sesuai dengan masalah, data, atau kebutuhan Anda.

Juga, ada cara lain untuk melakukan itu (berpotensi) dengan penerapan sequitur http: // sequitur.info. Jika Anda dapat menormalkan / memperkirakan data Anda dengan baik, itu akan memberi Anda tata bahasa "periode waktu yang berbeda dengan tingkat aktivitas serupa" lihat makalah ini dan cari yang lain, karena saya tidak dapat menambahkan lebih banyak tautan ...

seninp
sumber
3
Bisakah Anda memberikan ringkasan singkat tentang sumber daya yang tersedia di halaman ini?
chl
tentu aku bisa. mulai dari sana saya mengkodekan classifier
seninp
1

Saya pikir Anda dapat menggunakan Dynamic Time Wrapping untuk mencari persamaan antara rangkaian waktu yang berbeda. Untuk melakukan itu, Anda mungkin perlu mengatur wavelet Anda menjadi koleksi, seperti sebuah array. Tetapi granularitas akan menjadi masalah dan jika Anda memiliki banyak deret waktu, biaya perhitungan akan cukup besar untuk menghitung jarak DTM untuk setiap pasangannya. Jadi, Anda mungkin perlu beberapa pemilihan untuk bekerja sebagai label.

Lihat ini . Saya juga mengerjakan beberapa tugas seperti tugas Anda dan halaman ini membantu saya.

Yifan Guo
sumber