開發人員說明文件
產品說明
人口動態洞察 (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-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 陣列。如要在機器學習程式庫中使用這些資料,您必須將資料欄轉換為 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) 表示,提供穩定的基準,反映特定月份的地點行為和實體指紋。