이 튜토리얼에서는 BigQuery ML에 내장된 TimesFM 3.0 모델과 함께 AI.FORECAST 함수를 사용하여 단일 시계열에서 다변량 예측을 수행하는 방법을 알아봅니다. 다변량 예측은 타겟에 영향을 미치는 다른 변수를 통합하여 예측 정확도를 높이는 데 도움이 됩니다.
이 튜토리얼에서는 과거 거래 값 (과거 공변량)과 날짜가 주말인지 여부 (미래 공변량)를 통합하여 보드카와 위스키 판매량을 예측하는 방법을 보여줍니다.
목표
- 다변량 예측을 위한 단일 통합 데이터 세트를 준비합니다.
TimesFM 3.0모델과 함께AI.FORECAST함수를 사용하여 예측을 생성합니다.
비용
이 튜토리얼에서는 비용이 청구될 수 있는 다음과 같은 Google Cloud구성요소를 사용합니다.
- BigQuery
- BigQuery ML
자세한 내용은 BigQuery 가격 책정 및 BigQuery ML 가격 책정을 참고하세요.
시작하기 전에
- Google Cloud 계정에 로그인합니다. Google Cloud를 처음 사용하는 경우 계정을 만들고 Google 제품의 실제 성능을 평가해 보세요. 신규 고객에게는 워크로드를 실행, 테스트, 배포하는 데 사용할 수 있는 $300의 무료 크레딧이 제공됩니다.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
BigQuery API가 아직 사용 설정되지 않은 경우 사용 설정합니다.
API 사용 설정에 필요한 역할
API를 사용 설정하려면
serviceusage.services.enable권한이 필요합니다. 프로젝트를 만든 경우 소유자 역할 (roles/owner)을 통해 이 권한이 이미 있을 수 있습니다. 그렇지 않으면 서비스 사용량 관리자 역할 (roles/serviceusage.serviceUsageAdmin)을 통해 이 권한을 얻을 수 있습니다. 역할을 부여하는 방법 알아보기새 프로젝트에서는 BigQuery API가 자동으로 사용 설정됩니다.
필요한 역할
이 튜토리얼의 작업을 완료하는 데 필요한 권한을 얻으려면 관리자에게 다음 IAM 역할을 부여해 달라고 요청하세요.
-
데이터 세트 만들기: BigQuery 데이터 편집자 (
roles/bigquery.dataEditor) -
모델을 만듭니다.
- BigQuery 데이터 편집자 (
roles/bigquery.dataEditor) - BigQuery 작업 사용자 (
roles/bigquery.jobUser)
- BigQuery 데이터 편집자 (
-
추론을 실행합니다.
- BigQuery 데이터 편집자 (
roles/bigquery.dataEditor) - BigQuery 작업 사용자 (
roles/bigquery.jobUser)
- BigQuery 데이터 편집자 (
역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.
이러한 사전 정의된 역할에는 이 튜토리얼의 작업을 완료하는 데 필요한 권한이 포함되어 있습니다. 필요한 정확한 권한을 보려면 필수 권한 섹션을 펼치세요.
필수 권한
이 튜토리얼의 작업을 완료하려면 다음 권한이 필요합니다.
-
데이터 세트를 만듭니다.
bigquery.datasets.create -
모델을 만듭니다.
-
bigquery.jobs.create -
bigquery.models.create -
bigquery.models.getData -
bigquery.models.updateData
-
-
추론을 실행합니다.
-
bigquery.models.getData -
bigquery.jobs.create
-
커스텀 역할이나 다른 사전 정의된 역할을 사용하여 이 권한을 부여받을 수도 있습니다.
BigQuery에서 IAM 역할 및 권한에 대한 자세한 내용은 IAM 소개를 참조하세요.입력 데이터 준비
이전 및 향후 공변량에 별도의 테이블이 필요할 수 있는 다른 다변량 모델과 달리 TimesFM 3.0이 있는 AI.FORECAST 함수는 단일 입력 테이블 또는 쿼리를 예상합니다.
예측을 실행하기 전에 데이터가 다음 요구사항을 충족하는지 확인하세요.
- 이전 행: 타임스탬프, 타겟, 과거 공변량의 null이 아닌 값을 포함합니다.
- 미래 행: 타임스탬프와 미래 공변량에 대해서만 null이 아닌 값을 포함합니다.
이러한 향후 행의 경우 타겟 열과 과거 공변량 열을
NULL로 설정해야 합니다.
입력 테이블에는 다음 데이터가 포함된 열이 있어야 합니다.
- 판매 날짜입니다.
- 해당 날짜에 판매된 보드카 병 수입니다. 타겟 열입니다.
- 해당 날짜에 판매된 위스키 병 수입니다. 타겟 열입니다.
- 해당 날짜의 평균 거래 금액입니다. 예측에 사용된 과거 공변량입니다.
- 날짜가 주말인지 여부입니다. 예측에 사용되는 미래 공변량입니다.
단일 다변량 시계열 예측
다음 쿼리는 2023년 7월 첫 2주 동안 2633번 매장에서 판매된 보드카와 위스키 병 수를 예측합니다. 평균 거래 가치를 과거 공변량으로 사용하고 날짜가 주말인지 여부를 미래 공변량으로 사용합니다.
다음 단계에 따라 TimesFM 3.0 모델로 데이터를 예측합니다.
Google Cloud 콘솔에서 BigQuery 페이지로 이동합니다.
쿼리 편집기에 다음 쿼리를 붙여넣고 실행을 클릭합니다.
WITH historical_sales AS ( SELECT date AS sales_date, store_number, SUM(CASE WHEN category_name LIKE '%VODKA%' THEN bottles_sold ELSE 0 END) AS vodka_bottles, SUM(CASE WHEN category_name LIKE '%WHISKEY%' THEN bottles_sold ELSE 0 END) AS whiskey_bottles, AVG(sale_dollars) AS avg_transaction_value, -- Past covariate IF(EXTRACT(DAYOFWEEK FROM date) IN (1, 7), 1.0, 0.0) AS is_weekend -- Future covariate FROM `bigquery-public-data.iowa_liquor_sales.sales` WHERE date BETWEEN '2023-01-01' AND '2023-06-30' AND store_number = '2633' GROUP BY sales_date, store_number ), future_horizon AS ( SELECT future_date AS sales_date, store_number, CAST(NULL AS INT64) AS vodka_bottles, CAST(NULL AS INT64) AS whiskey_bottles, CAST(NULL AS FLOAT64) AS avg_transaction_value, IF(EXTRACT(DAYOFWEEK FROM future_date) IN (1, 7), 1.0, 0.0) AS is_weekend FROM UNNEST(GENERATE_DATE_ARRAY('2023-07-01', '2023-07-14')) AS future_date CROSS JOIN (SELECT DISTINCT store_number FROM historical_sales) ), combined_sales AS ( SELECT * FROM historical_sales UNION ALL SELECT * FROM future_horizon ) SELECT FORMAT_DATE('%Y-%m-%d', sales_date) AS sales_date, vodka_bottles.value AS vodka_value, vodka_bottles.prediction_interval_lower_bound AS vodka_lower, vodka_bottles.prediction_interval_upper_bound AS vodka_upper, whiskey_bottles.value AS whiskey_value, whiskey_bottles.prediction_interval_lower_bound AS whiskey_lower, whiskey_bottles.prediction_interval_upper_bound AS whiskey_upper FROM AI.FORECAST( TABLE combined_sales, model => 'TimesFM 3.0', timestamp_col => 'sales_date', target_cols => ['vodka_bottles', 'whiskey_bottles'], past_covariate_cols => ['avg_transaction_value'], future_covariate_cols => ['is_weekend'], id_cols => ['store_number'], horizon => 14, confidence_level => 0.90 );
출력은 다음과 비슷하며 명확성을 위해 값이 반올림됩니다.
+------------+-------------+-------------+-------------+---------------+---------------+---------------+
| sales_date | vodka_value | vodka_lower | vodka_upper | whiskey_value | whiskey_lower | whiskey_upper |
+------------+-------------+-------------+-------------+---------------+---------------+---------------+
| 2023-07-01 | 408 | -334 | 1977 | 21 | -34 | 113 |
| 2023-07-02 | 806 | -281 | 2992 | 29 | -23 | 149 |
| ... | ... | ... | ... | ... | ... | ... |
+------------+-------------+-------------+-------------+---------------+---------------+---------------+
삭제
이 튜토리얼에서 사용된 리소스 비용이 Google Cloud 계정에 청구되지 않도록 하려면 리소스가 포함된 프로젝트를 삭제하거나 프로젝트를 유지하고 개별 리소스를 삭제하세요.
프로젝트 삭제
- Google Cloud 콘솔에서 리소스 관리 페이지로 이동합니다.
- 프로젝트 목록에서 삭제할 프로젝트를 선택하고 삭제를 클릭합니다.
- 대화상자에서 프로젝트 ID를 입력한 후 종료를 클릭하여 프로젝트를 삭제합니다.
다음 단계
- BigQuery ML 개요는 BigQuery의 AI 및 ML 소개를 참고하세요.
- TimesFM 단변량 모델로 단일 또는 여러 시계열을 예측하는 방법을 알아보세요.
- TimesFM 다변량 모델로 여러 시계열을 예측하는 방법을 알아보세요.