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.
1. Media ponderata in base alla popolazione (impostazione predefinita consigliata per l'IDP)
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)
Esegui in Google Colab
Visualizza il codice sorgente su GitHub