

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Gunakan algoritme peramalan SageMaker AI DeepAR
<a name="deepar"></a>

Algoritma peramalan Amazon SageMaker AI DeepAR adalah algoritma pembelajaran yang diawasi untuk meramalkan deret waktu skalar (satu dimensi) menggunakan jaringan saraf berulang (RNN). Metode peramalan klasik, seperti autoregressive integrated moving average (ARIMA) atau exponential smoothing (ETS), cocok dengan satu model untuk setiap deret waktu individu. Mereka kemudian menggunakan model itu untuk mengekstrapolasi deret waktu ke masa depan. 

Namun, dalam banyak aplikasi, Anda memiliki banyak deret waktu serupa di satu set unit penampang. Misalnya, Anda mungkin memiliki pengelompokan deret waktu untuk permintaan berbagai produk, pemuatan server, dan permintaan untuk halaman web. Untuk jenis aplikasi ini, Anda bisa mendapatkan keuntungan dari melatih satu model secara bersama-sama di semua deret waktu. DeepAR mengambil pendekatan ini. Ketika kumpulan data Anda berisi ratusan deret waktu terkait, DeepAR mengungguli metode ARIMA dan ETS standar. Anda juga dapat menggunakan model terlatih untuk menghasilkan perkiraan untuk deret waktu baru yang mirip dengan yang telah dilatih.

Input pelatihan untuk algoritma DeepAR adalah satu atau, lebih disukai, lebih banyak deret `target` waktu yang telah dihasilkan oleh proses yang sama atau proses serupa. Berdasarkan kumpulan data input ini, algoritme melatih model yang mempelajari perkiraan ini process/processes dan menggunakannya untuk memprediksi bagaimana deret waktu target berkembang. Setiap deret waktu target dapat secara opsional dikaitkan dengan vektor fitur kategoris statis (independen waktu) yang disediakan oleh `cat` lapangan dan vektor deret waktu dinamis (bergantung waktu) yang disediakan oleh lapangan. `dynamic_feat` SageMaker AI melatih model DeepAR dengan mengambil sampel contoh pelatihan secara acak dari setiap deret waktu target dalam kumpulan data pelatihan. Setiap contoh pelatihan terdiri dari sepasang konteks dan jendela prediksi yang berdekatan dengan panjang yang telah ditentukan sebelumnya. Untuk mengontrol seberapa jauh di masa lalu jaringan dapat melihat, gunakan `context_length` hyperparameter. Untuk mengontrol seberapa jauh prediksi future dapat dibuat, gunakan `prediction_length` hyperparameter. Untuk informasi selengkapnya, lihat [Bagaimana Algoritma DeepAR Bekerja](deepar_how-it-works.md).

