Menggunakan sematan Insight Dinamika Populasi

Menyiapkan Data Kebenaran Nyata

Untuk menggunakan sematan Dinamika Populasi, data kebenaran dasar Anda harus diagregasi ke batas geografis yang didukung. Karena jenis batas administratif bervariasi secara global, Anda dapat menyelaraskan data menggunakan sistem petak matematika universal (seperti sel S2) atau wilayah administratif lokal (seperti kabupaten atau distrik, bergantung pada set data negara tertentu).

Opsi 1: Menggabungkan Embedding ke dalam Model yang Ada

  • Siapkan kebenaran dasar berbasis model yang ada: Gunakan embedding sebagai kovariat geospasial untuk meningkatkan kualitas model yang ada.
  • Melatih model koreksi kesalahan: Tingkatkan kualitas model yang ada dengan mengintegrasikan sematan ke dalam model yang menggunakan output model asli, nilai yang diharapkan atau kebenaran dasar, dan sematan untuk mempelajari model koreksi kesalahan baru.

Opsi 2: Penyesuaian untuk Kasus Penggunaan Tertentu

  • Pilih model prediksi: Model apa pun, seperti GBDT, MLP, atau linear, dapat digunakan untuk prediksi.
  • Menggunakan penyematan untuk prediksi: Gunakan penyematan Dinamika Populasi sebagai fitur input, bersama dengan data kontekstual lainnya, untuk meningkatkan akurasi prediksi.

Contoh kueri

Ganti your-project.your_dataset.embeddings_table dengan project, set data, dan nama tabel target Anda yang sebenarnya.

SQL: Mengambil Embedding

Kueri ini mengambil vektor embedding dan metadata administratif untuk sel S2 dalam set data yang disediakan.

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: Temukan Lokasi Serupa

Kueri ini mengidentifikasi lokasi yang serupa secara perilaku tanpa memerlukan data eksternal.

Fungsi ini menggunakan fungsi ML.DISTANCE untuk menghitung kemiripan kosinus, yang menampilkan kecocokan teratas untuk sel S2 target. Pendekatan ini mendukung skenario perencanaan ekspansi, seperti menentukan lokasi untuk membuka toko baru berdasarkan profil lokasi yang sudah ada dan berhasil.

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: Gabungkan Data Pelanggan

Contoh ini menunjukkan cara memperkaya data internal Anda sendiri (misalnya, tabel performa toko) dengan sematan perilaku. Pastikan data internal Anda menyertakan token sel S2 yang cocok (string hex).

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: Memuat Data untuk Machine Learning

Embedding disimpan sebagai Array BigQuery. Untuk menggunakannya di library ML, Anda harus mengonversi kolom menjadi matriks 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)