Dokumentacja dla programistów
Opis produktu
Population Dynamics Insights (PDI) to zbiór danych z osadzaniem, który zawiera dane o zachowaniach ludzi i ich interakcjach ze środowiskiem w postaci zwięzłych, gotowych do analizy osadzeń (czyli „cyfrowych odcisków palców”) w określonych lokalizacjach.
Te wektory osadzania rejestrują wzorce w zagregowanych danych, takich jak trendy wyszukiwania, trendy dotyczące natężenia ruchu i warunki środowiskowe (mapy, jakość powietrza, pogoda), zapewniając bogaty, specyficzny dla lokalizacji obraz tego, jak ludzie korzystają z otoczenia. Uśrednione w przestrzeni i czasie osadzenia zapewniają prywatność, a jednocześnie umożliwiają szczegółową analizę przestrzenną i prognozowanie w przypadku aplikacji z różnych dziedzin, od zdrowia publicznego po modelowanie społeczno-ekonomiczne.
Omówienie produktu
Osadzenia dynamiki populacji są generowane za pomocą specjalnie opracowanego modelu uczenia maszynowego, który jest trenowany na bogatym zestawie cech i przekształcany w skondensowaną reprezentację wektorową. Te wektory są trenowane i generowane na podstawie:
- Zagregowane trendy wyszukiwania: regionalne zainteresowania i obawy odzwierciedlone w danych wyszukiwania.
- Zagregowane dane z Map (w tym natężenie ruchu): udogodnienia, usługi i firmy w regionach wraz z lokalnymi trendami dotyczącymi odwiedzin.
- Zagregowane dane o pogodzie i jakości powietrza: dane związane z klimatem, w tym temperatura i jakość powietrza.
Te funkcje są agregowane na poziomie kodu pocztowego, aby generować zlokalizowane, uwzględniające kontekst osadzenia, które chronią prywatność. PDI to ciągły zbiór danych szeregów czasowych, w którym co miesiąc przetwarzane i partycjonowane są nowe wycinki danych. Dane są odświeżane i dodawane do tabeli danych do ostatniego dnia następnego miesiąca kalendarzowego (np. dane z lutego są publikowane najpóźniej 31 marca).
Wymagania wstępne
Aby uzyskać dostęp do osadzonych danych o dynamice populacji, musisz mieć przyznane uprawnienia. Jeśli nie masz dostępu, skontaktuj się z przedstawicielem ds. sprzedaży lub inżynierem ds. obsługi klienta.
- Włącz interfejs Analytics Hub API w Cloud Console.
- Włącz interfejs BigQuery API w Cloud Console.
- mieć praktyczną znajomość usługi BigQuery,
- Aby wykonywać zadania subskrybenta, upewnij się, że Twoje konto ma rolę Właściciel subskrypcji Analytics Hub (
roles/analyticshub.subscriptionOwner). - Aby tworzyć zbiory danych, musisz mieć rolę użytkownika BigQuery (
roles/bigquery.user).
Zalecane szkolenie
Jeśli dopiero zaczynasz pracę z osadzaniem lub uczeniem maszynowym w BigQuery, przed rozpoczęciem analizy zalecamy zapoznanie się z tymi materiałami szkoleniowymi:
- Szybkie szkolenie z uczenia maszynowego: wektory dystrybucyjne: podstawowe, szybkie omówienie tego, jak modele uczenia maszynowego wykorzystują wektory dystrybucyjne do przekształcania danych o wysokiej wymiarowości w przestrzeń o niższej wymiarowości przy zachowaniu relacji semantycznych.
- Wprowadzenie do wyszukiwania wektorowego i wektorów dystrybucyjnych: praktyczny moduł Google Cloud Skills Boost, który wprowadza wektory dystrybucyjne, podobieństwo semantyczne i sposoby wykorzystania wektorów dystrybucyjnych w szerszym ekosystemie Google Cloud.
- Uczenie maszynowe w BigQuery (BQML) Samouczki: Zbiór danych PDI jest hostowany w BigQuery, co umożliwia trenowanie i wykonywanie modeli uczenia maszynowego bezpośrednio na wektorach dystrybucyjnych przy użyciu standardowej wersji SQL bez konieczności eksportowania danych.
Korzystanie z wektorów dystrybucyjnych
Interpretowanie danych
Zanim rozpoczniesz analizę, poświęć chwilę na przejrzenie struktury schematu.
Organizacja zbioru danych
Osadzenia są uporządkowane w osobnych tabelach BigQuery dla każdego kraju lub regionu testowego.
Anatomia wektora dystrybucyjnego
Kolumna features to 330-wymiarowy wektor (przechowywany jako tablica REPEATED FLOAT w BigQuery). Każda sekcja tablicy odpowiada konkretnemu sygnałowi danych wyodrębnionemu przez model dynamiki populacji.
Zrozumienie tej struktury umożliwia usuwanie funkcji (np. określanie, w jakim stopniu zachowania związane z wyszukiwaniem przewidują sprzedaż w porównaniu z pogodą).
| Indeksy wektorów | Źródło danych | Opis |
|---|---|---|
| 0 – 127 | Zbiorcze trendy wyszukiwania | Rejestruje zainteresowania i obawy regionalne (np. wyszukiwania haseł „siłownia”, „objawy grypy”, „towary luksusowe”). |
| 128 – 255 | Mapy i popularność | Zawiera informacje o środowisku zbudowanym (interesujące miejsca, takie jak szpitale, parki, szkoły) i o tym, jak często ludzie odwiedzają te miejsca. |
| 256 – 329 | Pogoda i jakość powietrza | Rejestruje kontekst środowiskowy (temperaturę, opady, jakość powietrza). |
Kolumny kluczowe i metadane
Tabela z wektorami zawiera metadane przestrzenne i czasowe, które umożliwiają analizę geoprzestrzenną, filtrowanie i współdziałanie z innymi usługami.
Pojedynczy kod pocztowy może czasami przekraczać granice administracyjne (np. granice hrabstwa), dlatego pola obszaru administracyjnego są podawane jako tablice.
geo_id: Unikalny identyfikator miejsca powiązany z tym kodem pocztowym.geo_name: ciąg znaków kodu pocztowego regionu (np.'90210').administrative_area_level_1_names: lista (ARRAY<STRING>) nazw czytelnych dla człowieka dla granic najwyższego poziomu (np.['California']).administrative_area_level_1_ids: lista (ARRAY<STRING>) unikalnych identyfikatorów miejsca dla administracyjnych granic najwyższego poziomu, z którymi przecina się ten kod pocztowy (np. stan lub prowincja).administrative_area_level_2_names: lista (ARRAY<STRING>) czytelnych nazw granic dodatkowych (np.['Los Angeles County']).administrative_area_level_2_ids: lista (ARRAY<STRING>) unikalnych identyfikatorów miejsca dla drugorzędnych granic administracyjnych, z którymi przecina się ten kod pocztowy (np. powiat lub okręg).features: podstawowy 330-wymiarowy wektor dystrybucyjny, przechowywany natywnie jakoARRAY<FLOAT64>. Wczytanie tego do biblioteki Pandas za pomocą Pythona wymaga spłaszczenia lub przekonwertowania na macierz NumPy.snapshot_date:DATEw formacieYYYY-MM-DD, znormalizowana tak, aby używać tylko pierwszego dnia miesiąca. Reprezentuje konkretny miesięczny przedział czasowy, z którego dane wejściowe zostały zagregowane w celu wygenerowania danych o osadzaniu. Na przykład dane z kwietnia 2026 r. będą sformatowane jako2026-04-01.
Przygotowywanie danych podstawowych
Aby korzystać z osadzania danych o dynamice populacji, musisz agregować dane podstawowe do obsługiwanego obszaru geograficznego (kodów pocztowych).
Opcja 1. Włączanie wektorów dystrybucyjnych do istniejącego modelu
- Przygotuj dane podstawowe oparte na istniejącym modelu: użyj wektorów osadzania jako zmiennych przestrzennych, aby ulepszyć istniejący model.
- Trenowanie modelu korekty błędów: ulepsz istniejący model, integrując osadzanie w modelu, który przyjmuje dane wyjściowe oryginalnego modelu, oczekiwaną wartość lub dane podstawowe oraz osadzanie, aby nauczyć się nowego modelu korekty błędów.
Opcja 2. Dostosowywanie do konkretnych przypadków użycia
- Wybierz typ modelu prognozowania: do prognozowania można używać dowolnego modelu, np. GBDT, MLP lub liniowego.
- Używanie osadzania do prognozowania: używaj osadzania dynamiki populacji jako funkcji wejściowych wraz z innymi danymi kontekstowymi, aby zwiększyć dokładność prognozowania.
Fragmenty kodu w krótkim wprowadzeniu
Użyj tych fragmentów, aby sprawdzić dostęp i poznać format danych.
1. SQL: pobieranie wektorów dystrybucyjnych dla konkretnego miesiąca
Ponieważ PDI to zbiór danych szeregów czasowych, zwykle należy filtrować według snapshot_date, aby nie zwracać zduplikowanych kodów pocztowych w wielu miesiącach. Dzień musi być zawsze ustawiony na -01.
SELECT
snapshot_date,
geo_name AS postal_code,
geo_id AS place_id,
features -- The 330-dim vector
FROM
`your-project.population_dynamics___us___domestic.v1_postal_code.embeddings_table`
WHERE
snapshot_date = '2025-10-01' -- You must use the first of the month ('-01')
LIMIT 10;
2. SQL: filtrowanie według obszaru administracyjnego (rozpakowywanie tablic)
Ponieważ kody pocztowe mogą obejmować wiele granic administracyjnych, pola administrative_area_* są przechowywane jako tablice. Aby filtrować wszystkie kody pocztowe w określonym stanie (np. „Kalifornia”), musisz użyć funkcji UNNEST() w BigQuery.
SELECT
snapshot_date,
geo_name AS postal_code,
admin1_name
FROM
your-project.population_dynamics___us___domestic.v1_postal_code.embeddings_table,
UNNEST(administrative_area_level_1_names) AS admin1_name
WHERE
-- On or after October 2025
snapshot_date >= '2025-10-01' -- You must use the first of the month ('-01')
AND admin1_name = 'California'
LIMIT 10;
3. SQL: wyszukiwanie podobnych lokalizacji
To zapytanie identyfikuje podobne pod względem zachowań lokalizacje bez konieczności korzystania z danych zewnętrznych. Funkcja ML.DISTANCE oblicza podobieństwo cosinusowe i zwraca najlepsze dopasowania dla docelowego kodu pocztowego.
WITH TargetLocation AS (
SELECT features AS target_vector
FROM `your-project.population_dynamics___us___domestic.v1_postal_code.embeddings_table`
WHERE snapshot_date = '2025-10-01' -- You must use the first of the month ('-01')
AND geo_name = '90210' -- Replace with your target postal code
LIMIT 1
)
SELECT
t.geo_name AS postal_code,
-- 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.population_dynamics___us___domestic.v1_postal_code.embeddings_table` t,
TargetLocation p
WHERE
t.snapshot_date = '2025-10-01' -- You must use the first of the month ('-01')
AND t.geo_name != '90210' -- Exclude the target itself
ORDER BY
similarity_score DESC
LIMIT 20;
4. SQL: łączenie danych o klientach
Ten przykład pokazuje, jak wzbogacać własne dane wewnętrzne (np. tabelę skuteczności sklepu) o osadzenia behawioralne przez złączenie na podstawie kodu pocztowego.
SELECT
store.store_id,
store.postal_code,
store.total_revenue,
embeddings.features AS pdi_vector
FROM
`your-project.internal_data.store_performance` AS store
JOIN
`your-project.population_dynamics___us___domestic.v1_postal_code.embeddings_table` AS embeddings
ON
store.postal_code = embeddings.geo_name
WHERE
embeddings.snapshot_date = '2025-10-01' -- You must use the first of the month ('-01')
5. 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_name,
features -- Returns as a list of floats
FROM
`your-project.population_dynamics___us___domestic.v1_postal_code.embeddings_table`
WHERE
snapshot_date = '2025-10-01' -- You must use the first of the month ('-01')
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)
Najczęstsze pytania
Czy mogę uzyskać dostęp do nieprzetworzonych danych wejściowych (np. konkretnych zapytań lub śladów mobilności)?
Nie. Osadzenia dynamiki populacji są generowane na podstawie zagregowanych sygnałów chroniących prywatność. Aby zapewnić prywatność użytkowników, nie udostępniamy konkretnych śladów użytkowników, indywidualnych historii wyszukiwania ani surowych wzorców ruchu. Osadzenia zapewniają ukrytą reprezentację tych zachowań, zoptymalizowaną pod kątem modelowania i prognozowania, a nie surowych danych analitycznych.
Jak wybierasz wyszukiwane hasła używane do generowania wektorów dystrybucyjnych?
Używamy jednostek Grafu wiedzy (KG), a nie surowych zapytań. Na przykład zapytania „taylor swift boyfriend” i „kc tight end” będą mapowane na ten sam podstawowy element KG („Travis Kelce”). To podejście jest niezależne od języka, obejmuje szersze kategorie semantyczne i znacznie zwiększa prywatność.
Czy wymiary wektora są interpretowalne (np. czy wymiar 5 to „Kawa”)?
Nie, wektory są reprezentacjami ukrytymi. Funkcje są wyodrębniane przez model uczenia maszynowego, więc nie ma prostego mapowania semantycznego ani tłumaczenia 1:1 z końcowego indeksu wektorowego na konkretne dane wejściowe. Wiemy, które bloki indeksów pochodzą z których zbiorów danych (np. indeksy 0–127 reprezentują trendy w wyszukiwarce), ale konkretny indeks, np. indeks 5, nie jest powiązany z jednym słowem kluczowym. Zamiast tego reprezentuje złożoną, abstrakcyjną cechę wyuczoną przez model.
Czy zbiór danych zawiera granice wielokątów (pliki kształtu)?
Nie. Zbiór danych zawiera kody pocztowe (geo_name) i powiązane z nimi identyfikatory miejsc (geo_id), ale nie obejmuje surowych geometrii wielokątów (np. WKT).
W zależności od przypadku użycia zalecamy te metody:
- Wizualizacja w Mapach Google: możesz użyć identyfikatorów miejsc podanych w polu geo_id, aby stylizować i renderować granice bezpośrednio na mapie za pomocą stylów opartych na danych. Chociaż te granice są idealne do wyświetlania wizualnego, nie można ich wyeksportować jako plików geometrii surowej.
- W przypadku łączenia i analizy przestrzennej: jeśli potrzebujesz nieprzetworzonych wielokątów przestrzennych, zalecamy połączenie tego zbioru danych z publicznymi zbiorami danych o granicach (np. dostępnymi w publicznych zbiorach danych BigQuery) za pomocą kodu pocztowego geo_name.
Jaki jest przedział czasowy zbioru danych z wektorami?
Osadzenia PDI są aktualizowane co miesiąc, a do zbioru danych dodawany jest kolejny miesiąc. Dane są przedstawiane za pomocą kolumny snapshot_date (sformatowanej jako YYYY-MM-DD), która zapewnia stabilną wartość bazową odzwierciedlającą behawioralny i fizyczny odcisk palca lokalizacji w danym miesiącu.