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