Bagaimana cara melatih model LSTM pada beberapa data deret waktu?

14

Bagaimana cara melatih model LSTM pada beberapa data deret waktu?

Kasus penggunaan: Saya memiliki penjualan mingguan 20.000 agen selama 5 tahun terakhir. Perlu memperkirakan penjualan mingguan mendatang untuk setiap agen.

Apakah saya perlu mengikuti teknik pemrosesan batch - mengambil satu agen pada suatu waktu, melatih model LSTM kemudian memperkirakan? Adakah cara yang lebih baik?

Aljo Jose
sumber
apakah Anda mengetahui hal ini? Saya melihat masalah yang sama.
vishnu viswanath
@vishnuviswanath kami sedang berupaya mengembangkan jaringan syaraf tiruan (RNN) yang dapat menjadi satu model untuk semua agen.
Aljo Jose
Terima kasih. bagaimana Anda melatih model untuk banyak agen? apakah Anda melatih satu agen per batch.
vishnu viswanath
kami masih dalam tahap konstruksi. kaggle.com/c/web-traffic-time-series-forecasting/discussion/… dapat membantu.
Aljo Jose

Jawaban:

12

Jadikan identitas agen salah satu fitur, dan latih semua data. Mungkin melatih pada batch-mini misalnya 128 agen pada saat: berjalan melalui seri-waktu dari awal hingga akhir untuk 128 agen tersebut, kemudian pilih mini-batch agen baru. Untuk setiap mini-batch, jalankan sepotong katakanlah 50 timesteps, lalu backprop. Jaga status akhir dari irisan itu, dan jalankan 50 langkah waktu berikutnya, mulai dari status akhir itu. Bilas dan ulangi sampai Anda mencapai akhir dari timesteps, untuk batch kecil ~ 128 agen.

Dengan menempatkan identitas masing-masing agen sebagai salah satu fitur, Anda memungkinkan jaringan untuk:

  • belajar dari semua data Anda, dengan demikian memaksimalkan pemanfaatan data Anda, dan
  • mempelajari karakteristik unik dari masing-masing agen, sehingga tidak akan rata-rata semua agen bersama-sama
  • ketika Anda memperkirakan masa depan untuk agen tertentu, pastikan untuk menggunakan fitur id agen yang sesuai, dan jaringan akan menyesuaikan prediksi sesuai.

Sunting: Alpo Jose menulis:

ok, apakah saya perlu menggunakan satu pengkodean panas untuk membuat identitas agen?

Ooo, itu benar. Ada 20.000 di antaranya. Itu agak banyak. Saya pikir apa yang ingin Anda lakukan adalah 'menanamkan' mereka. Memiliki lapisan pencarian, yang mengambil id agen (dinyatakan sebagai bilangan bulat, indeks), dan menampilkan vektor dimensi tinggi, seperti sesuatu seperti vektor panjang 50-300, mungkin vektor yang panjangnya kira-kira cocok dengan ukuran tersembunyi dari LSTM Anda.

Secara matematis, tabel pencarian, juga disebut 'lapisan embedding', setara dengan membuat id agen menjadi vektor satu-panas, kemudian melewati lapisan linier (terhubung sepenuhnya). Namun, persyaratan dalam memori jauh berkurang untuk lapisan penyematan.

Dalam hal apa yang akan dipelajari oleh lapisan penanaman, saat Anda melatihnya, lapisan penanaman akan membentuk semacam representasi laten dari masing-masing agen. Representasi laten kemungkinan tidak akan dapat dibaca / ditafsirkan dengan cara apa pun, tetapi akan memungkinkan model untuk mempelajari hal-hal seperti 'ok agen ini, 1524, relatif efektif, tetapi tidak pada akhir pekan; di mana 1526 hebat setiap hari; dll .... '. Dimensi laten dari vektor embedding mungkin sebenarnya berarti hal-hal, tetapi tidak ada yang pernah mencoba untuk mencari tahu apa artinya (saya pikir itu akan sulit / tidak mungkin). Namun, embeddings per-agen berdimensi tinggi memungkinkan model untuk mempelajari sesuatu tentang perilaku masing-masing agen, dan membuat model ini dalam prediksi time-series.

Hugh Perkins
sumber
ok, apakah saya perlu menggunakan satu pengkodean panas untuk membuat identitas agen?
Aljo Jose
@AljoJose memperbarui jawaban untuk memperhitungkan pertanyaan ini
Hugh Perkins
Saya mengerti sekarang, Akan mencoba. terima kasih Hugh.
Aljo Jose
Saya memiliki masalah yang sama, tetapi tidak seperti agen di sini, saya memiliki beberapa rangkaian waktu sebagai contoh dari proses yang sama, tetapi masing-masing dengan panjang variabel. Jadi saya tidak perlu agen (proses, dalam kasus saya) sebagai fitur. Ada saran bagaimana mengatasinya?
Anakin