개발자 문서
상품 설명
인구 통계 통계 (PDI)는 인간 행동과 환경과의 상호작용에 관한 데이터를 특정 위치에서 간결하고 분석 준비가 된 삽입 (또는 '디지털 지문')으로 추출하는 삽입 데이터 세트입니다.
이러한 삽입은 검색 트렌드, 혼잡도 트렌드, 환경 조건 (지도, 공기질, 날씨)과 같은 집계된 데이터의 패턴을 포착하여 인구가 주변 환경과 상호작용하는 방식에 관한 풍부한 위치별 스냅샷을 제공합니다. 공간과 시간에 걸쳐 집계된 이러한 삽입은 개인 정보를 보호하면서 공중 보건에서 사회경제적 모델링에 이르기까지 다양한 애플리케이션을 위한 미묘한 공간 분석과 예측을 지원합니다.
제품 개요
인구 통계 임베딩은 풍부한 기능 집합으로 학습되고 축약된 벡터 표현으로 변환된 맞춤형 머신러닝 모델을 사용하여 생성됩니다. 이러한 임베딩은 다음을 기반으로 학습되고 생성됩니다.
- 집계된 검색 동향: 검색 데이터에 반영된 지역별 관심사와 우려사항입니다.
- 집계된 지도 데이터 (혼잡도 포함): 지역의 편의시설, 서비스, 비즈니스와 현지 방문 트렌드
- 집계된 날씨 및 공기질: 온도, 공기질 등 기후 관련 측정항목입니다.
이러한 기능은 우편번호 수준에서 집계되어 개인 정보를 보호하는 현지화된 컨텍스트 인식 임베딩을 생성합니다. PDI는 지속적인 시계열 데이터 세트이며, 새 데이터 슬라이스가 매월 처리되고 파티셔닝됩니다. 데이터는 다음 달의 마지막 날까지 새로고침되어 데이터 표에 추가됩니다 (예: 2월 데이터는 3월 31일까지 게시됨).
기본 요건
인구 통계 임베딩에 액세스하려면 액세스 권한이 부여되어야 합니다. 액세스 권한이 없는 경우 영업 또는 고객 엔지니어링 담당자에게 문의하세요.
- Cloud 콘솔에서 Analytics Hub API를 사용 설정합니다.
- Cloud 콘솔에서 BigQuery API를 사용 설정합니다.
- BigQuery 제품에 대한 실무 지식이 있어야 합니다.
- 구독자 작업을 수행하려면 계정에 Analytics Hub 구독 소유자(
roles/analyticshub.subscriptionOwner) 역할이 있어야 합니다. - 데이터 세트를 만들 수 있는 BigQuery 사용자 (
roles/bigquery.user) 역할이 계정에 있는지 확인합니다.
추천 교육
삽입 또는 BigQuery 머신러닝을 처음 사용하는 경우 분석을 시작하기 전에 다음 학습 자료를 완료하는 것이 좋습니다.
- 머신러닝 단기 집중 과정: 임베딩: 머신러닝 모델이 임베딩을 사용하여 의미론적 관계를 유지하면서 고차원 데이터를 저차원 공간으로 변환하는 방법을 간략하게 설명하는 기초 과정입니다.
- 벡터 검색 및 임베딩 시작하기: 벡터 임베딩, 의미 유사성, 더 광범위한 Google Cloud 생태계 내에서 임베딩을 활용하는 방법을 소개하는 실용적인 Google Cloud Skills Boost 실습입니다.
- BigQuery 머신러닝 (BQML) 튜토리얼: PDI 데이터 세트가 BigQuery에 호스팅되므로 데이터를 내보낼 필요 없이 표준 SQL을 사용하여 임베딩에서 직접 머신러닝 모델을 학습시키고 실행할 수 있습니다.
임베딩 사용
데이터 이해하기
분석을 시작하기 전에 스키마 구조를 잠시 살펴보세요.
데이터 세트 구성
임베딩은 국가 또는 테스트 리전별로 별도의 BigQuery 테이블로 구성됩니다.
임베딩 벡터의 구조
features 열은 330차원 벡터입니다 (BigQuery에 REPEATED FLOAT 배열로 저장됨). 배열의 각 섹션은 인구 역학 모델에서 추출한 특정 데이터 신호에 해당합니다.
이 구조를 이해하면 기능 제거 (예: 검색 행동이 날씨에 비해 판매를 얼마나 예측하는지 결정)가 가능합니다.
| 벡터 색인 | 데이터 소스 | 설명 |
|---|---|---|
| 0~127 | 집계된 검색어 트렌드 | 지역별 관심분야와 우려사항을 포착합니다 (예: '헬스장', '독감 증상', '명품' 검색). |
| 128~255 | 지도 및 혼잡도 | 관심 장소를 보여주기 위해 건물 환경 (병원, 공원, 학교와 같은 관심 장소)과 사람의 방문을 포착합니다. |
| 256~329 | 날씨 및 공기질 | 환경 컨텍스트 (온도, 강수량, 공기질)를 캡처합니다. |
키 열 및 메타데이터
삽입 테이블에는 지리 공간 분석, 필터링, 다른 서비스와의 상호 운용성을 지원하는 공간 및 시간 메타데이터가 포함되어 있습니다.
단일 우편번호가 때때로 행정 경계(예: 카운티 경계)를 교차할 수 있으므로 행정 구역 필드는 배열로 제공됩니다.
geo_id: 이 우편번호와 연결된 고유한 장소 ID입니다.geo_name: 지역의 우편번호 문자열입니다 (예:'90210').administrative_area_level_1_names: 최상위 경계의 사람이 읽을 수 있는 이름 목록 (ARRAY<STRING>)(예:['California'])administrative_area_level_1_ids: 이 우편번호가 교차하는 최상위 행정 경계 (예: 주 또는 도)의 고유한 장소 ID 목록(ARRAY<STRING>)입니다.administrative_area_level_2_names: 보조 경계의 사람이 읽을 수 있는 이름 목록 (ARRAY<STRING>)(예:['Los Angeles County'])administrative_area_level_2_ids: 이 우편번호가 교차하는 보조 행정 경계의 고유 장소 ID 목록 (ARRAY<STRING>)(예: 카운티 또는 지구)features: 핵심 330차원 임베딩 벡터로,ARRAY<FLOAT64>로 기본적으로 저장됩니다. Python을 사용하여 Pandas에 이를 로드하려면 NumPy 행렬로 평탄화하거나 변환해야 합니다.snapshot_date:YYYY-MM-DD로 형식이 지정된DATE로, 월의 첫 번째 날만 사용하도록 표준화됩니다. 입력 기능이 집계되어 임베딩 데이터를 생성한 특정 월별 시간 슬라이스를 나타냅니다. 예를 들어 2026년 4월의 데이터는2026-04-01형식으로 지정됩니다.
정답 데이터 준비
인구 역학 임베딩을 사용하려면 정답 데이터가 지원되는 지리적 경계 (우편번호)로 집계되어야 합니다.
옵션 1: 기존 모델에 임베딩 통합
- 기존 모델 기반 사실 준비: 임베딩을 지리공간 공변량으로 사용하여 기존 모델을 개선합니다.
- 오류 수정 모델 학습: 임베딩을 원래 모델 출력, 예상 값 또는 정답, 임베딩을 입력으로 받아 새로운 오류 수정 모델을 학습하는 모델에 통합하여 기존 모델을 개선합니다.
옵션 2: 특정 사용 사례에 맞게 조정
- 예측 모델 유형 선택: GBDT, MLP, 선형과 같은 모델을 예측에 사용할 수 있습니다.
- 예측에 삽입 사용: 인구 통계 삽입을 다른 컨텍스트 데이터와 함께 입력 기능으로 사용하여 예측 정확도를 개선합니다.
빠른 시작 코드 스니펫
이 스니펫을 사용하여 액세스 권한을 확인하고 데이터 형식을 파악하세요.
1. SQL: 특정 월의 임베딩 가져오기
PDI는 시계열 데이터 세트이므로 일반적으로 snapshot_date로 필터링하여 여러 달에 걸쳐 중복된 우편번호가 반환되지 않도록 해야 합니다. 날짜는 항상 -01로 설정해야 합니다.
SELECT
snapshot_date,
geo_name AS postal_code,
geo_id AS place_id,
features -- The 330-dim vector
FROM
`your-project.population_dynamics___us___domestic.v1_postal_code.embeddings_table`
WHERE
snapshot_date = '2025-10-01' -- You must use the first of the month ('-01')
LIMIT 10;
2. SQL: 행정 구역별 필터링 (배열의 중첩 해제)
우편번호는 여러 행정 경계에 걸쳐 있을 수 있으므로 administrative_area_* 필드는 배열로 저장됩니다. 특정 주 (예: '캘리포니아') 내의 모든 우편번호를 필터링하려면 BigQuery의 UNNEST() 함수를 사용해야 합니다.
SELECT
snapshot_date,
geo_name AS postal_code,
admin1_name
FROM
your-project.population_dynamics___us___domestic.v1_postal_code.embeddings_table,
UNNEST(administrative_area_level_1_names) AS admin1_name
WHERE
-- On or after October 2025
snapshot_date >= '2025-10-01' -- You must use the first of the month ('-01')
AND admin1_name = 'California'
LIMIT 10;
3. SQL: 유사한 위치 찾기
이 쿼리는 외부 데이터 없이 행동이 유사한 위치를 식별합니다. ML.DISTANCE 함수를 사용하여 코사인 유사도를 계산하고 타겟 우편번호의 상위 일치 항목을 반환합니다.
WITH TargetLocation AS (
SELECT features AS target_vector
FROM `your-project.population_dynamics___us___domestic.v1_postal_code.embeddings_table`
WHERE snapshot_date = '2025-10-01' -- You must use the first of the month ('-01')
AND geo_name = '90210' -- Replace with your target postal code
LIMIT 1
)
SELECT
t.geo_name AS postal_code,
-- 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.population_dynamics___us___domestic.v1_postal_code.embeddings_table` t,
TargetLocation p
WHERE
t.snapshot_date = '2025-10-01' -- You must use the first of the month ('-01')
AND t.geo_name != '90210' -- Exclude the target itself
ORDER BY
similarity_score DESC
LIMIT 20;
4. SQL: 고객 데이터 조인
이 예에서는 우편번호를 기준으로 조인하여 행동 임베딩으로 자체 내부 데이터 (예: 매장 실적 표)를 보강하는 방법을 보여줍니다.
SELECT
store.store_id,
store.postal_code,
store.total_revenue,
embeddings.features AS pdi_vector
FROM
`your-project.internal_data.store_performance` AS store
JOIN
`your-project.population_dynamics___us___domestic.v1_postal_code.embeddings_table` AS embeddings
ON
store.postal_code = embeddings.geo_name
WHERE
embeddings.snapshot_date = '2025-10-01' -- You must use the first of the month ('-01')
5. Python: 머신러닝을 위한 데이터 로드
임베딩은 BigQuery 배열로 저장됩니다. ML 라이브러리에서 사용하려면 열을 NumPy 행렬로 변환해야 합니다.
from google.cloud import bigquery
import numpy as np
import pandas as pd
client = bigquery.Client()
query = """
SELECT
geo_name,
features -- Returns as a list of floats
FROM
`your-project.population_dynamics___us___domestic.v1_postal_code.embeddings_table`
WHERE
snapshot_date = '2025-10-01' -- You must use the first of the month ('-01')
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)
자주 묻는 질문(FAQ)
원시 입력 데이터 (예: 특정 검색어 또는 이동성 추적)에 액세스할 수 있나요?
아니요. 인구 통계 임베딩은 집계된 개인 정보 보호 신호에서 생성됩니다. 사용자 개인 정보를 보호하기 위해 Google은 구체적인 사용자 추적, 개별 검색 기록 또는 원시 이동 패턴을 제공하지 않습니다. 삽입은 원시 분석이 아닌 모델링 및 예측에 최적화된 이러한 동작의 잠재적 표현을 제공합니다.
임베딩을 생성하는 데 사용되는 검색어는 어떻게 선택하나요?
원시 검색어 대신 지식 그래프 (KG) 항목을 사용합니다. 예를 들어 '테일러 스위프트 남자친구'와 'KC 타이트 엔드'라는 질문은 모두 동일한 기본 KG 항목 ('트래비스 켈시')에 매핑됩니다. 이 접근 방식은 언어에 구애받지 않고 더 광범위한 의미론적 카테고리를 포착하며 개인 정보 보호를 크게 향상합니다.
벡터 차원을 해석할 수 있나요 (예: 차원 5가 '커피'인가요)?
아니요. 벡터는 잠재적 표현입니다. 기계 학습 모델이 기능을 학습하므로 최종 벡터 색인에서 특정 소스 입력으로의 간단한 의미론적 매핑이나 일대일 변환은 없습니다. 어떤 색인 블록이 어떤 데이터 세트에서 파생되는지 (예: 색인 0~127은 검색 트렌드를 나타냄)는 알 수 있지만 색인 5와 같은 특정 색인은 단일 키워드에 매핑되지 않습니다. 대신 모델이 학습한 복잡한 추상적 특징을 나타냅니다.
데이터 세트에 다각형 경계 (Shapefile)가 포함되어 있나요?
아니요. 데이터 세트는 우편번호 (geo_name)와 연결된 장소 ID(geo_id)를 제공하지만 원시 다각형 지오메트리 (예: WKT)는 포함하지 않습니다.
사용 사례에 따라 다음 접근 방식을 사용하는 것이 좋습니다.
- Google 지도 시각화: geo_id에 제공된 장소 ID를 사용하여 데이터 기반 스타일 지정을 통해 지도에서 경계를 직접 스타일 지정하고 렌더링할 수 있습니다. 이러한 경계는 시각적 표시에는 적합하지만 원시 형상 파일로 내보낼 수는 없습니다.
- 공간 조인 및 분석: 원시 공간 다각형이 필요한 경우 geo_name 우편번호를 사용하여 이 데이터 세트를 공개 경계 데이터 세트 (예: BigQuery 공개 데이터 세트에서 제공되는 데이터 세트)와 조인하는 것이 좋습니다.
임베딩 데이터 세트의 시간 창은 무엇인가요?
PDI 삽입은 데이터 세트에 매달 새로운 달이 추가되면서 업데이트됩니다. 데이터는 snapshot_date 열 (YYYY-MM-DD로 형식 지정)을 사용하여 표시되며, 해당 월의 위치에 대한 행동 및 물리적 지문을 반영하는 안정적인 기준을 제공합니다.