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

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

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

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

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

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

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

Пользовательская агрегация границ

Если ваши данные для проверки достоверности информации используют пользовательские полигоны, такие как почтовые индексы, изохроны времени в пути или торговые зоны, вы можете выполнить агрегацию границ. Этот процесс объединяет несколько векторов ячеек S2 в единое представление для целевого полигона. Выбор правильной методики взвешивания гарантирует, что агрегированное представление точно отражает ваши дальнейшие цели моделирования.

Используйте агрегирование с учетом численности населения для решения задач, ориентированных на человека, таких как анализ эффективности работы розничных магазинов или моделирование поведения потребителей.

Использование пространственной агрегации демографических данных с учетом площади может исказить характеристики машинного обучения. Это происходит, когда незаселенные территории, такие как парки, промышленные зоны или водоемы, искажают профиль реальных жителей.

Для решения этой проблемы можно выполнить усреднение по численности населения в BigQuery. Этот подход использует высокоточные демографические наборы данных, такие как WorldPop в каталоге данных Earth Engine , для расчета точной плотности каждого пересекающегося сегмента ячейки S2.

Чтобы увидеть полный пример реализации процесса, учитывающего численность населения, запустите интерактивный блокнот.

2. Средневзвешенное по площади значение

Для анализа экологических или физических аспектов используйте агрегирование с учетом площади. Это полезно для анализа землепользования, исследований застроенной среды или планирования инфраструктуры, где необходимо оценивать регионы независимо от распределения населения.

В этих сценариях физическая площадь территории имеет большее значение, чем плотность населения. Это гарантирует, что каждый квадратный километр в пределах границ полигона вносит равный вклад в агрегированный вектор.

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

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

Замените 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. Такой подход поддерживает сценарии планирования расширения, например, определение места открытия нового магазина на основе профиля успешного существующего магазина.

Для визуализации ячеек S2 на карте необходимо преобразовать или объединить идентификатор ячейки S2 с соответствующей полигональной геометрией, поскольку в этом наборе данных используются токены ячеек 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)