Utilizzare gli incorporamenti degli approfondimenti sulle dinamiche della popolazione

Preparare i dati di fatto

Per utilizzare gli incorporamenti di Population Dynamics, i dati di fatto devono essere aggregati a 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: incorporare gli incorporamenti in un modello esistente

  • Prepara i dati di fatto basati sul modello esistente: 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 fatto e gli incorporamenti per apprendere un nuovo modello di correzione degli errori.

Opzione 2: ottimizzare 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 Population Dynamics come funzionalità di input, insieme ad altri dati contestuali, per migliorare l'accuratezza delle previsioni.

Esempi di query

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

SQL: recupera gli incorporamenti

Questa query recupera il vettore di incorporamento e i metadati amministrativi per le celle S2 nel set di dati di cui hai 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 località simili

Questa query identifica le località simili dal punto di vista comportamentale senza richiedere dati esterni.

Utilizza la funzione ML.DISTANCE per calcolare la similarità del coseno, restituendo le corrispondenze principali 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 località 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: unisci i dati cliente

Questo esempio mostra come arricchire i tuoi dati interni (ad esempio, una tabella del rendimento del negozio) con incorporamenti comportamentali. Assicurati che i dati interni includano i token di celle 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 di 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)