Sử dụng các thành phần nhúng Thông tin chi tiết về biến động dân số

Chuẩn bị dữ liệu thực tế

Để sử dụng các thành phần nhúng Động lực học dân số, dữ liệu thực tế của bạn phải được tổng hợp thành một ranh giới địa lý được hỗ trợ. Vì các loại ranh giới hành chính khác nhau trên toàn cầu, nên bạn có thể điều chỉnh dữ liệu của mình bằng cách sử dụng hệ thống lưới toán học phổ biến (chẳng hạn như ô S2) hoặc các khu vực hành chính địa phương (chẳng hạn như quận hoặc huyện, tuỳ thuộc vào tập dữ liệu của quốc gia cụ thể).

Cách 1: Kết hợp các vectơ nhúng vào một mô hình hiện có

  • Chuẩn bị dữ liệu cơ sở thực tế dựa trên mô hình hiện có: Sử dụng các vectơ nhúng làm biến số phụ không gian địa lý để cải thiện mô hình hiện có.
  • Huấn luyện mô hình sửa lỗi: Cải thiện một mô hình hiện có bằng cách tích hợp các mục nhúng vào một mô hình lấy đầu ra của mô hình ban đầu, giá trị dự kiến hoặc thông tin thực tế và các mục nhúng để tìm hiểu một mô hình sửa lỗi mới.

Cách 2: Điều chỉnh cho các trường hợp sử dụng cụ thể

  • Chọn một mô hình dự đoán: Bạn có thể sử dụng bất kỳ mô hình nào, chẳng hạn như GBDT, MLP hoặc tuyến tính, để dự đoán.
  • Sử dụng các vectơ nhúng để dự đoán: Sử dụng các vectơ nhúng Động lực học dân số làm các đặc điểm đầu vào, cùng với các dữ liệu theo bối cảnh khác, để cải thiện độ chính xác của dự đoán.

Ví dụ về truy vấn

Thay thế your-project.your_dataset.embeddings_table bằng dự án, tập dữ liệu và tên bảng đích thực tế của bạn.

SQL: Tìm nạp các mục nhúng

Truy vấn này truy xuất vectơ nhúng và siêu dữ liệu hành chính cho các ô S2 trong tập dữ liệu được cung cấp của bạn.

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: Tìm vị trí tương tự

Truy vấn này xác định các vị trí tương tự về hành vi mà không yêu cầu dữ liệu bên ngoài.

Hàm này dùng hàm ML.DISTANCE để tính độ tương đồng về cosin, trả về các kết quả trùng khớp hàng đầu cho một ô S2 mục tiêu. Phương pháp này hỗ trợ các trường hợp lập kế hoạch mở rộng, chẳng hạn như xác định nơi mở cửa hàng mới dựa trên hồ sơ của một vị trí hiện tại đang hoạt động hiệu quả.

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: Kết hợp dữ liệu khách hàng

Ví dụ này minh hoạ cách làm phong phú dữ liệu nội bộ của riêng bạn (ví dụ: bảng hiệu suất của cửa hàng) bằng các mục nhúng hành vi. Đảm bảo dữ liệu nội bộ của bạn có chứa các mã thông báo ô S2 (chuỗi thập lục phân) trùng khớp.

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: Tải dữ liệu cho hoạt động học máy

Các vectơ nhúng được lưu trữ dưới dạng Mảng BigQuery. Để sử dụng các cột này trong thư viện ML, bạn phải chuyển đổi cột thành ma trận 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)