AI.FORECAST와 TimesFM: 학습 없이 시계열 예측하기
요약
본 글은 Google Research가 개발한 시계열 파운데이션 모델 TimesFM을 활용하여, 전통적인 방식 대비 학습 과정 없이도 높은 정확도로 시계열 예측을 수행하는 방법을 다룹니다. AI.FORECAST 함수를 사용하면 SQL 쿼리만으로 판매량이나 재고 같은 미래 값을 쉽게 얻을 수 있습니다.
핵심 포인트
- TimesFM은 사전 학습된 파운데이션 모델로, 추가 학습 없이 범용적인 예측이 가능합니다.
- AI.FORECAST 함수는 SQL 문장 하나로 시계열 데이터를 기반으로 예측값을 반환합니다.
- 예측에는 `time_series_id`, `time_series_timestamp`, `time_series_data` 열이 필요하며, 신뢰 구간도 함께 제공됩니다.
서론
시리즈의 14번째 글입니다.
지난번(제13회)에서는 차분 임베딩을 자동 생성하여 벡터 인덱스를 자동으로 동기화하는 파이프라인을 설명했습니다. 이번에는 AI.FORECAST와 TimesFM을 사용한 시계열 예측을 다룹니다.
판매량 예측이나 재고 계획에는 전통적으로 ARIMA나 BigQuery ML의 ARIMA_PLUS 모델이 사용되어 왔습니다. 이들 모두 '모델을 학습시키는' 단계가 필요했고, 데이터 양, 학습 시간, 운영 비용이 과제였습니다. AI.FORECAST는 시계열 파운데이션 모델인 TimesFM을 사용하여 학습 없이 예측값을 반환하는 함수입니다. SQL 문 하나만 작성하면 다음 날, 다음 주, 다음 달의 예측치를 얻을 수 있습니다.
TimesFM이란?
TimesFM(Time Series Foundation Model)은 Google Research가 개발한 시계열 예측용 파운데이션 모델입니다. 방대한 양의 시계열 데이터로 사전 학습되었기 때문에, 도메인 특화 데이터로 추가 학습을 하지 않아도 광범위한 시계열에 범용적으로 기능합니다.
ARIMA_PLUS와 TimesFM의 주요 차이점을 정리합니다.
| 관점 | ARIMA_PLUS | AI.FORECAST (TimesFM) |
|---|---|---|
| 학습 단계 | 필요 (데이터마다 모델 생성) | 불필요 (제로샷) |
| ... | CREATE MODEL → ML.FORECAST | AI.FORECAST 한 번에 |
'우선 예측값을 빠르게 보고 싶다', '학습 리소스를 투입하지 않고 대략적인 미래 값을 확인하고 싶다'는 용도에 TimesFM이 적합합니다.
기본 구문
AI.FORECAST(
MODEL model_name,
input_query,
...
| 인자 | 설명 |
|---|---|
model_name | TimesFM의 원격 모델 객체 |
input_query | 시계열 데이터를 반환하는 서브쿼리 |
horizon | 예측할 스텝 수 (정수) |
confidence_level | 예측 구간의 신뢰 수준 (0.0~1.0. 예: 0.9) |
input_query에 필요한 열
| 열 이름 | 타입 | 설명 |
|---|---|
time_series_id | STRING | 시리즈를 식별하는 ID (상품 ID 등) |
time_series_timestamp | TIMESTAMP 또는 DATE | 시각 |
time_series_data | FLOAT64 | 예측하고 싶은 값 |
time_series_id는 여러 시리즈를 일괄 처리할 때 필요합니다. 단일 시리즈의 경우에도 빈 문자열 등을 넣어 열을 맞추어 주세요.
반환값
| 열 이름 | 타입 | 설명 |
|---|---|
time_series_id | STRING | 원래 ID |
time_series_timestamp | TIMESTAMP | 예측 대상 시각 |
time_series_data | FLOAT64 | 예측값 (점 추정) |
prediction_interval_lower_bound | FLOAT64 | 예측 구간의 하한 |
prediction_interval_upper_bound | FLOAT64 | 예측 구간의 상한 |
모델 객체 생성
AI.FORECAST를 실행하기 전에 TimesFM의 원격 모델을 생성합니다.
CREATE OR REPLACE MODEL `your-project.ai_lab.timesfm_model`
REMOTE WITH CONNECTION `your-project.asia-northeast1.vertex-ai-conn`
OPTIONS (
...
연결(vertex-ai-conn) 생성 절차는 제2회(IAM・Vertex AI 연결 설정)를 참조해 주세요.
EC 판매량 주간 예측
지난 90일간의 일별 매출을 입력하여 향후 14일간의 예측값을 가져오는 예시입니다.
WITH daily_sales AS (
SELECT
'total' AS time_series_id,
...
horizon = 14로 14일 전까지 예측합니다. confidence_level = 0.9
는 90% 예측 구간을 계산합니다.
상품 카테고리별 매출 예측 (다중 시계열)
time_series_id에 상품 카테고리를 사용하여 다중 시계열을 일괄 처리하는 예시입니다.
WITH category_daily AS (
SELECT
category AS time_series_id,
...
다중 시계열을 동시에 처리할 수 있어, 카테고리별로 별도의 쿼리를 실행해야 하는 번거로움이 줄어듭니다.
GA4 세션 수 예측
GA4의 일일 세션 수를 예측하는 예시입니다. ga_session_id는 UNNEST(event_params)를 사용하여 추출하며, 유입 경로는 collected_traffic_source.manual_medium을 사용합니다.
WITH session_events AS (
SELECT
event_date,
...
예측 결과를 테이블에 저장하여 대시보드와 연동하기
Looker Studio에서 예측 그래프를 표시하기 위해 스케줄 쿼리로 예측 결과를 저장합니다.
CREATE OR REPLACE TABLE `your-project.your_dataset.sales_forecast_daily` AS
WITH daily_sales AS (
SELECT
...
이 테이블을 스케줄 쿼리로 매일 아침 업데이트하면, Looker Studio 측의 설정을 변경할 필요 없이 예측 값이 항상 최신 상태로 유지됩니다.
정확도 검증: 예측값과 실적값 비교
전날의 예측값과 실적값을 비교하여 예측 정확도를 지속적으로 모니터링합니다.
WITH actuals AS (
SELECT
DATE(order_date) AS actual_date,
...
mape(평균 절대 퍼센트 오차)와 예측 구간 커버율을 정기적으로 확인하고, 정확도가 떨어지면 과거 데이터의 범위를 넓히거나 ARIMA_PLUS로 전환하는 것을 고려합니다.
AI.FORECAST의 제약 및 주의사항
입력 데이터 요구 사항
- 등간격 타임스탬프를 가정함 (일별/주별/월별)
- 결측일이 있는 경우 0으로 보완하거나, 결측 행을 제외한 후 입력해야 함
- 시계열 자체가 너무 짧으면(수십 포인트 이하) 예측 정확도가 떨어지기 쉬움
장기 예측에는 적합하지 않음
horizon을 크게 할수록 예측 구간이 넓어지고, 실용적인 정확도를 유지할 수 있는 기간은 제한적입니다. 중소형 EC의 일일 데이터라면 2~4주 전이 현실적인 상한선 기준이 될 수 있습니다.
외부 요인을 반영할 수 없음
세일 시작, 광고 예산 증가, 계절 이벤트 등의 스파이크를 사전에 학습하지 않았기 때문에, 외부 요인에 의한 급변을 예측에 포함할 수 없습니다. 이러한 특수한 변동을 고려하고 싶다면 ARIMA_PLUS의 holiday_region 지정이나 외부 회귀 변수를 사용하는 것이 더 적합합니다.
비용 관리
AI.FORECAST는 호출할 때마다 토큰 환산으로 비용이 발생합니다.
| 대책 | 방법 |
|---|---|
| 시계열 수 제한 | 모든 상품 SKU가 아닌 카테고리 단위로 예측하기 |
| ... | |
| 일별로 1~수 개 시계열을 예측하는 규모라면 월 몇백 원 수준으로 해결되는 경우가 많습니다. 시계열 수가 늘어날 경우 사전에 쿼리 프리뷰에서 처리 바이트 수를 확인해 주세요. |
요약
AI.FORECAST는 TimesFM을 사용하여 모델 학습 없이 제로샷(zero-shot) 시계열 예측을 수행합니다.time_series_id,time_series_timestamp,time_series_data의 3개 열만 갖추면 작동합니다. 다중 시계열 처리가 가능하여 상품 카테고리별, 유입 경로별 등의 예측에 대응할 수 있습니다.- 결과는 스케줄 쿼리로 테이블에 저장하고 대시보드와 연동하는 것이 기본입니다.
- 정확도 검증은 MAPE와 예측 구간 커버율로 정기적으로 확인해야 합니다.
- 외부 요인이나 장기 예측이 필요한 경우에는 ARIMA_PLUS가 계속해서 유력합니다.
다음(제15회) 시간에는 ObjectRef를 사용하여 이미지나 PDF 같은 비정형 데이터를 SQL에서 처리하는 방법을 설명하겠습니다.
참고
- AI.FORECAST function | BigQuery | Google Cloud Documentation
- TimesFM overview | Google Cloud
- Forecast time series data by using AI.FORECAST | Google Cloud
코코나라(coconala)의 의뢰는 여기로 → GA4×BigQuery 기반 구축 서비스
논의 (Discussion)

AI 자동 생성 콘텐츠
본 콘텐츠는 Zenn AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기