Подготовьте данные для проверки достоверности.
Для использования эмбеддингов динамики населения ваши данные наземной проверки должны быть агрегированы по поддерживаемой географической границе. Поскольку типы административных границ различаются по всему миру, вы можете выравнивать свои данные, используя либо универсальные математические сетки (например, ячейки S2), либо локальные административные регионы (например, округа или районы, в зависимости от конкретного набора данных по стране).
Вариант 1: Встроить эмбеддинги в существующую модель.
- Подготовьте эталонные данные на основе существующей модели: используйте эмбеддинги в качестве геопространственных ковариат для улучшения существующей модели.
- Обучение модели коррекции ошибок: улучшение существующей модели путем интеграции эмбеддингов в модель, которая принимает исходные выходные данные модели, ожидаемое значение или истинные значения и эмбеддинги для обучения новой модели коррекции ошибок.
Вариант 2: Настройка под конкретные сценарии использования.
- Выберите модель прогнозирования: для прогнозирования можно использовать любую модель, например, GBDT, MLP или линейную.
- Используйте эмбеддинги для прогнозирования: используйте эмбеддинги из модели динамики популяций в качестве входных признаков, наряду с другими контекстными данными, для повышения точности прогнозирования.
Пользовательская агрегация границ
Если ваши данные для проверки достоверности информации используют пользовательские полигоны, такие как почтовые индексы, изохроны времени в пути или торговые зоны, вы можете выполнить агрегацию границ. Этот процесс объединяет несколько векторов ячеек S2 в единое представление для целевого полигона. Выбор правильной методики взвешивания гарантирует, что агрегированное представление точно отражает ваши дальнейшие цели моделирования.
1. Средневзвешенное значение по численности населения (рекомендуемое значение по умолчанию для PDI)
Используйте агрегирование с учетом численности населения для решения задач, ориентированных на человека, таких как анализ эффективности работы розничных магазинов или моделирование поведения потребителей.
Использование пространственной агрегации демографических данных с учетом площади может исказить характеристики машинного обучения. Это происходит, когда незаселенные территории, такие как парки, промышленные зоны или водоемы, искажают профиль реальных жителей.
Для решения этой проблемы можно выполнить усреднение по численности населения в 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)
Запустить в Google Colab
Посмотреть исходный код на GitHub