Einbettungen für Daten zur Bevölkerungsdynamik verwenden

Grundwahrheitsdaten vorbereiten

Wenn Sie Einbettungen für die Bevölkerungsdynamik verwenden möchten, müssen Ihre Grundwahrheitsdaten auf eine unterstützte geografische Grenze aggregiert werden. Da sich die Typen von Verwaltungsgrenzen weltweit unterscheiden, können Sie Ihre Daten entweder mit universellen mathematischen Gridsystemen (z. B. S2-Zellen) oder mit lokalen Verwaltungsregionen (z. B. Landkreisen oder Bezirken, je nach Datensatz des jeweiligen Landes) abstimmen.

Option 1: Einbettungen in ein vorhandenes Modell einbeziehen

  • Vorhandene modellbasierte Grundwahrheit vorbereiten: Verwenden Sie die Einbettungen als räumliche Kovariaten, um ein vorhandenes Modell zu verbessern.
  • Modell zur Fehlerkorrektur trainieren: Verbessern Sie ein vorhandenes Modell, indem Sie die Einbettungen in ein Modell einbeziehen, das die ursprüngliche Modellausgabe, den erwarteten Wert oder die Grundwahrheit und die Einbettungen verwendet, um ein neues Modell zur Fehlerkorrektur zu trainieren.

Option 2: Für bestimmte Anwendungsfälle optimieren

  • Vorhersagemodell auswählen: Für Vorhersagen kann ein beliebiges Modell verwendet werden, z. B. GBDT, MLP oder linear.
  • Einbettungen für Vorhersagen verwenden: Verwenden Sie Einbettungen für die Bevölkerungsdynamik als Eingabefeatures zusammen mit anderen Kontextdaten, um die Vorhersagegenauigkeit zu verbessern.

Beispielabfragen

Ersetzen Sie your-project.your_dataset.embeddings_table durch den Namen Ihres Projekts, Datasets und der Zieltabellen.

SQL: Einbettungen abrufen

Mit dieser Abfrage werden der Einbettungsvektor und die administrativen Metadaten für die S2-Zellen in Ihrem bereitgestellten Dataset abgerufen.

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: Ähnliche Standorte finden

Mit dieser Abfrage werden Standorte mit ähnlichem Verhalten ermittelt, ohne dass externe Daten erforderlich sind.

Dabei wird die Funktion ML.DISTANCE verwendet, um die Kosinusähnlichkeit zu berechnen und die besten Übereinstimmungen für eine Ziel-S2-Zelle zurückzugeben. Dieser Ansatz unterstützt Szenarien zur Expansionsplanung, z. B. die Entscheidung, wo eine neue Filiale eröffnet werden soll, basierend auf dem Profil eines erfolgreichen bestehenden Standorts.

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: Kundendaten verknüpfen

In diesem Beispiel wird gezeigt, wie Sie Ihre eigenen internen Daten (z. B. eine Tabelle zur Filialleistung) mit Verhaltens-Einbettungen anreichern. Ihre internen Daten müssen übereinstimmende S2-Zellentokens (Hex-Strings) enthalten.

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: Daten für maschinelles Lernen laden

Die Einbettungen werden als BigQuery-Arrays gespeichert. Wenn Sie sie in ML-Bibliotheken verwenden möchten, müssen Sie die Spalte in eine NumPy-Matrix konvertieren.

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)