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?
sumber
Jawaban:
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 janganx xsaya ysaya xt yt
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.
sumber
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!
sumber
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.
sumber