인구 동태 인사이트 삽입 사용

정답 데이터 준비

인구 역학 임베딩을 사용하려면 정답 데이터를 지원되는 지리적 경계로 집계해야 합니다. 전 세계적으로 행정 경계 유형이 다르므로 범용 수학적 그리드 시스템 (예: S2 셀) 또는 현지 행정 구역 (예: 특정 국가 데이터 세트에 따라 카운티 또는 구)을 사용하여 데이터를 정렬할 수 있습니다.

옵션 1: 기존 모델에 임베딩 통합

  • 기존 모델 기반 정답 준비: 임베딩을 지리공간 공변량으로 사용하여 기존 모델을 개선합니다.
  • 오류 수정 모델 학습: 원래 모델 출력, 예상 값 또는 정답, 임베딩을 가져와 새로운 오류 수정 모델을 학습하는 모델에 임베딩을 통합하여 기존 모델을 개선합니다.

옵션 2: 특정 사용 사례에 맞게 조정

  • 예측 모델 선택: GBDT, MLP 또는 선형과 같은 모든 모델을 예측에 사용할 수 있습니다.
  • 예측에 임베딩 사용: 인구 역학 임베딩을 다른 컨텍스트 데이터와 함께 입력 특성으로 사용하여 예측 정확도를 개선합니다.

쿼리 예시

your-project.your_dataset.embeddings_table을 실제 프로젝트, 데이터 세트, 대상 테이블 이름으로 바꿉니다.

SQL: 임베딩 가져오기

이 쿼리는 프로비저닝된 데이터 세트에서 S2 셀의 임베딩 벡터와 관리 메타데이터를 가져옵니다.

SELECT
  geo_id,
  administrative_area_level_1_name AS state,
  administrative_area_level_2_name AS county,
  features -- The 330-dim vector
FROM
  `your-project.your_dataset.embeddings_table`
LIMIT 10;

SQL: 유사한 위치 찾기

이 쿼리는 외부 데이터 없이 행동이 유사한 위치를 식별합니다.

ML.DISTANCE 함수를 사용하여 코사인 유사성을 계산하고 대상 S2 셀의 상위 일치 항목을 반환합니다. 이 접근 방식은 성공적인 기존 위치의 프로필을 기반으로 새 매장을 열 위치를 결정하는 것과 같은 확장 계획 시나리오를 지원합니다.

WITH TargetLocation AS (
  SELECT features AS target_vector
  FROM `your-project.your_dataset.embeddings_table`
  -- Replace with your target S2 hex token (e.g., '80ead45')
  WHERE geo_id = 'YOUR_TARGET_S2_TOKEN'
)

SELECT
  t.geo_id,
  t.administrative_area_level_1_name AS state,
  t.administrative_area_level_2_name AS county,
  -- Calculate Similarity (1.0 is identical, 0.0 is dissimilar)
  (1 - ML.DISTANCE(t.features, p.target_vector, 'COSINE')) AS similarity_score
FROM
  `your-project.your_dataset.embeddings_table` t,
  TargetLocation p
WHERE
  t.geo_id != `YOUR_TARGET_S2_TOKEN` -- Exclude the target itself
ORDER BY
  similarity_score DESC
LIMIT 20;

SQL: 고객 데이터 조인

이 예에서는 행동 임베딩으로 자체 내부 데이터 (예: 매장 실적 테이블)를 보강하는 방법을 보여줍니다. 내부 데이터에 일치하는 S2 셀 토큰 (16진수 문자열)이 포함되어 있는지 확인합니다.

SELECT
  store.store_id,
  store.s2_token,
  store.total_revenue,
  embeddings.features AS pdfm_vector
FROM
  `your-project.internal_data.store_performance` AS store
JOIN
  `your-project.your_dataset.embeddings_table` AS embeddings
ON
  -- Join based on the S2 hex token string
  store.s2_token = embeddings.geo_id

Python: 머신러닝을 위한 데이터 로드

임베딩은 BigQuery 배열로 저장됩니다. ML 라이브러리에서 임베딩을 사용하려면 열을 NumPy 행렬로 변환해야 합니다.

from google.cloud import bigquery
import numpy as np
import pandas as pd

client = bigquery.Client()

query = """
    SELECT
        geo_id,
        features -- Returns as a list of floats
    FROM
        `your-project.your_dataset.embeddings_table`
    LIMIT 1000
"""

# 1. Load data into DataFrame
df = client.query(query).to_dataframe()

# 2. Convert the 'features' column (Series of Lists) into a Matrix (2D Array)
X_matrix = np.stack(df['features'].values)

print(f"Data Loaded. Matrix Shape: {X_matrix.shape}")
# Output: Data Loaded. Matrix Shape: (1000, 330)