Mendukung regresi vektor untuk prediksi deret waktu multivarian


22

Adakah yang mencoba prediksi deret waktu menggunakan regresi vektor dukungan?

Saya memahami mesin dukungan vektor dan sebagian memahami dukungan vektor regresi, tetapi saya tidak mengerti bagaimana mereka dapat digunakan untuk memodelkan deret waktu, terutama deret waktu multivarian.

Saya sudah mencoba membaca beberapa makalah, tetapi tingkatannya terlalu tinggi. Adakah yang bisa menjelaskan dalam istilah awam bagaimana mereka akan bekerja, terutama dalam kaitannya dengan rangkaian waktu multivariat?

EDIT: Untuk sedikit menguraikan, izinkan saya mencoba menjelaskan dengan contoh harga saham.

Katakanlah kita memiliki harga saham selama N hari. Kemudian, untuk setiap hari kita dapat membuat vektor fitur, yang, dalam kasus sederhana, bisa menjadi harga hari sebelumnya dan harga hari ini. Respons untuk setiap vektor fitur adalah harga hari berikutnya. Jadi, mengingat harga kemarin dan harga hari ini tujuannya adalah untuk memprediksi harga hari berikutnya. Yang tidak saya mengerti adalah, katakanlah kita memiliki data pelatihan enam bulan, bagaimana Anda akan memberikan penekanan yang lebih besar pada vektor fitur yang lebih baru?


Bisakah Anda memposting makalah yang Anda maksud?
Ram Ahluwalia

1
Memprediksi Seri Waktu dengan Mesin Regresi Vektor Dukungan Lokal, Rodrigo Fernandez, svms.org/regress/Fern.pdf Mendukung Vektor Regresi untuk Peramalan Seri Waktu Keuangan, Wei Hao dan Songnian Yu, springerlink.com/index/946802600u4552m8.pdf
raconteur

Jawaban:


18

Dalam konteks dukungan vektor regresi, fakta bahwa data Anda adalah serangkaian waktu terutama relevan dari sudut pandang metodologis - misalnya, Anda tidak dapat melakukan validasi silang k-fold, dan Anda perlu mengambil tindakan pencegahan ketika menjalankan backtests / simulasi.

Pada dasarnya, mendukung regresi vektor adalah teknik regresi diskriminatif seperti teknik regresi diskriminatif lainnya. Anda memberinya satu set vektor input dan respons terkait, dan itu cocok dengan model untuk mencoba dan memprediksi respons yang diberikan vektor input baru. Kernel SVR, di sisi lain, menerapkan salah satu dari banyak transformasi pada kumpulan data Anda sebelum langkah pembelajaran. Ini memungkinkan untuk mengambil tren nonlinear dalam kumpulan data, tidak seperti misalnya regresi linier. Kernel yang baik untuk memulai mungkin adalah Gaussian RBF - ini akan memiliki hyperparameter yang dapat Anda sesuaikan, jadi cobalah beberapa nilai. Dan kemudian ketika Anda merasakan apa yang terjadi, Anda dapat mencoba kernel lainnya.

