人口動態洞察 - 美國郵遞區號

開發人員說明文件

產品說明

人口動態洞察 (PDI) 是嵌入式資料集,可將人類行為和我們與環境互動的資料,提煉成特定位置的簡潔、可供分析的嵌入式資料 (或「數位指紋」)。

這些嵌入內容會擷取匯總資料中的模式,例如搜尋趨勢、繁忙度趨勢和環境狀況 (地圖、空氣品質、天氣),提供豐富的特定地點快照,瞭解人口與周遭環境的互動情形。這些嵌入內容會隨時間和空間匯總,確保隱私權,同時支援細緻的空間分析和預測,適用於公共衛生到社會經濟模型等各種應用程式。

產品總覽

人口動態嵌入內容是使用專用機器學習模型生成,該模型經過豐富的特徵集訓練,並轉換為精簡的向量表示法。這些嵌入內容是根據下列項目訓練及產生:

  • 匯總搜尋趨勢:搜尋資料反映的區域興趣和疑慮。
  • 匯總地圖資料 (包括繁忙度):區域內的設施、服務和商家,以及當地造訪趨勢。
  • 天氣和空氣品質彙整資料:與氣候相關的指標,包括溫度和空氣品質。

這些特徵會匯總至郵遞區號層級,產生可保留隱私權的在地化、情境感知嵌入。PDI 是持續性的時間序列資料集,每月都會處理及分割新的資料切片。資料會在下一個日曆月的最後一天更新並附加至資料表 (例如,2 月資料最晚會在 3 月 31 日發布)。

必要條件

如要存取「人口動態」嵌入內容,您必須獲得授權。如果沒有相關存取權,請與您的銷售或客戶工程代表聯絡。

  • 在 Cloud Console 中啟用 Analytics Hub API。
  • 在 Cloud 控制台中啟用 BigQuery API。
  • 具備 BigQuery 產品的實用知識。
  • 確認您的帳戶具備 Analytics Hub 訂閱項目擁有者 (roles/analyticshub.subscriptionOwner) 角色,可執行訂閱者工作。
  • 確認您的帳戶具有 BigQuery 使用者 (roles/bigquery.user) 角色,可建立資料集。

如果您不熟悉嵌入或 BigQuery Machine Learning,強烈建議您先完成下列訓練教材,再開始分析:

  • 機器學習密集課程: 嵌入:這門基礎課程會快速概略說明機器學習模型如何使用嵌入,將高維度資料轉換為低維度空間,同時保留語意關係。
  • 開始使用向量搜尋和嵌入:實用的 Google Cloud Skills Boost 實驗室,介紹向量嵌入、語意相似度,以及如何在更廣泛的 Google Cloud 生態系統中使用嵌入。
  • BigQuery 機器學習 (BQML) 教學課程: 由於 PDI 資料集是託管在 BigQuery 中,因此您可以使用標準 SQL 直接在嵌入上訓練及執行機器學習模型,不必匯出資料。

使用嵌入

瞭解資料

開始分析前,請先花點時間查看結構定義結構。

資料集結構

每個國家/地區或測試區域的嵌入內容會整理成個別的 BigQuery 資料表。

嵌入向量剖析

features 資料欄是 330 維度的向量 (在 BigQuery 中儲存為 REPEATED FLOAT 陣列)。陣列的每個部分都對應至 Population Dynamics 模型擷取的特定資料信號。

瞭解這項結構有助於進行特徵消融研究 (例如,判斷搜尋行為與天氣相比,預測銷售量的準確度)。

向量索引 資料來源 說明
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-DDDATE,標準化為只使用當月的第一天。代表特定月份的時間切片,輸入特徵會從中匯總,以產生嵌入資料。舉例來說,2026 年 4 月的資料會以 2026-04-01 格式顯示。

準備真值資料

如要使用「人口動態」嵌入,必須將實際資料匯總至支援的地理邊界 (郵遞區號)。

方法 1:將嵌入併入現有模型

  1. 準備現有模型基礎真相:使用嵌入做為地理空間共變數,強化現有模型。
  2. 訓練錯誤修正模型:將嵌入內容整合至模型,並以原始模型輸出內容、預期值或實際資料,以及嵌入內容做為輸入,訓練新的錯誤修正模型,藉此改善現有模型。

方法 2:針對特定用途調整

  1. 選擇預測模型類型:任何模型 (例如 GBDT、MLP 或線性) 都可用於預測。
  2. 使用嵌入內容進行預測:將人口動態嵌入內容與其他情境資料一併做為輸入特徵,以提高預測準確度。

快速入門程式碼片段

請使用這些程式碼片段驗證存取權,並瞭解資料格式。

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 陣列。如要在機器學習程式庫中使用這些資料,您必須將資料欄轉換為 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)

常見問題

我可以存取原始輸入資料 (例如特定搜尋查詢或移動軌跡) 嗎?

不會。人口動態嵌入內容是根據匯總的隱私權保護信號產生,為確保使用者隱私,我們不會提供特定使用者軌跡、個人搜尋記錄或原始移動模式。這些嵌入內容提供這些行為的潛在表示法,經過最佳化調整,適用於模型化和預測,而非原始分析。

您如何選取用於生成嵌入的搜尋字詞?

我們使用知識圖譜 (KG) 實體,而非原始搜尋查詢。舉例來說,「taylor swift boyfriend」和「kc tight end」這類查詢都會對應到相同的基礎知識圖譜實體「Travis Kelce」。這種做法不限語言,可擷取更廣泛的語意類別,並大幅提升隱私權。

向量維度是否可解讀 (例如,維度 5 是否為「咖啡」)?

不會,向量是潛在表示法。由於特徵是由機器學習模型學習而來,因此無法從最終向量索引簡單地進行語意對應,或一對一轉換為特定來源輸入。我們知道哪些索引區塊來自哪些資料集 (例如,索引 0 到 127 代表搜尋趨勢),但特定索引 (例如索引 5) 並不會對應至單一關鍵字。而是代表模型學習到的複雜抽象特徵。

資料集是否包含多邊形界線 (Shapefile)?

不會。資料集提供郵遞區號 (geo_name) 和相關聯的地點 ID (geo_id),但不包含原始多邊形幾何圖形 (例如 WKT)。

視用途而定,我們建議採取下列做法:

  • 在 Google 地圖上顯示:您可以使用 geo_id 中提供的地點 ID,透過資料導向樣式直接在地圖上設定和算繪界線。這些邊界非常適合用於視覺化顯示, 但無法匯出為原始幾何檔案。
  • 空間連結和分析:如需原始空間多邊形,建議使用 geo_name 郵遞區號,將這個資料集與公開邊界資料集 (例如 BigQuery 公開資料集中的資料集) 連結。

嵌入資料集的時間範圍為何?

系統會在資料集附加每個月的新資料,並每月更新 PDI 嵌入。資料會以 snapshot_date 欄 (格式為 YYYY-MM-DD) 表示,提供穩定的基準,反映特定月份的地點行為和實體指紋。