Cara melatih model untuk memprediksi acara 30 menit sebelumnya, dari jadwal waktu multi-dimensi

9

Para ahli di bidang saya mampu memprediksi kemungkinan kejadian (binary spike yellow) 30 menit sebelum itu terjadi . Frekuensi di sini adalah 1 detik, tampilan ini mewakili beberapa jam nilai data, saya telah dilingkari hitam di mana pola "jahat" seharusnya . Interaksi antara dimensi ada, oleh karena itu dimensi tidak dapat dipelajari secara individual (atau bisakah mereka?)

masukkan deskripsi gambar di sini

Saya mencoba membangun model ML yang diawasi menggunakan Scikit Learn yang mempelajari ritme normal, dan mendeteksi kapan gejalanya mengarah pada lonjakan . Saya bingung arah mana yang harus diambil. Saya telah mencoba deteksi Anomali, tetapi hanya berfungsi untuk deteksi di tempat, bukan sebelumnya.

Bagaimana saya bisa mendeteksi pola "jahat" sebelum peristiwa itu (menganggapnya sebagai variabel target)?

Saya menyambut saran apa pun yang algoritma atau pipeline pemrosesan data dapat membantu, terima kasih :)

William D
sumber
Apakah ini gelombang otak?
JahKnows

Jawaban:

9

Ini masalah yang menyenangkan. Ini adalah deret waktu dan dari deret waktu ini Anda ingin mengidentifikasi pemicu peristiwa tertentu. Jadi itu adalah masalah klasifikasi biner. Berdasarkan informasi dari jendela yang ditentukan, apakah lonjakan akan terjadi? Ya atau tidak.

Langkah pertama adalah mengatur database Anda. Apa yang Anda akan miliki adalah satu set contoh (yang dapat memiliki beberapa tumpang tindih tetapi untuk menghindari bias yang terbaik bagi mereka untuk ditarik secara independen) dan kemudian untuk setiap contoh manusia perlu memberi label jika ada lonjakan atau jika tidak ada paku.

Maka Anda perlu mengidentifikasi jendela waktu yang ingin Anda gunakan untuk analisis deret waktu Anda. Anda telah melakukan ini dan memutuskan 30 menit adalah awal yang baik.

Sekarang, Anda memiliki 6 bentuk gelombang dalam jendela 30 menit dari mana Anda dapat mengekstrak data untuk mendapatkan informasi tentang klasifikasi Anda. Anda dapat menggunakan sampel data mentah sebagai fitur Anda, tetapi ini CARA TERLALU banyak fitur dan akan menyebabkan hasil yang buruk. Dengan demikian Anda memerlukan beberapa ekstraksi fitur , pengurangan dimensi , teknik.

Ada sejuta cara Anda dapat mengekstrak data dari bentuk gelombang ini. Pertama, tanyakan pada diri Anda, sebagai manusia apa saja tanda-tanda yang harus dimiliki oleh bentuk gelombang lain ini yang berarti lonjakan akan muncul. Misalnya, dalam data seismik, jika Anda melihat agitasi dalam bentuk gelombang dari kota tetangga maka Anda akan segera melihat agitasi di kota Anda.

Secara umum, saya suka mengekstrak semua statistik dasar dari bentuk gelombang saya. Dapatkan mean, standar deviasi, indeks fluktuasi, dll. Dapatkan apa pun yang menurut Anda dapat membantu. Periksa bagaimana statistik ini berkorelasi dengan label Anda. Semakin banyak korelasi semakin baik. Lalu ada beberapa teknik yang sangat bagus untuk mengekstraksi informasi waktu dan frekuensi dari seri waktu Anda. Lihatlah dekomposisi mode amplop dan dekomposisi mode empiris . Saya telah menggunakan dekomposisi mode empiris dengan sukses pada beberapa data deret waktu dan memperoleh hasil yang jauh lebih baik dari yang saya harapkan.

Sekarang meskipun Anda memiliki ruang fitur yang diperkecil, Anda dapat melakukan lebih baik! Anda dapat menerapkan beberapa teknik reduksi dimensi seperti PCA atau LDA untuk mendapatkan ruang dimensi yang lebih rendah yang mungkin lebih mewakili data Anda. Ini mungkin membantu, tanpa jaminan.

