Prepara i dati di riferimento
Per utilizzare gli incorporamenti di Dinamiche della popolazione, i dati empirici 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.
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: Find Similar Locations
Questa query identifica le 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.
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: Join Customer Data
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: Load Data for 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)