Dengan deret waktu, langkah impor menentukan "vektor fitur" nantinya; setiap disebut "fitur" dan dapat dihitung dari data sekarang atau yang lalu, dan setiap , jawabannya, akan menjadi perubahan di masa mendatang selama beberapa periode waktu dari apa pun yang Anda coba prediksi. Ambil stok misalnya. Anda memiliki harga seiring waktu. Mungkin fitur Anda adalah a.) Spread 200MA-30MA dan b.) Volatilitas 20 hari, jadi Anda menghitung setiap pada setiap titik waktu, bersama dengan , (katakanlah) setelah pengembalian minggu pada stok itu . Dengan demikian, SVR Anda mempelajari cara memprediksi pengembalian minggu berikutnya berdasarkan pada spread MA saat ini dan vol 20 hari. (Strategi ini tidak akan berhasil, jadi janganxxsayaysayaxtyt

Jika makalah yang Anda baca terlalu sulit, Anda mungkin tidak ingin mencoba mengimplementasikan SVM sendiri, karena bisa rumit. IIRC ada paket "kernlab" untuk R yang memiliki implementasi Kernel SVM dengan sejumlah kernel yang disertakan, sehingga akan memberikan cara cepat untuk bangun dan berjalan.


@Jason, terima kasih atas tanggapannya. Saya bingung bagaimana cara membuat data yang lebih lama menjadi kurang penting selama pelatihan, yaitu bagaimana memberi yang penting pada contoh terakhir 100 contoh, daripada 10.000 contoh terakhir. Juga, saya memiliki pengalaman bekerja dengan SVM di Python, jadi saya ingin menggunakannya.
raconteur

Anda tidak dapat benar-benar menggunakan semua data masa lalu sebagai vektor fitur Anda; Anda harus mengubahnya entah bagaimana menjadi fitur yang bermakna. Sebagai contoh, pertimbangkan rata-rata 20 nilai terakhir dari seri waktu, atau nilai saat ini dari seri dibagi dengan rata-rata bergerak. Ini adalah fitur yang menunjukkan dalam satu nomor sederhana karakteristik impor dari kumpulan data. Datang dengan (katakanlah) 10 atau lebih fitur yang Anda pikir akan menjadi prediktif mungkin. Jadi, untuk membuat data yang lebih lama kurang penting, Anda akan membuatnya kurang penting ketika mendefinisikan fitur Anda (yaitu menggunakan rata-rata bergerak yang lebih pendek).
William

@Jason, izinkan saya mencoba menjelaskan dengan contoh harga saham. Katakanlah kita memiliki harga saham selama N hari. Kemudian, untuk setiap hari kita dapat membuat vektor fitur, yang, dalam kasus sederhana, bisa menjadi harga hari sebelumnya dan harga hari ini. Respons untuk setiap vektor fitur adalah harga hari berikutnya. Jadi, mengingat harga kemarin dan harga hari ini tujuannya adalah untuk memprediksi harga hari berikutnya. Yang tidak saya mengerti adalah, katakanlah kita memiliki data pelatihan enam bulan, bagaimana Anda akan memberikan penekanan yang lebih besar pada vektor fitur yang lebih baru?
raconteur

2
Oh, aku mengerti maksudmu sekarang. Jawaban singkatnya adalah, Anda tidak bisa, setidaknya tidak tanpa merekayasa ulang SVM untuk memahami gagasan kebaruan. SVM didefinisikan dalam hal pasangan xy, bukan urutan pasangan xy, sehingga fungsi objektif yang diminimalinya adalah fungsi pasangan kata. OTOH, Anda bisa menjalankan beberapa SVM terpisah, satu dengan bulan lalu, satu dengan tahun lalu, dan satu dengan dua tahun terakhir - dan kemudian melakukan rata-rata tertimbang dari respons yang Anda dapatkan kembali berdasarkan preferensi pribadi Anda untuk yang baru vs data lama (mis. 0,7 * bulan lalu + 0,2 * tahun lalu + 0,1 * 2 tahun terakhir).
William

@ William .. apakah Anda punya rekomendasi tentang algoritma pembelajaran mesin mana yang terbaik untuk prediksi deret waktu (masalah yang sama yang ditanyakan pembalap) selain SVM? apakah jawabannya akan berbeda ketika diterapkan di domain yang berbeda? mis. harga saham vs. perkiraan rantai pasokan (perkiraan permintaan produk yang kami jual) ..
Lam

1

Jawaban pribadi saya untuk pertanyaan yang diajukan adalah "ya". Anda dapat melihatnya sebagai pro atau kontra bahwa ada sejumlah pilihan fitur yang tak terbatas untuk menggambarkan masa lalu. Cobalah untuk memilih fitur yang sesuai dengan bagaimana Anda dapat dengan jelas menggambarkan kepada seseorang apa yang baru saja dilakukan pasar [mis. ada di 1.4 "tidak memberitahu Anda jika tidak terkait dengan beberapa nomor lain]. Sedangkan untuk target SVM, yang paling sederhana adalah selisih harga dan rasio harga selama dua hari berturut-turut. Karena ini berhubungan langsung dengan nasib perdagangan hipotetis, mereka tampaknya pilihan yang baik.

Saya harus sangat tidak setuju dengan pernyataan pertama oleh Jason: Anda dapat melakukan validasi silang k-fold dalam situasi seperti yang dijelaskan oleh raconteur dan itu berguna (dengan syarat saya akan jelaskan). Alasannya secara statistik valid adalah bahwa instance target dalam kasus ini tidak memiliki hubungan intrinsik: mereka adalah perbedaan atau rasio yang terpisah. Jika Anda memilih untuk menggunakan data pada resolusi yang lebih tinggi daripada skala target, akan ada alasan untuk khawatir bahwa contoh yang berkorelasi mungkin muncul di set pelatihan dan set validasi, yang akan membahayakan validasi silang (sebaliknya, ketika menerapkan SVM Anda tidak akan memiliki instance yang targetnya tumpang tindih dengan yang Anda minati).

Hal yang mengurangi efektivitas validasi silang adalah jika perilaku pasar berubah dari waktu ke waktu. Ada dua cara yang mungkin untuk menangani ini. Yang pertama adalah menggabungkan waktu sebagai fitur (saya tidak menganggap ini sangat berguna, mungkin karena nilai-nilai fitur ini di masa depan semuanya baru). Alternatif yang termotivasi dengan baik adalah dengan menggunakan validasi walk-forward (yang berarti menguji metodologi Anda pada jendela geser waktu, dan mengujinya pada periode tepat setelah jendela ini. Jika perilaku berubah dari waktu ke waktu, perkataan tersebut dikaitkan dengan Niels Bohr " Prediksi sangat sulit, terutama tentang masa depan "sangat tepat. Ada beberapa bukti dalam literatur bahwa perilaku pasar keuangan berubah dari waktu ke waktu, umumnya menjadi lebih efisien,

Semoga berhasil!


Selamat datang di situs kami!
kjetil b halvorsen

0

Ada contoh di Quantum Financier untuk menggunakan SVM untuk memperkirakan seri keuangan. Ini dapat dengan mudah dikonversi dari sistem klasifikasi (Panjang / Pendek) ke sistem regresi.


1
DEAR GOD, jangan ada yang menggunakan strategi itu! Begitulah cara pemula merokok oleh Wall St :( Trik tertua dalam buku ini adalah perkuatan model statistik menggunakan beberapa analitik teknis dasar seperti RSI sehingga para pemula berpikir mereka telah mencapai emas.
William

1
@Jason dari posting asli "Saya juga ingin menjelaskan bahwa saya tidak berpikir bahwa ini adalah sistem yang baik." Namun, ini adalah contoh yang baik tentang bagaimana menyesuaikan mesin vektor dukungan ke rangkaian waktu.
Zach
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.