Sekarang Anda memiliki dataset kecil dengan instance yang merupakan ramuan Frankenstein yang mewakili 6 bentuk gelombang Anda di jendela 30 menit. Sekarang Anda siap untuk memilih classifier Anda. Anda akan menginginkan algoritma klasifikasi biner, untungnya itu yang paling umum. Ada banyak pilihan. Bagaimana memilih?


Berapa banyak contoh yang Anda miliki?

#instances>100#features?

Maka Anda siap untuk menggunakan teknik pembelajaran yang mendalam seperti jaringan saraf , 1D jaringan saraf convolutional , autoencodders ditumpuk , dll ...

Kurang dari itu !!!! Anda harus tetap menggunakan metode yang dangkal. Lihat mesin vektor dukungan kernel , hutan acak , tetangga terdekat k dll.


Kesalahpahaman umum: Metode dangkal CAN dan WILL akan melakukan lebih baik daripada teknik pembelajaran yang mendalam jika Anda telah memilih fitur Anda dengan benar. ekstraksi fitur adalah aspek terpenting dari arsitektur pembelajaran mesin.


Saya ingin menggunakan deteksi anomali!

Ini juga akan berhasil dan ada beberapa teknik bagus yang akan melakukan ini. Namun, sifat deteksi anomali adalah mempelajari distribusi kasus nominal. Jadi, Anda akan memberi makan algoritma Anda semua contoh dalam dataset Anda yang tidak menghasilkan lonjakan. Maka dari ini algoritma Anda akan dapat mengidentifikasi ketika sebuah instance novel berbeda secara signifikan dari distribusi nominal ini dan itu akan menandainya sebagai anomali. Ini berarti lonjakan akan terjadi dalam konteks Anda.

Periksa:

Mempelajari Set Volume Minimum http://www.stat.rice.edu/~cscott/pubs/minvol06jmlr.pdf

Deteksi Anomali dengan fungsi Skor berdasarkan Grafik Tetangga Terdekat https://arxiv.org/abs/0910.5461

Statistik baru dalam estimasi nilai-P untuk deteksi anomali http://ieeexplore.ieee.org/document/6319713/

Anda juga dapat menggunakan teknik pendeteksian anomali yang lebih sederhana seperti tes rasio kemungkinan umum. Tapi, ini semacam sekolah kuno.

JahKnows
sumber
Panduan Luar Biasa, terima kasih atas level detail Anda. Rentang waktu yang ditampilkan di sini sudah menjadi pilihan fitur asli, dan dibuat 'visualisable' untuk mata manusia menggunakan rolling berarti misalnya. Umpan data "mentah" terdiri dari sekitar 50 fitur, dan sekitar satu juta contoh. Saya kira itu menuntun saya ke teknik pembelajaran yang mendalam! Saya menyelam ke ekstraksi fitur, dan pasti akan memposting hasil perjalanan saya di sini :)
William D
Ya itu akan bagus buat kami tetap diposting. Jika Anda memiliki 50 fitur dan 1 juta instance. Pergi untuk jaringan saraf pertama, yang paling mudah untuk kode karena begitu banyak paket sudah ada (mis: Keras di python). Coba juga PCA dan LDA untuk mengubah ruang fitur Anda menjadi lebih representatif.
JahKnows
0

Anda perlu melakukan ekstraksi fitur atau rekayasa fitur untuk membuat variabel dalam data pelatihan Anda yang "menangkap" pola-pola yang Anda kemas dan kemudian memiliki variabel target yang mengatakan "kedengkian ditemukan" atau "kedengkian ditemukan tidak ditemukan"

Ambil contoh yang sangat sederhana: memprediksi apakah akan turun hujan. Anda bisa menghasilkan prediksi hujan yang cukup baik dalam 30 menit berikutnya yang diperiksa setiap 30 menit jika 1. tiba-tiba mendung dan 2. tekanan barometrik turun.

CalZ
sumber