계층적 집계를 사용하여 예측 편향 완화

이 페이지에서는 계층적 예측이 무엇인지 설명하고 예측 모델의 편향을 줄이기 위해 사용할 수 있는 몇 가지 학습 전략을 보여줍니다.

API를 사용하여 예측 모델을 학습할 때 계층적 예측을 구성하는 방법에 관한 자세한 안내는 예측 모델 학습을 참고하세요.

계층적 예측이란?

시계열은 중첩된 계층 구조로 구성되는 경우가 많습니다. 예를 들어 소매업체에서 판매하는 제품의 전체 인벤토리를 제품 카테고리로 나눌 수 있습니다. 카테고리는 개별 제품으로 더 세분화할 수 있습니다. 향후 판매를 예측할 때 카테고리 제품의 예측은 카테고리 자체와 계층 구조를 따라 올라가면서 예측에 합산되어야 합니다.

제품 및 카테고리의 계층 구조

마찬가지로 단일 시계열의 시간 측정기준도 계층 구조를 나타낼 수 있습니다. 예를 들어 일 기준 개별 제품의 예상 판매량은 제품의 주간 판매 예측에 합산됩니다. 다음 그림은 이 그룹과 시간적 계층 구조를 매트릭스로 보여줍니다.

시계열 행렬

계층적 예측에는 세 가지 목표가 있습니다.

  • 전체 편향을 줄여 모든 시계열(총 판매)에서 측정항목을 개선합니다.
  • 시간적 편향을 줄여 범위(시즌 판매)에서 측정항목을 개선합니다.
  • 그룹 수준 편향을 줄여 시계열 그룹(항목 판매)에 대한 측정항목을 개선합니다.

Vertex AI에서 계층적 예측은 집계된 예측에 대한 추가 손실을 통합하여 시계열의 계층 구조를 고려합니다.

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)

예를 들어 계층적 그룹이 '카테고리'인 경우 '카테고리' 수준의 예측은 카테고리의 모든 '제품'에 대한 예측의 합계입니다. 모델의 목표가 평균 절대 오차(MAE)인 경우 손실에는 '제품' 및 '카테고리' 수준의 예측에 대한 MAE가 포함됩니다. 이렇게 하면 계층 구조의 여러 수준에서 예측의 일관성을 개선하는 데 도움이 되며, 경우에 따라 최하위 수준의 측정항목도 개선될 수 있습니다.

모델 학습을 위한 계층적 집계 구성

예측 모델을 학습시킬 때 Vertex AI SDK에서 AutoMLForecastingTrainingJob을 구성하거나 Vertex AI API에서 hierarchyConfig를 구성하여 계층적 집계를 구성할 수 있습니다.

AutoMLForecastingTrainingJobhierarchyConfig에 사용할 수 있는 파라미터는 다음과 같습니다.

  • group_columns
  • group_total_weight
  • temporal_total_weight
  • group_temporal_total_weight

이 파라미터를 사용하면 그룹 및 시간 집계 손실의 다양한 조합이 허용됩니다. 또한 가중치를 할당하여 개별 손실에 비해 집계 손실을 최소화하는 우선순위를 높일 수 있습니다. 예를 들어 가중치가 2.0으로 설정된 경우 가중치가 개별 손실의 두 배가 됩니다.

group_columns

계층 구조 수준의 그룹화를 식별하는 학습 입력 테이블의 열 이름입니다. 열은 time_series_attribute_columns여야 합니다. 그룹 열이 설정되지 않으면 모든 시계열이 동일한 그룹의 일부로 취급되며 모든 시계열에서 집계됩니다.

group_total_weight

개별 손실을 기준으로 한 그룹 집계 손실의 가중치입니다. 0.0으로 설정하거나 설정하지 않으면 사용 중지됩니다.

temporal_total_weight

개별 손실을 기준으로 한 시간 집계 손실의 가중치입니다. 0.0으로 설정하거나 설정하지 않으면 사용 중지됩니다.

group_temporal_total_weight

개별 손실을 기준으로 한 총(그룹 x 시간) 집계 손실의 가중치입니다. 0.0으로 설정하거나 설정하지 않으면 사용 중지됩니다. 그룹 열이 설정되지 않으면 모든 시계열이 동일한 그룹의 일부로 취급되며 모든 시계열에서 집계됩니다.

편향 줄이기 위한 전략

가중치가 10.0인 한 가지 유형의 집계(그룹 또는 시간)로 시작한 다음 결과에 따라 값을 절반 또는 두 배로 늘려보세요.

전반적인 편향 줄이기

제품 x 매장 x 날짜 기준에서 가중치가 적용된 절대 백분율 오차(WAPE)를 예측 측정항목으로 사용하면 매장 간 재고 분배에 대한 세분화된 예측에서는 예측이 합산 기준으로 되지 않는 경우가 많습니다. 이 전반적인 편향을 보완하려면 다음과 같이 해보세요.

  • group_total_weight10.0로 설정합니다.
  • group_columns는 설정하지 않습니다.
  • 다른 가중치는 설정하지 않은 상태로 둡니다.

이렇게 하면 모든 시계열을 집계하고 전반적인 편향을 줄입니다.

시간적 편향 줄이기

장기적인 계획에서 제품 x 리전 x 주 기준으로 예측을 수행할 수 있지만 시즌별 합계를 기준으로 관련 측정항목을 측정할 수 있습니다. 이 시간적 편향을 보완하려면 다음과 같이 해보세요.

  • temporal_total_weight10.0로 설정합니다.
  • group_columns는 설정하지 않습니다.
  • 다른 가중치는 설정하지 않은 상태로 둡니다.

이렇게 하면 시계열 범위의 모든 날짜 동안 집계되고 시간적 편향이 줄어듭니다.

그룹 수준 편향 줄이기

보충 단계에서 다목적 예측의 경우 제품 x 매장 x 날짜 또는 주 수준에서 세분화된 예측값을 제품 x 유통 센터 x 유통 또는 제품 카테고리의 날짜 기준 x 제품 주문 날짜 기준까지 집계할 수 있습니다. 이렇게 하려면 다음을 수행하세요.

  • group_total_weight10.0로 설정합니다.
  • group_columns를 설정합니다(예: ['region'] 또는 ['region', 'category']). 여러 그룹 열을 설정하면 합산된 값을 사용하여 그룹을 정의합니다. 최상의 결과를 얻으려면 고유한 결합 값이 100개 이하인 그룹 열을 사용하세요.
  • 다른 가중치는 설정하지 않은 상태로 둡니다.

이렇게 하면 같은 날짜의 동일한 그룹에 있는 모든 시계열 동안 집계하여 그룹 수준의 편향을 줄입니다.

한도

  • 시계열 집계는 1개 수준만 지원됩니다. 'product, store'와 같이 2개 이상의 그룹화 열이 지정된 경우 시계열은 'product'와 'store' 모두에 동일한 값을 공유하는 경우에만 같은 그룹에 속합니다.
  • 100개 이하의 그룹을 사용하는 것이 좋습니다.

다음 단계