準備真值資料
如要使用人口動態嵌入,真實資料必須匯總至支援的地理邊界。由於全球各地的行政邊界類型不盡相同,您可以選擇使用通用數學格線系統 (例如 S2 儲存格) 或當地行政區域 (例如縣市或區,視特定國家/地區的資料集而定),對齊資料。
方法 1:將嵌入併入現有模型
- 準備現有模型基礎真值:使用嵌入做為地理空間共變數,以強化現有模型。
- 訓練錯誤修正模型:將嵌入項目整合至模型,藉此改善現有模型。這個模型會採用原始模型輸出內容、預期值或實際資料,以及嵌入項目,藉此學習新的錯誤修正模型。
選項 2:針對特定用途調整
- 選擇預測模型:任何模型 (例如 GBDT、MLP 或線性) 都可用於預測。
- 使用嵌入進行預測:將人口動態嵌入做為輸入特徵,搭配其他情境資料,提高預測準確度。
自訂邊界匯總
如果實際資料使用自訂多邊形 (例如郵遞區號、開車時間等時線或商圈),您可以執行邊界彙整。這個程序會將多個 S2 儲存格向量合併為目標多邊形的單一表示法。選擇合適的加權方法,可確保匯總的嵌入向量能準確反映下游的建模目標。
1. 以人口數加權的平均值 (建議做為 PDI 的預設值)
針對以人為本的使用情境 (例如零售商店成效或消費者行為建模),使用以人口加權的匯總資料。
如果對客層資料使用面積加權空間匯總,可能會扭曲機器學習特徵。如果公園、工業區或水域等無人居住的區域扭曲了實際居民的輪廓,就會發生這種情況。
如要解決這個問題,您可以在 BigQuery 中執行以人口數加權的平均值。這種方法會使用高解析度的人口統計資料集,例如 Earth Engine 資料目錄中的 WorldPop,計算每個相交 S2 儲存格區隔的精確密度。
如要查看以母體加權工作流程的完整實作範例,請執行互動式筆記本。
2. 面積加權平均值
如果是環境或實體用途,請改用以面積加權的匯總。這項功能適用於土地使用分析、建築環境研究或基礎架構規劃,您必須評估區域,不論人口分布情況為何。
在這些情況下,實體土地面積比人口密度更重要。這可確保多邊形界線內的每個平方公里,對匯總向量的貢獻度都相同。
採用這種方法時,系統會根據每個組成 S2 網格在目標多邊形內涵蓋的地理表面積,加權計算嵌入向量。
查詢範例
請將 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 儲存格最相符的結果。這種做法可支援擴展規劃情境,例如根據現有成功地點的設定檔,判斷要在何處開設新商店。
如要在地圖上顯示 S2 儲存格,您必須將 S2 儲存格 ID 轉換或加入對應的多邊形幾何圖形,因為這個資料集使用 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 儲存格權杖 (十六進位字串)。
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 陣列。如要在機器學習程式庫中使用這些資料,您必須將資料欄轉換為 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)
在 Google Colab 中執行
在 GitHub 上查看來源