Apakah ada algoritma yang didokumentasikan untuk memisahkan bagian-bagian dari dataset yang diberikan ke dalam kurva berbeda yang paling sesuai?
Sebagai contoh, kebanyakan manusia yang melihat bagan data ini akan dengan mudah membaginya menjadi 3 bagian: segmen sinusoidal, segmen linier, dan segmen eksponensial terbalik. Sebenarnya, saya membuat ini dengan gelombang sinus, garis dan rumus eksponensial sederhana.
Apakah ada algoritma yang ada untuk menemukan bagian-bagian seperti itu, yang kemudian dapat secara terpisah dipasang ke berbagai kurva / garis untuk membuat semacam rangkaian campuran kumpulan data yang paling cocok?
Perhatikan bahwa meskipun contoh memiliki ujung segmen yang cukup banyak berbaris, ini tidak selalu menjadi kasus; mungkin juga ada sentakan tiba-tiba pada nilai pada cutoff segmen. Mungkin kasus-kasus itu akan lebih mudah dideteksi.
Pembaruan: Ini adalah gambar dari sedikit data dunia nyata:
Pembaruan 2: berikut adalah kumpulan data dunia nyata yang luar biasa kecil (hanya 509 poin data):
4,53,53,53,53,58,56,52,49,52,56,51,44,39,39,39,37,33,27,21,18,12,19,30,45,66,92,118,135,148,153,160,168,174,181,187,191,190,191,192,194,194,194,193,193,201,200,199,199,199,197,193,190,187,176,162,157,154,144,126,110,87,74,57,46,44,51,60,65,66,90,106,99,87,84,85,83,91,95,99,101,102,102,103,105,110,107,108,135,171,171,141,120,78,42,44,52,54,103,128,82,103,46,27,73,123,125,77,24,30,27,36,42,49,32,55,20,16,21,31,78,140,116,99,58,139,70,22,44,7,48,32,18,16,25,16,17,35,29,11,13,8,8,18,14,0,10,18,2,1,4,0,61,87,91,2,0,2,9,40,21,2,14,5,9,49,116,100,114,115,62,41,119,191,190,164,156,109,37,15,0,5,1,0,0,2,4,2,0,48,129,168,112,98,95,119,125,191,241,209,229,230,231,246,249,240,99,32,0,0,2,13,28,39,15,15,19,31,47,61,92,91,99,108,114,118,121,125,129,129,125,125,131,135,138,142,147,141,149,153,152,153,159,161,158,158,162,167,171,173,174,176,178,184,190,190,185,190,200,199,189,196,197,197,196,199,200,195,187,191,192,190,186,184,184,179,173,171,170,164,156,155,156,151,141,141,139,143,143,140,146,145,130,126,127,127,125,122,122,127,131,134,140,150,160,166,175,192,208,243,251,255,255,255,249,221,190,181,181,181,181,179,173,165,159,153,162,169,165,154,144,142,145,136,134,131,130,128,124,119,115,103,78,54,40,25,8,2,7,12,25,13,22,15,33,34,57,71,48,16,1,2,0,2,21,112,174,191,190,152,153,161,159,153,71,16,28,3,4,0,14,26,30,26,15,12,19,21,18,53,89,125,139,140,142,141,135,136,140,159,170,173,176,184,180,170,167,168,170,167,161,163,170,164,161,160,163,163,160,160,163,169,166,161,156,155,156,158,160,150,149,149,151,154,156,156,156,151,149,150,153,154,151,146,144,149,150,151,152,151,150,148,147,144,141,137,133,130,128,128,128,136,143,159,180,196,205,212,218,222,225,227,227,225,223,222,222,221,220,220,220,220,221,222,223,221,223,225,226,227,228,232,235,234,236,238,240,241,240,239,237,238,240,240,237,236,239,238,235
Ini dia, memetakan, dengan appoximate posisi beberapa dikenal elemen dunia nyata ujung-ujungnya ditandai dengan garis putus-putus, sebuah kemewahan yang kita tidak akan biasanya memiliki:
Satu kemewahan yang kita miliki, bagaimanapun, adalah ke belakang: data dalam kasus saya bukan deret waktu, tetapi agak berhubungan secara spasial; masuk akal untuk menganalisis seluruh dataset (biasanya 5.000 - 15.000 titik data) sekaligus, bukan secara berkelanjutan.
sumber
Jawaban:
Interpretasi saya terhadap pertanyaan adalah bahwa OP mencari metodologi yang sesuai dengan bentuk contoh yang diberikan, bukan residu HAC. Selain itu, rutinitas otomatis yang tidak memerlukan intervensi manusia atau analis yang signifikan juga diinginkan. Box-Jenkins mungkin tidak sesuai, meskipun mereka ditekankan dalam utas ini, karena mereka memang membutuhkan keterlibatan analis yang substansial.
Modul R ada untuk jenis yang tidak berbasis momen, pencocokan pola. Clustering distribusi permutasi adalah teknik pencocokan pola yang dikembangkan oleh ilmuwan Max Planck Institute yang memenuhi kriteria yang telah Anda uraikan. Aplikasinya adalah untuk data deret waktu, tetapi tidak terbatas pada itu. Berikut kutipan untuk modul R yang telah dikembangkan:
pdc: Paket R untuk Clustering Time Series Berbasis Kompleksitas oleh Andreas Brandmaier
Selain PDC, ada pembelajaran mesin, rutin iSax dikembangkan oleh Eamon Keogh di UC Irvine yang juga layak untuk dibandingkan.
Akhirnya, ada makalah ini Penghancuran Data: Mengungkap Urutan Mengintai dalam Dataoleh Chattopadhyay dan Lipson. Di luar judul yang cerdik, ada tujuan serius di tempat kerja. Berikut abstraknya: "Dari pengenalan suara otomatis hingga menemukan bintang yang tidak biasa, yang mendasari hampir semua tugas penemuan otomatis adalah kemampuan untuk membandingkan dan membedakan aliran data satu sama lain, untuk mengidentifikasi koneksi dan menemukan outlier. Meskipun terdapat prevalensi data, metode otomatis tidak mengikuti kecepatan. Hambatan utama adalah bahwa sebagian besar algoritma perbandingan data saat ini bergantung pada seorang ahli manusia untuk menentukan 'fitur' data yang relevan untuk perbandingan. Di sini, kami mengusulkan prinsip baru untuk memperkirakan kesamaan antara sumber-sumber sewenang-wenang. aliran data, tidak menggunakan pengetahuan domain atau pembelajaran. Kami mendemonstrasikan penerapan prinsip ini untuk analisis data dari sejumlah masalah yang menantang di dunia nyata, termasuk disambiguasi pola elektro-ensefalograf yang berkaitan dengan kejang epilepsi, deteksi aktivitas jantung anomali dari rekaman suara jantung dan klasifikasi benda-benda astronomi dari fotometri mentah. Dalam semua kasus ini dan tanpa akses ke pengetahuan domain apa pun, kami menunjukkan kinerja yang setara dengan akurasi yang dicapai oleh algoritma dan heuristik khusus yang dirancang oleh para pakar domain. Kami menyarankan bahwa prinsip-prinsip penghancuran data dapat membuka pintu untuk memahami pengamatan yang semakin kompleks, terutama ketika para ahli tidak tahu apa yang harus dicari. " Dalam semua kasus ini dan tanpa akses ke pengetahuan domain apa pun, kami menunjukkan kinerja yang setara dengan akurasi yang dicapai oleh algoritma dan heuristik khusus yang dirancang oleh para pakar domain. Kami menyarankan bahwa prinsip-prinsip penghancuran data dapat membuka pintu untuk memahami pengamatan yang semakin kompleks, terutama ketika para ahli tidak tahu apa yang harus dicari. " Dalam semua kasus ini dan tanpa akses ke pengetahuan domain apa pun, kami menunjukkan kinerja yang setara dengan akurasi yang dicapai oleh algoritma dan heuristik khusus yang dirancang oleh para pakar domain. Kami menyarankan bahwa prinsip-prinsip penghancuran data dapat membuka pintu untuk memahami pengamatan yang semakin kompleks, terutama ketika para ahli tidak tahu apa yang harus dicari. "
Pendekatan ini jauh melampaui fit lengkung. Perlu dicoba.
sumber
Mendeteksi titik-titik perubahan dalam suatu rangkaian waktu membutuhkan pembuatan model ARIMA global yang kuat (tentu saja cacat oleh perubahan model dan perubahan parameter dari waktu ke waktu dalam kasus Anda) dan kemudian mengidentifikasi titik perubahan paling signifikan dalam parameter-parameter model itu. Menggunakan nilai 509 Anda, titik perubahan paling signifikan adalah sekitar periode 353. Saya menggunakan beberapa algoritma kepemilikan yang tersedia di AUTOBOX (yang telah saya bantu kembangkan) yang mungkin bisa dilisensikan untuk aplikasi khusus Anda. Ide dasarnya adalah untuk memisahkan data menjadi dua bagian dan setelah menemukan titik perubahan yang paling penting, analisis kembali masing-masing dari dua rentang waktu secara terpisah (1-352; 353-509) untuk menentukan titik perubahan lebih lanjut dalam masing-masing dari dua set. Ini diulangi hingga Anda memiliki k himpunan bagian. Saya telah melampirkan langkah pertama menggunakan pendekatan ini.
sumber
Saya pikir judul utasnya menyesatkan: Anda tidak mencari untuk membandingkan fungsi kerapatan tetapi sebenarnya Anda mencari penahan struktural dalam rangkaian waktu. Namun, Anda tidak menentukan apakah jeda struktural ini seharusnya ditemukan di jendela waktu bergulir atau di belakang dengan melihat riwayat total rangkaian waktu. Dalam hal ini pertanyaan Anda sebenarnya merupakan duplikat dari ini: Metode apa untuk mendeteksi jeda struktural pada rangkaian waktu?
Seperti yang disebutkan oleh Rob Hyndman dalam tautan ini, R menawarkan paket strucchange untuk tujuan ini. Saya bermain-main dengan data Anda tetapi saya harus mengatakan bahwa hasilnya mengecewakan [apakah titik data pertama benar-benar 4 atau seharusnya 54?]:
Saya bukan pengguna biasa dari paket ini. Seperti yang Anda lihat, itu tergantung pada model yang Anda muat pada data. Anda dapat bereksperimen dengan
yang memberi Anda model ARIMA pas terbaik.
sumber