Используйте встраивания данных из инструмента Population Dynamics Insights.

Подготовка данных для проверки достоверности данных

Для использования эмбеддингов динамики населения ваши данные наземной проверки должны быть агрегированы по поддерживаемой географической границе. Поскольку типы административных границ различаются по всему миру, вы можете выравнивать свои данные, используя либо универсальные математические сетки (например, ячейки S2), либо локальные административные регионы (например, округа или районы, в зависимости от конкретного набора данных по стране).

Вариант 1: Включение эмбеддингов в существующую модель.

  • Подготовьте эталонные данные на основе существующей модели: используйте эмбеддинги в качестве геопространственных ковариат для улучшения существующей модели.
  • Обучение модели коррекции ошибок: улучшение существующей модели путем интеграции эмбеддингов в модель, которая принимает исходные выходные данные модели, ожидаемое значение или истинные значения и эмбеддинги для обучения новой модели коррекции ошибок.

Вариант 2: Настройка под конкретные сценарии использования.

  • Выберите модель прогнозирования: для прогнозирования можно использовать любую модель, например, GBDT, MLP или линейную.
  • Используйте эмбеддинги для прогнозирования: используйте эмбеддинги из модели динамики популяций в качестве входных признаков, наряду с другими контекстными данными, для повышения точности прогнозирования.

Примеры запросов

Замените your-project.your_dataset.embeddings_table на фактическое имя вашего проекта, набора данных и целевой таблицы.

SQL: Получение эмбеддингов

Этот запрос извлекает вектор встраивания и административные метаданные для ячеек S2 в предоставленном вами наборе данных.

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: Найти похожие места

Этот запрос позволяет определить места со схожим поведением без использования внешних данных.

Он использует функцию ML.DISTANCE для вычисления косинусного сходства, возвращая лучшие совпадения для целевой ячейки S2. Такой подход поддерживает сценарии планирования расширения, например, определение места открытия нового магазина на основе профиля успешного существующего магазина.

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: Объединение данных о клиентах

В этом примере показано, как обогатить ваши собственные внутренние данные (например, таблицу производительности магазина) поведенческими эмбеддингами. Убедитесь, что ваши внутренние данные содержат соответствующие токены ячеек S2 (шестнадцатеричные строки).

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: Загрузка данных для машинного обучения

Эмбеддинги хранятся в виде массивов BigQuery. Для их использования в библиотеках машинного обучения необходимо преобразовать столбец в матрицу 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)