

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

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

Algoritma peramalan Amazon SageMaker AI DeepAR adalah algoritma pembelajaran terawasi untuk meramalkan deret waktu skalar (satu dimensi) menggunakan jaringan saraf berulang (RNN). Metode peramalan klasik, seperti autoregressive Integrated Moving Average (ARIMA) atau eksponensial (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 produk yang berbeda, beban server, dan permintaan untuk halaman web. Untuk jenis aplikasi ini, Anda dapat memperoleh manfaat dari melatih satu model secara bersama-sama di semua deret waktu. DeepAR mengambil pendekatan ini. Ketika dataset 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, algoritma 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 (tidak tergantung waktu) yang disediakan oleh `cat` bidang dan vektor deret waktu dinamis (tergantung waktu) yang disediakan oleh bidang. `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 yang berdekatan dan jendela prediksi 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 masa depan dapat dibuat, gunakan `prediction_length` hyperparameter. Untuk informasi selengkapnya, lihat [Bagaimana Algoritma DeepAR Bekerja](deepar_how-it-works.md).

**Topics**
+ [Input/Output Antarmuka 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)
+ [Hyperparameter DeepAR](deepar_hyperparameters.md)
+ [Setel Model DeepAR](deepar-tuning.md)
+ [Format Inferensi DeepAR](deepar-in-formats.md)

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

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

Saat menentukan jalur untuk data pelatihan dan pengujian, Anda dapat menentukan satu file atau direktori yang berisi beberapa 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 titik (.) dan yang bernama * \_ * SUCCESS. 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 di SDK untuk Python. Gunakan `content_type` parameter [ InputData ](https://sagemaker.readthedocs.io/en/stable/api/sagemaker_train.html) kelas.

Catatan dalam file input Anda harus berisi bidang berikut:
+ `start`—Sebuah string dengan format`YYYY-MM-DD HH:MM:SS`. Stempel waktu mulai tidak dapat berisi informasi zona waktu.
+ `target`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) —Array array nilai floating-point atau bilangan bulat yang mewakili vektor deret waktu fitur khusus (fitur dinamis). Jika Anda mengatur bidang ini, semua catatan harus memiliki jumlah array dalam yang sama (jumlah deret waktu fitur yang sama). Selain itu, setiap array dalam harus memiliki panjang yang sama dengan `target` nilai plus 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 merupakan 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 tempat rekaman tersebut berada. Fitur kategoris harus dikodekan sebagai urutan 0 dari bilangan bulat positif. Misalnya, domain kategoris {R, G, B} dapat dikodekan sebagai {0, 1, 2}. Semua nilai dari setiap domain kategoris harus diwakili dalam kumpulan data pelatihan. Itu karena algoritma DeepAR hanya dapat memprediksi untuk kategori yang telah diamati selama pelatihan. Dan, setiap fitur kategoris tertanam dalam ruang dimensi rendah yang dimensinya dikendalikan oleh hyperparameter. `embedding_dimension` Untuk informasi selengkapnya, lihat [Hyperparameter DeepAR](deepar_hyperparameters.md).

Jika Anda menggunakan file JSON, itu harus dalam [ format ](http://jsonlines.org/) JSON Lines. 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 sebagai kolom. Selain itu, `"start"` bisa menjadi `datetime` tipe. Anda dapat mengompres file Parquet 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 terhadap identitas spesifik dari deret waktu target pada waktu inferensi dan hanya dikondisikan pada bentuknya.

Jika model dikondisikan pada `cat` dan data `dynamic_feat` fitur 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 = gaun) di komponen pertama dan warna item (misalnya 0 = merah, 1 = biru) di komponen kedua. Input 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 dalam urutan 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 dataset berisi `cat` bidang, algoritma menggunakannya dan mengekstrak kardinalitas grup dari kumpulan data. Secara default, `cardinality` adalah`"auto"`. Jika dataset 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 dataset Anda berisi `dynamic_feat` bidang tersebut, algoritma akan menggunakannya secara otomatis. Semua deret waktu harus memiliki jumlah seri waktu fitur yang sama. Titik waktu di setiap deret waktu fitur sesuai satu-ke-satu dengan titik waktu di target. Selain itu, entri di `dynamic_feat` lapangan harus memiliki panjang yang sama dengan`target`. Jika dataset berisi `dynamic_feat` bidang, tetapi Anda tidak ingin menggunakannya, nonaktifkan dengan menyetel (`num_dynamic_feat`ke`""`). 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 mendatang.

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

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


*y * *i*,*t* adalah nilai sebenarnya dari deret waktu * i * pada saat * t*. ***i*,*t*adalah prediksi rata-rata. Jumlahnya di atas 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 [Hyperparameter DeepAR](deepar_hyperparameters.md).

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

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


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

Untuk inferensi, DeepAR menerima format JSON dan bidang berikut:
+  `"instances"`, yang mencakup satu atau lebih deret waktu dalam format Garis JSON
+  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 berikut untuk mencapai hasil terbaik:
+ Kecuali saat membagi dataset Anda untuk pelatihan dan pengujian, selalu berikan 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 darinya. Model menggunakan titik data lebih jauh ke belakang dari 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 uji. Dalam evaluasi tipikal, Anda akan menguji model pada deret waktu yang sama yang digunakan untuk pelatihan, tetapi pada titik `prediction_length` waktu mendatang yang mengikuti segera setelah titik waktu terakhir yang terlihat selama pelatihan. Anda dapat membuat kumpulan data pelatihan dan pengujian yang memenuhi kriteria ini dengan menggunakan seluruh dataset (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 [Setel Model DeepAR](deepar-tuning.md).
+ Hindari menggunakan nilai yang sangat besar (>400) `prediction_length` karena 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. Kami sarankan memulai dengan nilai yang Anda gunakan`prediction_length`.
+ Kami merekomendasikan melatih model DeepAR pada seri 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 instans GPU dan beberapa mesin hanya jika diperlukan. Menggunakan GPU dan beberapa mesin meningkatkan throughput hanya untuk model yang lebih besar (dengan banyak sel per lapisan dan banyak lapisan) dan untuk ukuran batch mini yang 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 penyetelan 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 dataset deret waktu untuk melatih algoritma SageMaker AI DeepAR dan cara menerapkan model terlatih untuk melakukan inferensi, lihat demo [ DeepAR pada dataset listrik](https://sagemaker-examples.readthedocs.io/en/latest/introduction_to_amazon_algorithms/deepar_electricity/DeepAR-Electricity.html), yang menggambarkan fitur-fitur lanjutan DeepAR pada dataset dunia nyata. Untuk petunjuk tentang 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 ** Gunakan, dan pilih ** Buat salinan**.

Untuk informasi selengkapnya tentang algoritma Amazon SageMaker AI DeepAR, lihat posting blog berikut:
+ [Sekarang tersedia di Amazon SageMaker AI: Algoritma DeepAR untuk perkiraan 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/)
+ [Peramalan permintaan mendalam dengan Amazon SageMaker AI ](https://aws.amazon.com/blogs/machine-learning/deep-demand-forecasting-with-amazon-sagemaker/)