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 integrieren, 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 zusammen mit anderen Kontextdaten als Eingabefeatures, um die Vorhersagegenauigkeit zu verbessern.

Benutzerdefinierte Grenzaggregation

Wenn Ihre Grundwahrheitsdaten benutzerdefinierte Polygone verwenden, z. B. Postleitzahlen, Isochronen für die Fahrzeit oder Handelsgebiete, können Sie eine Grenzaggregation durchführen. Bei diesem Vorgang werden mehrere S2-Zellvektoren zu einer einzelnen Darstellung für das Zielpolygon kombiniert. Durch die Auswahl der richtigen Gewichtungsmethode wird sichergestellt, dass die aggregierte Einbettung Ihre nachgelagerten Modellierungsziele genau widerspiegelt.

Verwenden Sie die bevölkerungsgewichtete Aggregation für nutzerorientierte Anwendungsfälle wie die Leistung von Einzelhandelsgeschäften oder die Modellierung des Verbraucherverhaltens.

Wenn Sie eine flächengewichtete räumliche Aggregation für demografische Daten verwenden, können Ihre Machine-Learning-Features verzerrt werden. Das passiert, wenn unbewohnte Gebiete wie Parks, Industriezonen oder Gewässer das Profil der tatsächlichen Einwohner verzerren.

Um dieses Problem zu beheben, können Sie in BigQuery einen bevölkerungsgewichteten Mittelwert berechnen. Bei diesem Ansatz werden demografische Datensätze mit hoher Auflösung wie WorldPop im Earth Engine Data Catalog verwendet, um die genaue Dichte jedes sich überschneidenden S2-Zellsegments zu berechnen.

Ein vollständiges Implementierungsbeispiel für einen bevölkerungsgewichteten Workflow finden Sie im interaktiven Notebook.

2. Flächengewichteter Mittelwert

Verwenden Sie für Umwelt- oder physikalische Anwendungsfälle stattdessen die flächengewichtete Aggregation. Das ist nützlich für die Analyse der Landnutzung, Studien zur bebauten Umwelt oder die Infrastrukturplanung, bei der Sie Regionen unabhängig von der Bevölkerungsverteilung bewerten müssen.

In diesen Szenarien ist die physische Landfläche wichtiger als die Bevölkerungsdichte. So trägt jeder Quadratkilometer innerhalb der Polygongrenze gleichermaßen zum aggregierten Vektor bei.

Bei dieser Methode wird der Einbettungsvektor jeder einzelnen S2-Zelle nach der geografischen Fläche gewichtet, die sie innerhalb des Zielpolygons abdeckt.

Beispielabfragen

Ersetzen Sie your-project.your_dataset.embeddings_table durch den Namen Ihres tatsächlichen Projekts, Datasets und der Zieltabelle.

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 ein neues Geschäft eröffnet werden soll, basierend auf dem Profil eines erfolgreichen bestehenden Standorts.

Wenn Sie S2-Zellen auf einer Karte visualisieren möchten, müssen Sie die S2-Zell-ID in die entsprechende Polygongeometrie konvertieren oder mit ihr verknüpfen, da in diesem Dataset S2-Zell-Tokens anstelle von Breiten- und Längengradpunkten verwendet werden.

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 Geschäftsleistung) mit Verhaltens-Einbettungen anreichern. Ihre internen Daten müssen übereinstimmende S2-Zell-Tokens (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)