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 thành phần 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 mô hình ban đầu, giá trị dự kiến hoặc cơ sở thực tế và các mục nhúng để học 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 mô hình tuyến tính để đưa ra 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.

Tổng hợp ranh giới tuỳ chỉnh

Nếu dữ liệu thực tế của bạn sử dụng các đa giác tuỳ chỉnh, chẳng hạn như mã bưu chính, đường đẳng thời gian lái xe hoặc khu vực thương mại, bạn có thể thực hiện một quy trình tổng hợp ranh giới. Quy trình này kết hợp nhiều vectơ ô S2 thành một biểu diễn duy nhất cho đa giác mục tiêu. Việc chọn phương pháp tính trọng số phù hợp sẽ đảm bảo vectơ nhúng tổng hợp phản ánh chính xác các mục tiêu mô hình hoá hạ nguồn của bạn.

Sử dụng tính năng tổng hợp có trọng số theo dân số cho các trường hợp sử dụng lấy con người làm trung tâm, chẳng hạn như hiệu suất của cửa hàng bán lẻ hoặc mô hình hành vi của người tiêu dùng.

Việc sử dụng phương pháp tổng hợp không gian có trọng số theo diện tích cho dữ liệu nhân khẩu học có thể làm sai lệch các đặc điểm học máy của bạn. Điều này xảy ra khi các khu vực không có người sinh sống, chẳng hạn như công viên, khu công nghiệp hoặc vùng nước, làm sai lệch hồ sơ của cư dân thực tế.

Để giải quyết vấn đề này, bạn có thể tính giá trị trung bình có trọng số theo dân số trong BigQuery. Phương pháp này sử dụng các tập dữ liệu nhân khẩu học có độ phân giải cao, chẳng hạn như WorldPop trong Danh mục dữ liệu Earth Engine, để tính toán mật độ chính xác của từng đoạn ô S2 giao nhau.

Để xem ví dụ đầy đủ về quy trình có trọng số theo dân số, hãy chạy sổ tay tương tác.

2. Giá trị trung bình có trọng số theo diện tích

Đối với các trường hợp sử dụng liên quan đến môi trường hoặc thể chất, hãy sử dụng phương pháp tổng hợp theo trọng số diện tích. Thông tin này hữu ích cho việc phân tích việc sử dụng đất, nghiên cứu môi trường xây dựng hoặc lập kế hoạch cơ sở hạ tầng, nơi bạn phải đánh giá các khu vực bất kể sự phân bố dân số.

Trong những trường hợp này, diện tích đất thực tế sẽ phù hợp hơn so với mật độ dân số. Điều này đảm bảo rằng mọi ki-lô-mét vuông trong ranh giới đa giác đều đóng góp như nhau vào vectơ tổng hợp.

Theo phương thức này, vectơ nhúng của mỗi ô S2 thành phần được tính trọng số theo diện tích bề mặt địa lý mà ô đó bao phủ trong đa giác mục tiêu.

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 các vị trí tương tự

Truy vấn này xác định những vị trí có hành vi tương tự mà không cần 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ả.

Để trực quan hoá các ô S2 trên bản đồ, bạn phải chuyển đổi hoặc kết hợp mã nhận dạng ô S2 với hình học đa giác tương ứng, vì tập dữ liệu này sử dụng mã thông báo ô S2 thay vì các điểm kinh độ và vĩ độ.

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 bao gồm các mã thông báo ô S2 (chuỗi thập lục phân) phù hợ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 để 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)