Préparer les données de vérité terrain
Pour utiliser les embeddings de dynamique de population, 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ématiques 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înez 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 de population comme caractéristiques d'entrée, en plus d'autres données contextuelles, pour améliorer la précision des prédictions.
Agrégation de limites personnalisée
Si vos données de vérité terrain utilisent des polygones personnalisés, tels que des codes postaux, des isochrones de temps de trajet ou des zones de chalandise, vous pouvez effectuer une agrégation de limites. Ce processus combine plusieurs vecteurs de cellules S2 en une seule représentation pour le polygone cible. Choisir la bonne méthodologie de pondération permet de s'assurer que l'embedding agrégé reflète précisément vos objectifs de modélisation en aval.
1. Moyenne pondérée par la population (paramètre par défaut recommandé pour l'IDP)
Utilisez l'agrégation pondérée par la population pour les cas d'utilisation axés sur l'humain, comme les performances des magasins ou la modélisation du comportement des consommateurs.
L'utilisation d'une agrégation spatiale pondérée par zone pour les données démographiques peut déformer vos caractéristiques de machine learning. Cela se produit lorsque des zones non peuplées, telles que des parcs, des zones industrielles ou des étendues d'eau, déforment le profil des résidents réels.
Pour résoudre ce problème, vous pouvez effectuer une moyenne pondérée par la population dans BigQuery. Cette approche utilise des ensembles de données démographiques haute résolution, tels que WorldPop dans le catalogue de données Earth Engine, pour calculer la densité précise de chaque segment de cellule S2 croisé.
Pour voir un exemple d'implémentation complet d'un workflow pondéré par la population, exécutez le notebook interactif.
2. Moyenne pondérée par zone
Pour les cas d'utilisation environnementaux ou physiques, utilisez plutôt l'agrégation pondérée par zone. Cela est utile pour l'analyse de l'utilisation des sols, les études sur l'environnement bâti ou la planification des infrastructures, où vous devez évaluer les régions indépendamment de la répartition de la population.
Dans ces scénarios, la superficie physique est plus pertinente que la densité de population humaine. Cela permet de s'assurer que chaque kilomètre carré à l'intérieur des limites du polygone contribue de manière égale au vecteur agrégé.
Avec cette méthode, le vecteur d'intégration de chaque cellule S2 constitutive est pondéré par la surface géographique qu'elle couvre dans le polygone cible.
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 des 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.
Il utilise la fonction ML.DISTANCE pour calculer la similarité cosinus et renvoyer les meilleures correspondances pour une cellule S2 cible. Cette approche prend en charge 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.
Pour visualiser les cellules S2 sur une carte, vous devez convertir ou joindre l'ID de cellule S2 à sa géométrie polygonale correspondante, car cet ensemble de données utilise des jetons de cellule S2 au lieu de points de latitude et de longitude.
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)
Exécuter dans Google Colab
Afficher la source sur GitHub