Saya telah menggunakan paket caret dalam R untuk membangun model prediksi untuk klasifikasi dan regresi. Caret menyediakan antarmuka terpadu untuk menyetel model hiper-parameter dengan validasi silang atau strapping boot. Misalnya, jika Anda sedang membangun model 'tetangga terdekat' yang sederhana untuk klasifikasi, berapa banyak tetangga yang harus Anda gunakan? 2? 10? 100? Caret membantu Anda menjawab pertanyaan ini dengan mengambil sampel ulang data Anda, mencoba berbagai parameter, dan kemudian menggabungkan hasilnya untuk memutuskan mana yang menghasilkan akurasi prediksi terbaik.
Saya suka pendekatan ini karena ini menyediakan metodologi yang kuat untuk memilih model hiper-parameter, dan setelah Anda memilih hiper-parameter akhir itu memberikan estimasi yang divalidasi silang tentang seberapa 'baik' modelnya, menggunakan akurasi untuk model klasifikasi dan RMSE untuk model regresi.
Sekarang saya memiliki beberapa data deret waktu yang ingin saya bangun model regresi, mungkin menggunakan hutan acak. Apa teknik yang baik untuk menilai akurasi prediksi model saya, mengingat sifat data? Jika hutan acak tidak benar-benar berlaku untuk data deret waktu, apa cara terbaik untuk membangun model ensembel yang akurat untuk analisis deret waktu?
Jawaban:
Teknik validasi silang k-times "klasik" didasarkan pada kenyataan bahwa masing-masing sampel dalam set data yang tersedia digunakan (k-1) -kali melatih model dan 1 kali untuk mengujinya. Karena sangat penting untuk memvalidasi model deret waktu pada data "masa depan", pendekatan ini tidak akan berkontribusi pada stabilitas model.
Salah satu properti penting dari banyak deret waktu (paling?) Adalah korelasi antara nilai-nilai yang berdekatan. Seperti yang ditunjukkan oleh IrishStat, jika Anda menggunakan bacaan sebelumnya sebagai variabel independen dari calon model Anda, korelasi ini (atau kurangnya independensi) memainkan peran penting dan merupakan alasan lain mengapa validasi silang k-times bukanlah ide yang baik.
Salah satu cara untuk mengatasi masalah ini adalah dengan "mengecualikan" data dan menghiasnya. Jika proses hubungan dekorasi berhasil, maka menggunakan validasi silang pada deret waktu menjadi kurang bermasalah. Namun, itu tidak akan memecahkan masalah memvalidasi model menggunakan data masa depan
Klarifikasi
dengan memvalidasi model pada data masa depan yang saya maksud membangun model, menunggu data baru yang tidak tersedia selama konstruksi model, pengujian, fine-tuning dll dan memvalidasinya pada data baru .
dengan oversampling data yang saya maksud mengumpulkan data deret waktu pada frekuensi jauh lebih tinggi dari yang sebenarnya diperlukan. Misalnya: sampel harga saham setiap 5 detik, ketika Anda benar-benar tertarik dengan perubahan setiap jam. Di sini, ketika saya mengatakan "pengambilan sampel", saya tidak bermaksud "menginterpolasi", "memperkirakan" dll. Jika data tidak dapat diukur pada frekuensi yang lebih tinggi, teknik ini tidak ada artinya
sumber
http://robjhyndman.com/researchtips/crossvalidation/ berisi tip cepat untuk validasi silang seri waktu. Mengenai menggunakan hutan acak untuk data deret waktu .... tidak yakin meskipun sepertinya pilihan yang aneh mengingat bahwa model ini dilengkapi dengan menggunakan sampel bootstrap. Ada beberapa metode deret waktu klasik (misalnya ARIMA) yang dapat digunakan, seperti halnya teknik ML seperti Neural Nets (contoh, contoh pdf ). Mungkin beberapa pakar time series dapat mengomentari seberapa baik teknik ML bekerja dibandingkan dengan algoritma spesifik time series.
sumber
Berikut adalah beberapa contoh kode untuk model deret waktu validasi silang. Saya memperluas kode ini di blog saya , menggabungkan paket foreach untuk mempercepat dan memungkinkan untuk istilah xreg yang mungkin dalam validasi silang.
Berikut salinan kode dari blog Rob Hyndman:
sumber
Jika Anda memiliki data deret waktu maka Anda mungkin memiliki "masalah derajat kebebasan". Sebagai contoh jika Anda memiliki 4 pengamatan yang diambil pada interval per jam dan kemudian memutuskan untuk menggunakan 241 pengamatan pada interval 1 menit, Anda memiliki 241 pengamatan tetapi mereka tidak harus independen. Saat Anda mengirimkan 241 nilai / pengukuran ini ke paket analitik, paket tersebut mungkin berharap bahwa ini adalah 241 nilai independen saat mulai menjalankan sihir khusus itu. Jika Anda memiliki data deret waktu, Anda mungkin harus memutakhirkan analitik Anda. Saya tidak tahu program yang Anda rujuk tetapi itu merupakan dugaan yang masuk akal dari saya (saya bisa saja salah!) Bahwa itu adalah tes (tes F / tes T ... dll) mungkin tidak berlaku untuk set masalah Anda.
sumber
Saya dapat merekomendasikan Anda 2 makalah menarik untuk dibaca yang sedang online 1.Streamed Learning: One-Pass SVMs, oleh Piyush Rai, Hal Daum'e III, Suresh Venkatasubramanian 2.Streaming k-means aproksimasi, oleh Nir Ailon
Semoga ini sedikit memperjelas ide-ide Anda
sumber