Utilizzare gli incorporamenti degli approfondimenti sulle dinamiche della popolazione

Prepara i dati di riferimento

Per utilizzare gli incorporamenti di Dinamiche della popolazione, i dati empirici reali devono essere aggregati in un confine geografico supportato. Poiché i tipi di confini amministrativi variano a livello globale, puoi allineare i dati utilizzando sistemi di griglie matematiche universali (come le celle S2) o regioni amministrative locali (come contee o distretti, a seconda del set di dati specifico del paese).

Opzione 1: incorpora gli embedding in un modello esistente

  • Prepara i dati di riferimento esistenti basati sul modello: utilizza gli incorporamenti come covariate geospaziali per migliorare un modello esistente.
  • Addestra un modello di correzione degli errori: migliora un modello esistente integrando gli incorporamenti in un modello che prende l'output del modello originale, il valore previsto o i dati di riferimento e gli incorporamenti per apprendere un nuovo modello di correzione degli errori.

Opzione 2: ottimizza per casi d'uso specifici

  • Scegli un modello di previsione: per le previsioni è possibile utilizzare qualsiasi modello, ad esempio GBDT, MLP o lineare.
  • Utilizza gli incorporamenti per la previsione: utilizza gli incorporamenti di dinamiche della popolazione come funzionalità di input, insieme ad altri dati contestuali, per migliorare l'accuratezza della previsione.

Aggregazione personalizzata dei confini

Se i tuoi dati di riferimento utilizzano poligoni personalizzati, come codici postali, isocrone di tempo di guida o aree commerciali, puoi eseguire un'aggregazione dei confini. Questo processo combina più vettori di celle S2 in un'unica rappresentazione per il poligono di destinazione. La scelta del metodo di ponderazione corretto garantisce che l'incorporamento aggregato rifletta accuratamente i tuoi obiettivi di modellazione downstream.

Utilizza l'aggregazione ponderata in base alla popolazione per i casi d'uso incentrati sull'uomo, come il rendimento dei negozi al dettaglio o la modellazione del comportamento dei consumatori.

L'utilizzo di un'aggregazione spaziale ponderata per area per i dati demografici può distorcere le funzionalità di machine learning. Ciò si verifica quando aree non popolate, come parchi, zone industriali o specchi d'acqua, distorcono il profilo dei residenti effettivi.

Per risolvere il problema, puoi eseguire una media ponderata in base alla popolazione in BigQuery. Questo approccio utilizza set di dati demografici ad alta risoluzione, come WorldPop nel catalogo dei dati di Earth Engine, per calcolare la densità precisa di ogni segmento di cella S2 che si interseca.

Per visualizzare un esempio di implementazione completo di un workflow ponderato in base alla popolazione, esegui il notebook interattivo.

2. Media ponderata per area

Per i casi d'uso ambientali o fisici, utilizza invece l'aggregazione ponderata per area. È utile per l'analisi dell'uso del suolo, gli studi sull'ambiente costruito o la pianificazione delle infrastrutture in cui devi valutare le regioni indipendentemente dalla distribuzione della popolazione.

In questi scenari, la superficie fisica è più pertinente della densità di popolazione. In questo modo, ogni chilometro quadrato all'interno del confine del poligono contribuisce in egual misura al vettore aggregato.

Con questo metodo, il vettore di incorporamento di ogni cella S2 costituente viene ponderato in base all'area geografica che copre all'interno del poligono di destinazione.

Esempi di query

Sostituisci your-project.your_dataset.embeddings_table con il nome del progetto, del set di dati e della tabella di destinazione effettivi.

SQL: Fetch embeddings

Questa query recupera il vettore di embedding e i metadati amministrativi per le celle S2 nel set di dati di cui è stato eseguito il provisioning.

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: trova posizioni simili

Questa query identifica località con un comportamento simile senza richiedere dati esterni.

Utilizza la funzione ML.DISTANCE per calcolare la somiglianza del coseno, restituendo le migliori corrispondenze per una cella S2 di destinazione. Questo approccio supporta gli scenari di pianificazione dell'espansione, ad esempio la determinazione di dove aprire un nuovo negozio in base al profilo di una sede esistente di successo.

Per visualizzare le celle S2 su una mappa, devi convertire o unire l'ID cella S2 alla geometria poligonale corrispondente, perché questo set di dati utilizza i token cella S2 anziché i punti di latitudine e longitudine.

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: unisci i dati dei clienti

Questo esempio mostra come arricchire i tuoi dati interni (ad esempio, una tabella sul rendimento del negozio) con gli incorporamenti comportamentali. Assicurati che i tuoi dati interni includano token cella S2 corrispondenti (stringhe esadecimali).

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: carica i dati per il machine learning

Gli incorporamenti vengono archiviati come array BigQuery. Per utilizzarli nelle librerie ML, devi convertire la colonna in una 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)