Halaman ini menjelaskan apa yang dimaksud dengan perkiraan hierarkis, tujuannya, dan menunjukkan beberapa strategi pelatihan yang dapat digunakan untuk mengurangi bias dalam model perkiraan Anda.
Untuk petunjuk detail tentang cara mengonfigurasi perkiraan hierarkis saat melatih model perkiraan menggunakan API, lihat Melatih model perkiraan.
Pengertian perkiraan hierarkis
Deret waktu sering kali disusun dalam hierarki yang bertingkat. Misalnya, seluruh inventaris produk yang dijual oleh retailer dapat dibagi menjadi kategori-kategori produk. Kategori ini dapat dibagi lebih lanjut menjadi produk-produk individual. Saat memperkirakan penjualan mendatang, perkiraan untuk produk dari suatu kategori akan ditambahkan ke perkiraan untuk kategori itu sendiri, dan seterusnya di dalam hierarki tersebut.
Demikian pula, dimensi waktu dari satu deret waktu juga dapat menampilkan hierarki. Misalnya, perkiraan penjualan untuk masing-masing produk pada tingkat hari harus ditambahkan ke perkiraan penjualan mingguan produk. Gambar berikut ini menunjukkan hierarki grup dan temporal sebagai matriks:
Perkiraan hierarkis memiliki tiga tujuan:
- Mengurangi bias keseluruhan untuk meningkatkan metrik sepanjang deret waktu (total penjualan).
- Mengurangi bias temporal untuk meningkatkan metrik di masa mendatang (penjualan musim).
- Mengurangi bias tingkat kelompok untuk meningkatkan metrik bagi sekelompok waktu deret (penjualan item).
Di Vertex AI, perkiraan hierarkis memperhitungkan struktur hierarkis deret waktu dengan menyertakan istilah kerugian tambahan untuk prediksi gabungan.
Hierarchical loss = (1 x loss) +
(temporal total weight x temporal total loss) +
(group total weight x group total loss) +
(group temporal total weight x group temporal total loss)
Misalnya, jika grup hierarkisnya berupa "kategori", prediksi di tingkat "kategori" adalah jumlah prediksi untuk semua "produk" dalam kategori tersebut. Jika tujuan model ini adalah rata-rata error absolut (MAE), kerugiannya akan mencakup MAE untuk prediksi pada tingkat "produk" dan "kategori". Hal ini membantu untuk meningkatkan konsistensi perkiraan di berbagai macam tingkat hierarki, dan dalam beberapa kasus, bahkan dapat meningkatkan metrik pada tingkat terendah.
Mengonfigurasi agregasi hierarkis untuk pelatihan model
Anda dapat mengonfigurasi agregasi hierarkis saat melatih model perkiraan dengan
mengonfigurasi
AutoMLForecastingTrainingJob
di dalam
Vertex AI SDK,
atau dengan
mengonfigurasi hierarchyConfig
di dalam Vertex AI API.
Parameter yang tersedia untuk AutoMLForecastingTrainingJob
dan hierarchyConfig
mencakup:
group_columns
group_total_weight
temporal_total_weight
group_temporal_total_weight
Parameter ini memungkinkan berbagai macam kombinasi kerugian gabungan
grup dan waktu. Fungsi ini juga memungkinkan Anda untuk menetapkan bobot, guna meningkatkan prioritas
meminimalkan kerugian gabungan yang relatif terhadap kerugian individual. Misalnya, jika
bobotnya ditetapkan ke 2.0
, bobot tersebut akan diberi bobot dua kali lipat dari kerugian
individual.
group_columns
Nama kolom dalam tabel input pelatihan Anda yang mengidentifikasi pengelompokan untuk
tingkat hierarki. Kolom harus berupa time_series_attribute_columns
. Jika
kolom grup tidak ditetapkan, semua deret waktu akan diperlakukan sebagai bagian dari grup yang sama,
dan digabungkan dari semua deret waktu.
group_total_weight
Berat kerugian gabungan grup relatif terhadap kerugian individual. Dinonaktifkan jika
ditetapkan ke 0.0
, atau sama sekali tidak ditetapkan.
temporal_total_weight
Bobot waktu kerugian gabungan relatif terhadap kerugian individual. Dinonaktifkan jika
ditetapkan ke 0.0
, atau sama sekali tidak ditetapkan.
group_temporal_total_weight
Berat kerugian gabungan total (grup x waktu) relatif terhadap kerugian
individual. Dinonaktifkan jika disetel ke 0.0
, atau sama sekali tidak disetel. Jika kolom grup tidak ditetapkan,
semua deret waktu akan diperlakukan sebagai bagian dari grup yang sama, dan digabungkan dalam
semua deret waktu.
Strategi untuk mengurangi bias
Pertimbangkan untuk memulai dengan satu jenis agregasi (kelompok atau waktu) dengan bobot
10.0
, lalu bagi dua atau gandakan nilai berdasarkan hasilnya.
Mengurangi bias secara keseluruhan
Dalam perkiraan terperinci untuk mendistribusikan stok di berbagai toko, yang menggunakan bobot persentase error (WAPE) absolut di tingkat produk x toko x tanggal digunakan sebagai metrik perkiraan, perkiraan pada tingkat agregat sering kali kurang akurat. Untuk mengompensasi bias keseluruhan ini, Anda dapat mencoba hal berikut:
- Menetapkan
group_total_weight
ke10.0
. - Membiarkan
group_columns
tidak disetel. - Membiarkan bobot lainnya tidak disetel.
Hal ini menggabungkan seluruh deret waktu, dan mengurangi bias secara keseluruhan.
Mengurangi bias temporal
Dalam perencanaan jangka panjang, perkiraan dapat dibuat pada tingkat produk x wilayah x minggu, namun metrik yang relevan dapat diukur sehubungan dengan total musiman. Untuk mengimbangi bias temporal ini, Anda dapat mencoba hal berikut:
- Menetapkan
temporal_total_weight
ke10.0
. - Membiarkan
group_columns
tidak disetel. - Membiarkan bobot lainnya tidak disetel.
Hal ini menggabungkan semua tanggal dalam cakrawala deret waktu, dan mengurangi bias temporal.
Mengurangi bias tingkat grup
Untuk perkiraan yang memiliki banyak tujuan dalam proses pengisian ulang, perkiraan terperinci pada tingkat produk x toko x tanggal atau minggu dapat digabungkan hingga ke produk x pusat distribusi x tingkat tanggal untuk distribusi, atau kategori x tingkat tanggal untuk pesanan bahan. Untuk melakukannya, lakukan hal berikut ini:
- Menetapkan
group_total_weight
ke10.0
. - Menetapkan
group_columns
, misalnya, ["region"] atau ["region", "category"]. Menetapkan beberapa kolom grup menggunakan nilai gabungannya untuk menentukan grup tersebut. Untuk hasil terbaik, gunakan kolom grup dengan 100 nilai gabungan atau kurang yang berbeda. - Membiarkan bobot lainnya tidak disetel.
Hal ini akan menggabungkan semua deret waktu dalam kelompok yang sama untuk tanggal yang sama, dan mengurangi bias di tingkat grup.
Batas
- Hanya satu tingkat agregasi deret waktu yang didukung. Jika ada lebih dari satu kolom pengelompokan yang ditentukan, seperti "produk, toko", deret waktu akan berada dalam grup yang sama hanya jika kolom tersebut memiliki nilai "produk" dan "toko" yang sama.
- Sebaiknya gunakan 100 grup atau kurang.