Utiliser les embeddings Insights sur la dynamique démographique

Préparer les données de vérité terrain

Pour utiliser les embeddings de dynamique démographique, vos données de vérité terrain doivent être agrégées à une limite géographique acceptée. Étant donné que les types de limites administratives varient à l'échelle mondiale, vous pouvez aligner vos données à l'aide de systèmes de grille mathématique universels (comme les cellules S2) ou de régions administratives locales (comme les comtés ou les districts, selon l'ensemble de données du pays concerné).

Option 1 : Intégrer des embeddings dans un modèle existant

  • Préparez la vérité terrain existante basée sur un modèle : utilisez les embeddings comme covariables géospatiales pour améliorer un modèle existant.
  • Entraîner un modèle de correction des erreurs : améliorez un modèle existant en intégrant les embeddings dans un modèle qui prend en compte la sortie du modèle d'origine, la valeur attendue ou la vérité terrain, et les embeddings pour apprendre un nouveau modèle de correction des erreurs.

Option 2 : Optimiser pour des cas d'utilisation spécifiques

  • Choisissez un modèle de prédiction : n'importe quel modèle, tel que GBDT, MLP ou linéaire, peut être utilisé pour les prédictions.
  • Utilisez des embeddings pour la prédiction : utilisez les embeddings de la dynamique démographique comme caractéristiques d'entrée, en plus d'autres données contextuelles, pour améliorer la précision des prédictions.

Exemples de requêtes

Remplacez your-project.your_dataset.embeddings_table par le nom réel de votre projet, de votre ensemble de données et de votre table cible.

SQL : récupérer les embeddings

Cette requête récupère le vecteur d'embedding et les métadonnées administratives pour les cellules S2 de votre ensemble de données provisionné.

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 : trouver des lieux similaires

Cette requête identifie les lieux similaires en termes de comportement sans nécessiter de données externes.

Elle utilise la fonction ML.DISTANCE pour calculer la similarité cosinus et renvoyer les meilleures correspondances pour une cellule S2 cible. Cette approche est compatible avec les scénarios de planification de l'expansion, comme la détermination de l'emplacement d'un nouveau magasin en fonction du profil d'un établissement existant performant.

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 : joindre les données client

Cet exemple montre comment enrichir vos propres données internes (par exemple, un tableau des performances des magasins) avec des embeddings comportementaux. Assurez-vous que vos données internes incluent des jetons de cellule S2 correspondants (chaînes hexadécimales).

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 : charger des données pour le machine learning

Les embeddings sont stockés sous forme de tableaux BigQuery. Pour les utiliser dans des bibliothèques de ML, vous devez convertir la colonne en matrice 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)