人口動態の分析情報の埋め込みを使用する

グラウンド トゥルース データを準備する

人口動態エンベディングを使用するには、グラウンド トゥルース データをサポートされている地理的境界に集計する必要があります。行政境界の種類は世界中で異なるため、ユニバーサルな数学的グリッド システム(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: ML 用のデータを読み込む

エンベディングは 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)