**Topics**
+ [Antarmuka Input/Output untuk Algoritma DeepAR](#deepar-inputoutput)
+ [Praktik Terbaik untuk Menggunakan Algoritma DeepAR](#deepar_best_practices)
+ [Rekomendasi Instans EC2 untuk Algoritma DeepAR](#deepar-instances)
+ [Notebook Contoh DeepAR](#deepar-sample-notebooks)
+ [Bagaimana Algoritma DeepAR Bekerja](deepar_how-it-works.md)
+ [DeepAR Hyperparameter](deepar_hyperparameters.md)
+ [Menyetel Model DeepAR](deepar-tuning.md)
+ [Format Inferensi DeepAR](deepar-in-formats.md)

## Antarmuka Input/Output untuk Algoritma DeepAR
<a name="deepar-inputoutput"></a>

DeepAR mendukung dua saluran data. `train`Saluran yang diperlukan menjelaskan kumpulan data pelatihan. `test`Saluran opsional menjelaskan kumpulan data yang digunakan algoritme untuk mengevaluasi akurasi model setelah pelatihan. Anda dapat memberikan kumpulan data pelatihan dan pengujian dalam format [JSON Lines](http://jsonlines.org/). File dapat dalam format file gzip atau [Parket](https://parquet.apache.org/).

Saat menentukan jalur untuk data pelatihan dan pengujian, Anda dapat menentukan satu file atau direktori yang berisi banyak file, yang dapat disimpan dalam subdirektori. *Jika Anda menentukan direktori, DeepAR menggunakan semua file dalam direktori sebagai input untuk saluran yang sesuai, kecuali yang dimulai dengan periode (.) dan yang bernama \$1SUCCESS.* Ini memastikan bahwa Anda dapat langsung menggunakan folder keluaran yang dihasilkan oleh pekerjaan Spark sebagai saluran input untuk pekerjaan pelatihan DeepAR Anda.

Secara default, model DeepAR menentukan format input dari ekstensi file (`.json`,`.json.gz`, atau`.parquet`) di jalur input yang ditentukan. Jika jalur tidak berakhir di salah satu ekstensi ini, Anda harus secara eksplisit menentukan format dalam SDK untuk Python. Gunakan `content_type` parameter kelas [s3\$1input](https://sagemaker.readthedocs.io/en/stable/session.html#sagemaker.session.s3_input).

Catatan dalam file input Anda harus berisi bidang berikut:
+ `start`—Sebuah string dengan format`YYYY-MM-DD HH:MM:SS`. Stempel waktu awal tidak dapat berisi informasi zona waktu.
+ `target`—Sebuah array nilai floating-point atau bilangan bulat yang mewakili deret waktu. Anda dapat menyandikan nilai yang hilang sebagai `null` literal, atau sebagai `"NaN"` string di JSON, atau sebagai nilai `nan` floating-point di Parquet.
+ `dynamic_feat`(opsional) —Sebuah array dari nilai floating-point atau bilangan bulat yang mewakili vektor deret waktu fitur kustom (fitur dinamis). Jika Anda mengatur bidang ini, semua catatan harus memiliki jumlah array dalam yang sama (jumlah rangkaian waktu fitur yang sama). Selain itu, setiap larik bagian dalam harus memiliki panjang yang sama dengan `target` nilai plus yang terkait`prediction_length`. Nilai yang hilang tidak didukung dalam fitur. Misalnya, jika deret waktu target mewakili permintaan produk yang berbeda, yang terkait `dynamic_feat` mungkin berupa deret waktu boolean yang menunjukkan apakah promosi diterapkan (1) ke produk tertentu atau tidak (0): 

  ```
  {"start": ..., "target": [1, 5, 10, 2], "dynamic_feat": [[0, 1, 1, 0]]}
  ```
+ `cat`(opsional) —Sebuah array fitur kategoris yang dapat digunakan untuk menyandikan grup yang dimiliki rekaman tersebut. Fitur kategoris harus dikodekan sebagai urutan bilangan bulat positif berbasis 0. Misalnya, domain kategoris \$1R, G, B\$1 dapat dikodekan sebagai \$10, 1, 2\$1. Semua nilai dari setiap domain kategoris harus diwakili dalam kumpulan data pelatihan. Itu karena algoritma DeepAR hanya dapat memperkirakan untuk kategori yang telah diamati selama pelatihan. Dan, setiap fitur kategoris tertanam dalam ruang dimensi rendah yang dimensionalitasnya dikendalikan oleh hyperparameter. `embedding_dimension` Untuk informasi selengkapnya, lihat [DeepAR Hyperparameter](deepar_hyperparameters.md).

Jika Anda menggunakan file JSON, itu harus dalam format [JSON Lines](http://jsonlines.org/). Contoh:

```
{"start": "2009-11-01 00:00:00", "target": [4.3, "NaN", 5.1, ...], "cat": [0, 1], "dynamic_feat": [[1.1, 1.2, 0.5, ...]]}
{"start": "2012-01-30 00:00:00", "target": [1.0, -5.0, ...], "cat": [2, 3], "dynamic_feat": [[1.1, 2.05, ...]]}
{"start": "1999-01-30 00:00:00", "target": [2.0, 1.0], "cat": [1, 4], "dynamic_feat": [[1.3, 0.4]]}
```

Dalam contoh ini, setiap deret waktu memiliki dua fitur kategoris terkait dan satu fitur deret waktu.

Untuk Parket, Anda menggunakan tiga bidang yang sama dengan kolom. Selain itu, `"start"` bisa menjadi `datetime` tipenya. Anda dapat mengompres file Parket menggunakan gzip (`gzip`) atau pustaka kompresi Snappy (). `snappy`

Jika algoritma dilatih tanpa `cat` dan `dynamic_feat` bidang, ia mempelajari model “global”, yaitu model yang agnostik dengan identitas spesifik dari deret waktu target pada waktu inferensi dan hanya dikondisikan pada bentuknya.

Jika model dikondisikan pada `cat` dan `dynamic_feat` fitur data yang disediakan untuk setiap deret waktu, prediksi mungkin akan dipengaruhi oleh karakter deret waktu dengan `cat` fitur yang sesuai. Misalnya, jika deret `target` waktu mewakili permintaan item pakaian, Anda dapat mengaitkan `cat` vektor dua dimensi yang mengkodekan jenis item (misalnya 0 = sepatu, 1 = pakaian) di komponen pertama dan warna item (misalnya 0 = merah, 1 = biru) di komponen kedua. Masukan sampel akan terlihat sebagai berikut:

```
{ "start": ..., "target": ..., "cat": [0, 0], ... } # red shoes
{ "start": ..., "target": ..., "cat": [1, 1], ... } # blue dress
```

Pada waktu inferensi, Anda dapat meminta prediksi untuk target dengan `cat` nilai yang merupakan kombinasi dari `cat` nilai yang diamati dalam data pelatihan, misalnya:

```
{ "start": ..., "target": ..., "cat": [0, 1], ... } # blue shoes
{ "start": ..., "target": ..., "cat": [1, 0], ... } # red dress
```

Pedoman berikut berlaku untuk data pelatihan:
+ Waktu mulai dan panjang deret waktu dapat berbeda. Misalnya, dalam pemasaran, produk sering memasuki katalog ritel pada tanggal yang berbeda, sehingga tanggal mulai mereka secara alami berbeda. Tetapi semua seri harus memiliki frekuensi yang sama, jumlah fitur kategoris, dan jumlah fitur dinamis. 
+ Kocokkan file pelatihan sehubungan dengan posisi deret waktu dalam file. Dengan kata lain, deret waktu harus terjadi secara acak dalam file.
+ Pastikan untuk mengatur `start` bidang dengan benar. Algoritma menggunakan `start` stempel waktu untuk mendapatkan fitur internal. 
+ Jika Anda menggunakan fitur kategoris (`cat`), semua deret waktu harus memiliki jumlah fitur kategoris yang sama. Jika kumpulan data berisi `cat` bidang, algoritme menggunakannya dan mengekstrak kardinalitas grup dari kumpulan data. Secara default, `cardinality` adalah`"auto"`. Jika kumpulan data berisi `cat` bidang, tetapi Anda tidak ingin menggunakannya, Anda dapat menonaktifkannya dengan menyetel `cardinality` ke`""`. Jika model dilatih menggunakan `cat` fitur, Anda harus memasukkannya untuk inferensi.
+ Jika kumpulan data Anda berisi `dynamic_feat` bidang, algoritme menggunakannya secara otomatis. Semua deret waktu harus memiliki jumlah rangkaian waktu fitur yang sama. Titik waktu di masing-masing deret waktu fitur one-to-one sesuai dengan titik waktu dalam target. Selain itu, entri di `dynamic_feat` lapangan harus memiliki panjang yang sama dengan`target`. Jika kumpulan data berisi `dynamic_feat` bidang, tetapi Anda tidak ingin menggunakannya, nonaktifkan dengan menyetel (`num_dynamic_feat`to`""`). Jika model dilatih dengan `dynamic_feat` lapangan, Anda harus menyediakan bidang ini untuk inferensi. Selain itu, masing-masing fitur harus memiliki panjang target yang disediakan ditambah`prediction_length`. Dengan kata lain, Anda harus memberikan nilai fitur di masa depan.

Jika Anda menentukan data saluran uji opsional, algoritme DeepAR mengevaluasi model terlatih dengan metrik akurasi yang berbeda. Algoritma menghitung root mean square error (RMSE) atas data uji sebagai berikut:

![\[Rumus RMSE: Sqrt (1/nT (Jumlah [i, t] (y-hat (i, t) -y (i, t)) ^2))\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/deepar-1.png)


*y* *i*,*t* adalah nilai sebenarnya dari deret waktu *i* pada waktu *t*. **i*,*t*adalah* prediksi rata-rata. Jumlahnya melebihi semua *n* deret waktu dalam set uji dan selama τ titik waktu terakhir untuk setiap deret waktu, di mana τ sesuai dengan cakrawala perkiraan. Anda menentukan panjang cakrawala perkiraan dengan mengatur `prediction_length` hyperparameter. Untuk informasi selengkapnya, lihat [DeepAR Hyperparameter](deepar_hyperparameters.md).

Selain itu, algoritme mengevaluasi keakuratan distribusi perkiraan menggunakan kerugian kuantil tertimbang. Untuk kuantil dalam kisaran [0, 1], kerugian kuantil tertimbang didefinisikan sebagai berikut:

![\[Persamaan kerugian kuantil tertimbang.\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/deepar-2.png)


 *q *i*,*t** (τ) adalah τ-kuantil distribusi yang diprediksi model. Untuk menentukan kuantil mana yang akan menghitung kerugian, atur hyperparameter. `test_quantiles` Selain itu, rata-rata kerugian kuantil yang ditentukan dilaporkan sebagai bagian dari log pelatihan. Untuk informasi, lihat [DeepAR Hyperparameter](deepar_hyperparameters.md). 

Untuk inferensi, DeepAR menerima format JSON dan bidang berikut:
+  `"instances"`, yang mencakup satu atau lebih deret waktu dalam format JSON Lines
+  Nama`"configuration"`, yang mencakup parameter untuk menghasilkan perkiraan 

Untuk informasi selengkapnya, lihat [Format Inferensi DeepAR](deepar-in-formats.md).

## Praktik Terbaik untuk Menggunakan Algoritma DeepAR
<a name="deepar_best_practices"></a>

Saat menyiapkan data deret waktu Anda, ikuti praktik terbaik ini untuk mencapai hasil terbaik:
+ Kecuali saat membagi kumpulan data Anda untuk pelatihan dan pengujian, selalu sediakan seluruh deret waktu untuk pelatihan, pengujian, dan saat memanggil model untuk inferensi. Terlepas dari bagaimana Anda mengatur`context_length`, jangan memecah deret waktu atau hanya menyediakan sebagian saja. Model menggunakan titik data lebih jauh ke belakang daripada nilai yang ditetapkan `context_length` untuk fitur nilai tertinggal.
+ Saat menyetel model DeepAR, Anda dapat membagi kumpulan data untuk membuat kumpulan data pelatihan dan kumpulan data pengujian. Dalam evaluasi tipikal, Anda akan menguji model pada deret waktu yang sama yang digunakan untuk pelatihan, tetapi pada titik `prediction_length` waktu future yang mengikuti segera setelah titik waktu terakhir terlihat selama pelatihan. Anda dapat membuat kumpulan data pelatihan dan pengujian yang memenuhi kriteria ini dengan menggunakan seluruh kumpulan data (panjang penuh dari semua deret waktu yang tersedia) sebagai set pengujian dan menghapus `prediction_length` poin terakhir dari setiap deret waktu untuk pelatihan. Selama pelatihan, model tidak melihat nilai target untuk titik waktu yang dievaluasi selama pengujian. Selama pengujian, algoritma menahan `prediction_length` poin terakhir dari setiap deret waktu dalam set pengujian dan menghasilkan prediksi. Kemudian membandingkan perkiraan dengan nilai yang ditahan. Anda dapat membuat evaluasi yang lebih kompleks dengan mengulangi deret waktu beberapa kali dalam set pengujian, tetapi memotongnya pada titik akhir yang berbeda. Dengan pendekatan ini, metrik akurasi dirata-ratakan pada beberapa perkiraan dari titik waktu yang berbeda. Untuk informasi selengkapnya, lihat [Menyetel Model DeepAR](deepar-tuning.md).
+ Hindari menggunakan nilai yang sangat besar (>400) `prediction_length` karena itu membuat model lambat dan kurang akurat. Jika Anda ingin memperkirakan lebih jauh ke masa depan, pertimbangkan untuk menggabungkan data Anda pada frekuensi yang lebih rendah. Misalnya, gunakan `5min` sebagai ganti dari `1min`.
+ Karena lag digunakan, model dapat melihat lebih jauh ke belakang dalam deret waktu daripada nilai yang ditentukan. `context_length` Oleh karena itu, Anda tidak perlu mengatur parameter ini ke nilai yang besar. Sebaiknya mulai dengan nilai yang Anda gunakan`prediction_length`.
+ Kami merekomendasikan pelatihan model DeepAR pada deret waktu sebanyak yang tersedia. Meskipun model DeepAR yang dilatih pada satu deret waktu mungkin bekerja dengan baik, algoritma peramalan standar, seperti ARIMA atau ETS, mungkin memberikan hasil yang lebih akurat. Algoritma DeepAR mulai mengungguli metode standar ketika dataset Anda berisi ratusan deret waktu terkait. Saat ini, DeepAR mensyaratkan bahwa jumlah total pengamatan yang tersedia di semua deret waktu pelatihan setidaknya 300.

## Rekomendasi Instans EC2 untuk Algoritma DeepAR
<a name="deepar-instances"></a>

Anda dapat melatih DeepAR pada instans GPU dan CPU dan dalam pengaturan tunggal dan multi-mesin. Sebaiknya mulai dengan satu instance CPU (misalnya, ml.c4.2xlarge atau ml.c4.4xlarge), dan beralih ke instance GPU dan beberapa mesin hanya jika diperlukan. Menggunakan GPUs dan beberapa mesin meningkatkan throughput hanya untuk model yang lebih besar (dengan banyak sel per lapisan dan banyak lapisan) dan untuk ukuran mini-batch besar (misalnya, lebih besar dari 512).

Untuk inferensi, DeepAR hanya mendukung instance CPU.

Menentukan nilai besar untuk`context_length`,`prediction_length`,`num_cells`,`num_layers`, atau `mini_batch_size` dapat membuat model yang terlalu besar untuk instance kecil. Dalam hal ini, gunakan jenis instance yang lebih besar atau kurangi nilai untuk parameter ini. Masalah ini juga sering terjadi saat menjalankan pekerjaan tuning hyperparameter. Dalam hal ini, gunakan tipe instance yang cukup besar untuk pekerjaan penyetelan model dan pertimbangkan untuk membatasi nilai atas parameter kritis untuk menghindari kegagalan pekerjaan. 

## Notebook Contoh DeepAR
<a name="deepar-sample-notebooks"></a>

Untuk contoh notebook yang menunjukkan cara menyiapkan kumpulan data deret waktu untuk melatih algoritme SageMaker AI DeepAR dan cara menerapkan model terlatih untuk melakukan inferensi, [lihat Demo DeepAR tentang dataset listrik, yang menggambarkan fitur-fitur canggih DeepAR pada](https://sagemaker-examples.readthedocs.io/en/latest/introduction_to_amazon_algorithms/deepar_electricity/DeepAR-Electricity.html) dataset dunia nyata. Untuk petunjuk cara membuat dan mengakses instance notebook Jupyter yang dapat Anda gunakan untuk menjalankan contoh di SageMaker AI, lihat. [Instans SageMaker notebook Amazon](nbi.md) Setelah membuat dan membuka instance notebook, pilih tab **Contoh SageMaker AI** untuk melihat daftar semua contoh SageMaker AI. Untuk membuka buku catatan, pilih tab **Use**, dan pilih **Create copy**.

Untuk informasi selengkapnya tentang algoritma Amazon SageMaker AI DeepAR, lihat posting blog berikut ini:
+ [Sekarang tersedia di Amazon SageMaker AI: Algoritma DeepAR untuk peramalan deret waktu yang lebih akurat](https://aws.amazon.com/blogs/machine-learning/now-available-in-amazon-sagemaker-deepar-algorithm-for-more-accurate-time-series-forecasting/)
+ [Perkiraan permintaan mendalam dengan Amazon AI SageMaker ](https://aws.amazon.com/blogs/machine-learning/deep-demand-forecasting-with-amazon-sagemaker/)