Usa las incorporaciones de las Estadísticas de dinámica de población

Prepara los datos de verdad fundamental

Para usar las incorporaciones de Population Dynamics, tus datos de verdad fundamental deben agregarse a un límite geográfico compatible. Debido a que los tipos de límites administrativos varían a nivel global, puedes alinear tus datos con sistemas de cuadrícula matemática universales (como las celdas S2) o regiones administrativas locales (como condados o distritos, según el conjunto de datos específico del país).

Opción 1: Incorpora incorporaciones en un modelo existente

  • Prepara la verdad fundamental basada en un modelo existente: Usa las incorporaciones como covariables geoespaciales para mejorar un modelo existente.
  • Entrena un modelo de corrección de errores: Mejora un modelo existente integrando las incorporaciones en un modelo que tome el resultado del modelo original, el valor esperado o la verdad fundamental, y las incorporaciones para aprender un nuevo modelo de corrección de errores.

Opción 2: Ajusta para casos de uso específicos

  • Elige un modelo de predicción: Se puede usar cualquier modelo, como GBDT, MLP o lineal, para las predicciones.
  • Usa incorporaciones para la predicción: Usa las incorporaciones de Population Dynamics como atributos de entrada, junto con otros datos contextuales, para mejorar la precisión de la predicción.

Agregación de límites personalizados

Si tus datos de verdad fundamental usan polígonos personalizados, como códigos postales, isócronas de tiempo de viaje o áreas comerciales, puedes realizar una agregación de límites. Este proceso combina varios vectores de celdas S2 en una sola representación para el polígono objetivo. Elegir la metodología de ponderación correcta garantiza que la incorporación agregada refleje con precisión tus objetivos de modelado descendente.

Usa la agregación ponderada por población para casos de uso centrados en las personas, como el rendimiento de las tiendas minoristas o el modelado del comportamiento del consumidor.

Usar una agregación espacial ponderada por área para los datos demográficos puede distorsionar tus atributos de aprendizaje automático. Esto ocurre cuando las áreas no pobladas, como parques, zonas industriales o cuerpos de agua, distorsionan el perfil de los residentes reales.

Para resolver este problema, puedes realizar un promedio ponderado por población en BigQuery. Este método usa conjuntos de datos demográficos de alta resolución, como WorldPop en el Catálogo de datos de Earth Engine , para calcular la densidad precisa de cada segmento de celda S2 que se cruza.

Para ver un ejemplo de implementación completo de un flujo de trabajo ponderado por población, ejecuta el notebook interactivo.

2. Promedio ponderado por área

Para casos de uso ambientales o físicos, usa la agregación ponderada por área en su lugar. Esto es útil para el análisis del uso de la tierra, los estudios del entorno construido o la planificación de la infraestructura en los que debes evaluar las regiones independientemente de la distribución de la población.

En estos casos, el área física de la tierra es más relevante que la densidad de población humana. Esto garantiza que cada kilómetro cuadrado dentro del límite del polígono contribuya por igual al vector agregado.

Con este método, el vector de incorporación de cada celda S2 constituyente se pondera según el área geográfica que abarca dentro del polígono objetivo.

Ejemplos de consultas

Reemplaza your-project.your_dataset.embeddings_table por el proyecto, el conjunto de datos y el nombre de la tabla de destino reales.

SQL: Recupera incorporaciones

Esta consulta recupera el vector de incorporación y los metadatos administrativos de las celdas S2 en tu conjunto de datos aprovisionado.

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: Busca ubicaciones similares

Esta consulta identifica ubicaciones similares en función del comportamiento sin necesidad de datos externos.

Usa la función ML.DISTANCE para calcular la similitud del coseno y mostrar las coincidencias principales para una celda S2 de destino. Este método admite situaciones de planificación de expansión, como determinar dónde abrir una tienda nueva en función del perfil de una ubicación existente exitosa.

Para visualizar las celdas S2 en un mapa, debes convertir o unir el ID de celda S2 a su geometría de polígono correspondiente, ya que este conjunto de datos usa tokens de celdas S2 en lugar de puntos de latitud y longitud.

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: Une datos de clientes

En este ejemplo, se muestra cómo enriquecer tus propios datos internos (por ejemplo, una tabla de rendimiento de la tienda) con incorporaciones de comportamiento. Asegúrate de que tus datos internos incluyan tokens de celdas S2 coincidentes (cadenas hexadecimales).

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: Carga datos para el aprendizaje automático

Las incorporaciones se almacenan como arrays de BigQuery. Para usarlas en bibliotecas de AA, debes convertir la columna en una matriz de 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)