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)