Przygotowywanie danych podstawowych
Aby korzystać z osadzania danych o dynamice populacji, musisz agregować dane podstawowe do obsługiwanego obszaru geograficznego. Rodzaje granic administracyjnych różnią się na całym świecie, dlatego możesz dopasować dane za pomocą uniwersalnych matematycznych systemów siatki (np. komórek S2) lub lokalnych regionów administracyjnych (takich jak hrabstwa lub okręgi, w zależności od konkretnego zbioru danych dotyczącego danego kraju).
Opcja 1. Włączanie wektorów dystrybucyjnych do istniejącego modelu
- Przygotuj dane podstawowe oparte na istniejącym modelu: użyj wektorów jako zmiennych geoprzestrzennych, aby ulepszyć istniejący model.
- Trenowanie modelu korekty błędów: ulepsz istniejący model, integrując w nim wektory osadzeń. Model ten będzie przyjmować dane wyjściowe oryginalnego modelu, oczekiwaną wartość lub dane podstawowe oraz wektory osadzeń, aby nauczyć się nowego modelu korekty błędów.
Opcja 2. Dostosowywanie do konkretnych przypadków użycia
- Wybierz model prognozowania: do prognozowania można użyć dowolnego modelu, np. GBDT, MLP lub liniowego.
- Używaj osadzania do prognozowania: używaj osadzania dynamiki populacji jako cech wejściowych wraz z innymi danymi kontekstowymi, aby zwiększyć dokładność prognozowania.
Przykłady zapytań
Zastąp your-project.your_dataset.embeddings_table nazwą rzeczywistego projektu, zbioru danych i tabeli docelowej.
SQL: pobieranie wektorów dystrybucyjnych
To zapytanie pobiera wektor dystrybucyjny i metadane administracyjne komórek S2 w udostępnionym zbiorze danych.
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: znajdowanie podobnych lokalizacji
To zapytanie identyfikuje podobne pod względem zachowań lokalizacje bez konieczności korzystania z danych zewnętrznych.
Funkcja ML.DISTANCE służy do obliczania podobieństwa cosinusowego i zwraca najlepsze dopasowania dla docelowej komórki S2. To podejście pomaga w planowaniu rozwoju, np. w określaniu, gdzie otworzyć nowy sklep na podstawie profilu skutecznej lokalizacji.
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: łączenie danych o klientach
Ten przykład pokazuje, jak wzbogacać własne dane wewnętrzne (np. tabelę skuteczności sklepu) o wektory dystrybucyjne dotyczące zachowań. Upewnij się, że Twoje dane wewnętrzne zawierają pasujące tokeny komórek S2 (ciągi szesnastkowe).
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: wczytywanie danych na potrzeby uczenia maszynowego
Osadzanie jest przechowywane jako tablice BigQuery. Aby używać ich w bibliotekach ML, musisz przekonwertować kolumnę na macierz 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)