시계열 예측에서 실제 데이터 처리

실제 세계의 시계열 데이터는 시간 스텝가 누락되거나 중복되거나 정렬되지 않아 불완전한 경우가 많습니다. Forecast and Anomaly Detection ML 함수에는 이러한 전처리 기능이 포함되어 있어 실제 데이터를 사용하여 유용한 예측을 하는 모델을 훈련하는 데 도움이 됩니다.

  • 모델이 자동으로 추론하는 빈도를 재정의하기 위해 이벤트 빈도를 지정할 수 있습니다.

  • 이 모델은 누락된 시간 스텝에서 데이터를 추론하고 시간 스텝 내에서 여러 값을 집계할 수 있습니다. 각 기능 또는 기능 유형별로 집계 방법을 지정하거나 ML 함수가 자동으로 집계하도록 할 수 있습니다.

이러한 기능을 사용하면 훈련 데이터에 공통적인 일관성 문제가 있는 경우에도 유용한 모델을 훈련시킬 수 있습니다. 일반적으로 데이터의 일관성이 높을수록 예측 모델의 정확도가 높아지지만, 이러한 조정이 상대적으로 적더라도 모델의 정확도에 눈에 띄는 영향은 미치지 않습니다.

이벤트 빈도 지정

모델 훈련은 휴리스틱을 사용하여 훈련 데이터에서 시간 스텝의 빈도를 추론하는데, 드물게 잘못된 빈도를 선택하는 경우가 있습니다. 이러한 위험을 방지하거나 잘못된 추론을 수정하려면 CONFIG_OBJECT 매개 변수 frequency 를 사용하여 훈련을 시작할 때 원하는 빈도를 선택적으로 지정할 수 있습니다. 이 매개 변수는 '1 day' 또는 '2 weeks' 와 유사한 형태로 기간을 지정합니다.

  • 간격 지정은 문자열이므로 작은따옴표로 묶어야 합니다.

  • 지원되는 간격은 초, 분, 시, 일, 주, 월, 분기 및 년입니다.

  • 전체 간격 이름을 사용합니다. 복수형도 허용됩니다. (“Second” 또는 “seconds”만 허용됨. “sec” 허용되지 않음)

다음 예제는 하루 중 빈도를 사용하여 예측 모델을 훈련시키는 방법을 보여줍니다

CREATE SNOWFLAKE.ML.FORECAST model1(
  INPUT_DATA => TABLE(v1),
  TIMESTAMP_COLNAME => 'date',
  TARGET_COLNAME => 'sales',
  CONFIG_OBJECT => {'frequency': '1 day'}
);
Copy

이벤트 빈도를 지정하지 않으면 훈련 프로세스에서 가장 가까운 일치하는 이벤트 빈도를 추론합니다.

누락된 시간 스텝에 대한 값 채우기

대상 값이 없는 타임스탬프는 다음을 사용합니다.

누락된 기능 값은 채워지지 않고 NULL 값으로 대체됩니다. 모델 훈련에서는 이러한 사항이 무시됩니다.

시간 스텝에서 여러 값 처리

시간 스텝에 여러 이벤트가 있는 경우 전처리를 통해 다양한 방법으로 해당 값을 집계할 수 있습니다. 예를 들어, 이벤트 빈도가 매시간인 경우 매시간 주기를 벗어나 발생하는 값을 평균하여 가장 가까운 표준 매시간 타임스탬프 값을 생성할 수 있습니다.

다음 테이블은 사용 가능한 집계 동작을 요약한 것입니다.

값의 종류

사용 가능한 동작

기본 동작

숫자

  • MEAN: 값의 평균

  • MEDIAN: 중간값

  • MODE: 가장 빈번한 값

  • MIN: 가장 낮은 값

  • MAX: 가장 높은 값

  • SUM: 총 값

  • FIRST: 가장 빠른 값

  • LAST: 최신 값

MEAN

범주형(문자열 또는 부울)

  • MODE: 가장 빈번한 값

  • FIRST: 가장 빠른 값

  • LAST: 최신 값

MODE

판매된 품목 수와 같은 카운트 데이터에는 SUM 메서드를 사용합니다. MEAN은 대부분의 다른 숫자 값에 적합합니다.

모든 동작은 NULL 값을 무시하고 보간 또는 집계되는 기간에 걸쳐 적용됩니다. 예를 들어, 시간별 케이던스에 대한 값의 SUM은 표준 타임스탬프를 중심으로 한 시간 내 값의 합계입니다.

열의 기본 동작을 두 가지 방법으로 재정의할 수 있습니다.

  • 값의 종류별(대상, 숫자 또는 범주형)

  • 정확한 열 이름으로

두 가지 방법으로 동작을 재정의하는 경우 열 이름 재정의가 우선합니다.

값의 종류에 따른 재정의

함수의 CONFIG_OBJECT 매개 변수에서 다음 옵션을 설정하여 특정 유형의 값(범주형, 숫자, 대상)을 재정의합니다. 동작은 이전에 정의된 바 와 같습니다.

옵션

가능한 값

aggregation_categorical

MODE, FIRST, LAST

aggregation_numeric

MEAN, MEDIAN, MODE, MIN, MAX, SUM, FIRST, LAST

aggregation_target

MEAN, MEDIAN, MODE, MIN, MAX, SUM, FIRST, LAST

참고

aggregation_target 이 지정되지 않은 경우 대상 집계는 aggregate_numeric 에서 지정한 동작(있는 경우)을 사용합니다. 그렇지 않으면 기본값 MEAN이 사용됩니다.

다음 예제에서는 범주형 및 숫자형 기능에 대한 집계 동작을 설정하는 방법을 보여줍니다.

CREATE SNOWFLAKE.ML.FORECAST model1(
  INPUT_DATA => TABLE(v1),
  TIMESTAMP_COLNAME => 'date',
  TARGET_COLNAME => 'sales',
  CONFIG_OBJECT => {
    'frequency': '1 day',
    'aggregation_categorical': 'MODE',
    'aggregation_numeric': 'MEDIAN'}
);
Copy

기본값을 사용하더라도 이러한 모든 값을 지정하는 것이 좋습니다. 이러한 방식으로, 문의 동작을 이해하기 위해 기본 동작이 무엇인지 알 필요가 없으며, 나중에 동작을 변경할 경우 매개 변수 이름을 찾을 필요가 없습니다.

열 이름으로 재정의

CONFIG_OBJECT의 aggregation_column 옵션은 동작을 열 이름에 매핑하는 오브젝트입니다. 이러한 동작은 위에 설명된 매개 변수를 사용하여 지정된 모든 동작보다 우선합니다.

참고

대상 값에 대한 집계 동작은 열 이름으로 지정할 수 없습니다. 대신 aggregation_target 옵션을 사용하십시오.

제안된 변경 사항 예를 들어, 다음 SQL 문은 aggregation_column 옵션을 사용하여 서로 다른 두 열에 대한 집계 동작을 지정합니다.

CREATE SNOWFLAKE.ML.FORECAST model1(
  INPUT_DATA => TABLE(v1),
  TIMESTAMP_COLNAME => 'date',
  TARGET_COLNAME => 'sales',
  CONFIG_OBJECT => {
    'frequency': '1 day',
    'aggregation_target': 'MEDIAN',
    'aggregation_column': {
        'temperature': 'MEDIAN',
        'employee_id': 'FIRST'
    }
  }
);
Copy