이 튜토리얼에서는 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 함수는 단일 입력 테이블 또는 쿼리를 예상합니다.
다중 시계열 예측의 경우 데이터를 별도의 시계열로 구분하는 하나 이상의 식별자 열이 데이터에 포함되어야 합니다. 이 예에서 한 시계열에는 수령 위치 132 (JFK 공항)의 데이터가 포함되고 다른 시계열에는 수령 위치 138(라과르디아 공항)의 데이터가 포함됩니다. 데이터가 각 개별 시계열에 대해 다음 요구사항을 충족하는지 확인하세요.
- 이전 행: 타임스탬프, 타겟, 과거 공변량의 null이 아닌 값을 포함합니다.
이 예에서는 미래 공변량을 사용하지 않으므로 입력 쿼리에서 이전 데이터만 제공하면 됩니다. 입력 테이블에는 다음 데이터가 포함된 열이 있어야 합니다.
- 택시 이동 날짜입니다.
- 수령 위치: 132 또는 138
- 해당 날짜의 이동 횟수입니다. 타겟 열입니다.
- 해당 날짜의 평균 요금입니다. 타겟 열입니다.
- 해당 날짜의 평균 이동 거리입니다. 예측에 사용된 과거 공변량 열입니다.
여러 다변수 시계열 예측
다음 쿼리는 JFK 및 LaGuardia 픽업 구역의 향후 14일간의 일별 여행 수와 평균 요금을 예측합니다. past_cov_avg_distance를 역사적으로만 알려진 기능으로 정의합니다. 모델이 다양한 시계열을 구분하는 방법을 알 수 있도록 id_cols 인수를 제공해야 합니다.
다음 단계에 따라 TimesFM 3.0 모델로 데이터를 예측합니다.
Google Cloud 콘솔에서 BigQuery 페이지로 이동합니다.
쿼리 편집기에 다음 쿼리를 붙여넣고 실행을 클릭합니다.
SELECT pickup_location_id, FORMAT_DATE("%Y-%m-%d", pickup_date) AS pickup_date, # Extract the forecast value and prediction intervals for the number of trips target target_num_trips.value AS forecasted_num_trips, target_num_trips.prediction_interval_lower_bound AS num_trips_lower, target_num_trips.prediction_interval_upper_bound AS num_trips_upper, # Extract the forecast value and prediction intervals for the average fare target target_avg_fare.value AS forecasted_avg_fare, target_avg_fare.prediction_interval_lower_bound AS avg_fare_lower, target_avg_fare.prediction_interval_upper_bound AS avg_fare_upper FROM AI.FORECAST( ( SELECT DATE(pickup_datetime) AS pickup_date, pickup_location_id, COUNT(*) AS target_num_trips, AVG(fare_amount) AS target_avg_fare, AVG(trip_distance) AS past_cov_avg_distance FROM `bigquery-public-data.new_york_taxi_trips.tlc_yellow_trips_2022` WHERE pickup_datetime >= "2022-01-01" AND pickup_datetime < "2022-04-01" AND pickup_location_id IN ("132", "138") -- JFK and LaGuardia Airports GROUP BY 1, 2 ), model => "TimesFM 3.0", target_cols => ["target_num_trips", "target_avg_fare"], past_covariate_cols => ["past_cov_avg_distance"], timestamp_col => "pickup_date", id_cols => ["pickup_location_id"], horizon => 14 ) ORDER BY pickup_date;
결과는 다음과 비슷하며 명확성을 위해 값이 반올림됩니다.
+--------------------+-------------+----------------------+-----------------+-----------------+---------------------+----------------+----------------+
| pickup_location_id | pickup_date | forecasted_num_trips | num_trips_lower | num_trips_upper | forecasted_avg_fare | avg_fare_lower | avg_fare_upper |
+--------------------+-------------+----------------------+-----------------+-----------------+---------------------+----------------+----------------+
| 132 | 2022-04-01 | 5240 | 4633 | 5842 | 47 | 46 | 48 |
| 138 | 2022-04-01 | 3451 | 2848 | 4008 | 32 | 31 | 34 |
| ... | ... | ... | ... | ... | ... | ... | ... |
+--------------------+-------------+----------------------+-----------------+-----------------+---------------------+----------------+----------------+
결과에는 JFK 및 LaGuardia 승차 지역의 향후 14일간의 예상 이동 수와 평균 요금 금액이 표시됩니다. 결과에는 예측된 각 값의 95% 예측 간격의 하한과 상한도 포함됩니다.
삭제
이 튜토리얼에서 사용된 리소스 비용이 Google Cloud 계정에 청구되지 않도록 하려면 리소스가 포함된 프로젝트를 삭제하거나 프로젝트를 유지하고 개별 리소스를 삭제하세요.
프로젝트 삭제
- Google Cloud 콘솔에서 리소스 관리 페이지로 이동합니다.
- 프로젝트 목록에서 삭제할 프로젝트를 선택하고 삭제를 클릭합니다.
- 대화상자에서 프로젝트 ID를 입력한 후 종료를 클릭하여 프로젝트를 삭제합니다.
다음 단계
- BigQuery ML 개요는 BigQuery의 AI 및 ML 소개를 참고하세요.
- TimesFM 단변량 모델로 단일 또는 여러 시계열을 예측하는 방법을 알아보세요.
- TimesFM 다변량 모델로 단일 시계열을 예측하는 방법을 알아보세요.