Nüfus Dinamikleri Analizleri yerleştirmelerini kullanma

Kesin referans verilerini hazırlama

Nüfus Dinamikleri yerleştirmelerini kullanmak için kesin referans verileriniz desteklenen bir coğrafi sınıra göre toplanmalıdır. Yönetim sınırı türleri dünya genelinde farklılık gösterdiğinden, verilerinizi evrensel matematiksel ızgara sistemlerini (ör. S2 hücreleri) veya yerel idari bölgeleri (ör. belirli ülke veri kümesine bağlı olarak ilçeler ya da bölgeler) kullanarak hizalayabilirsiniz.

1. seçenek: Yerleştirmeleri mevcut bir modele dahil etme

  • Mevcut modele dayalı kesin referans verileri hazırlama: Mevcut bir modeli geliştirmek için gömmeleri coğrafi uzamsal kovaryantlar olarak kullanın.
  • Hata düzeltme modeli eğitme: Yerleştirmeleri, yeni bir hata düzeltme modeli öğrenmek için orijinal model çıkışını, beklenen değeri veya kesin referansı ve yerleştirmeleri alan bir modele entegre ederek mevcut bir modeli iyileştirin.

2. seçenek: Belirli Kullanım Alanları İçin Ayarlama

  • Bir tahmin modeli seçin: GBDT, MLP veya doğrusal gibi herhangi bir model tahminler için kullanılabilir.
  • Tahmin için yerleştirmeleri kullanma: Tahmin doğruluğunu artırmak için diğer bağlamsal verilerin yanı sıra giriş özellikleri olarak nüfus dinamikleri yerleştirmelerini kullanın.

Sorgu örnekleri

your-project.your_dataset.embeddings_table yerine gerçek projenizi, veri kümenizi ve hedef tablo adınızı girin.

SQL: Yerleştirmeleri Getirme

Bu sorgu, sağlanan veri kümenizdeki S2 hücreleri için yerleştirme vektörünü ve yönetim meta verilerini alır.

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: Benzer Konumları Bulma

Bu sorgu, harici veri gerektirmeden davranışsal olarak benzer konumları tanımlar.

Kosinüs benzerliğini hesaplamak için ML.DISTANCE işlevini kullanır ve hedef bir S2 hücresi için en iyi eşleşmeleri döndürür. Bu yaklaşım, başarılı bir mevcut konumun profiline göre yeni bir mağazanın nerede açılacağını belirlemek gibi genişleme planlama senaryolarını destekler.

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: Müşteri verilerini birleştirme

Bu örnekte, kendi dahili verilerinizi (ör. mağaza performansı tablosu) davranış yerleştirmeleriyle nasıl zenginleştireceğiniz gösterilmektedir. Dahili verilerinizin eşleşen S2 hücre jetonları (onaltılık dizeler) içerdiğinden emin olun.

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: Makine Öğrenimi İçin Veri Yükleme

Yerleştirmeler BigQuery dizileri olarak depolanır. Bu sütunları makine öğrenimi kitaplıklarında kullanmak için NumPy matrisine dönüştürmeniz gerekir.

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)