Mengurangi bias perkiraan dengan agregasi hierarkis

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.

Hierarki produk dan kategori.

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:

Matriks deret waktu.

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 dalam 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 ke 10.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 ke 10.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 ke 10.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.

Langkah selanjutnya