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)