ใช้การฝังข้อมูลเชิงลึกเกี่ยวกับพลวัตของประชากร

เตรียมข้อมูลที่ได้จากการสังเกตการณ์

หากต้องการใช้การฝังตัวของพลวัตของประชากร คุณต้องรวมข้อมูลที่ได้จากการสังเกตการณ์เข้ากับขอบเขตทางภูมิศาสตร์ที่รองรับ เนื่องจากประเภทขอบเขตการปกครองแตกต่างกันไปทั่วโลก คุณจึงจัดแนวข้อมูลได้โดยใช้ระบบกริดทางคณิตศาสตร์สากล (เช่น เซลล์ S2) หรือเขตการปกครองท้องถิ่น (เช่น เขตหรืออำเภอ ขึ้นอยู่กับชุดข้อมูลของประเทศนั้นๆ)

ตัวเลือกที่ 1: รวมการฝังตัวเข้ากับโมเดลที่มีอยู่

  • เตรียมข้อมูลที่ได้จากการสังเกตการณ์ตามโมเดลที่มีอยู่: ใช้การฝังตัวเป็นตัวแปรย่อยเชิงพื้นที่เพื่อปรับปรุงโมเดลที่มีอยู่
  • ฝึกโมเดลการแก้ไขข้อผิดพลาด: ปรับปรุงโมเดลที่มีอยู่โดยผสานรวมการฝังตัวเข้ากับโมเดลที่ใช้เอาต์พุตของโมเดลเดิม ค่าที่คาดหวังหรือข้อมูลที่ได้จากการสังเกตการณ์ และการฝังตัวเพื่อเรียนรู้โมเดลการแก้ไขข้อผิดพลาดใหม่

ตัวเลือกที่ 2: ปรับแต่งสำหรับกรณีการใช้งานที่เฉพาะเจาะจง

  • เลือกโมเดลการคาดการณ์: คุณสามารถใช้โมเดลใดก็ได้ เช่น GBDT, MLP หรือโมเดลเชิงเส้นสำหรับการคาดการณ์
  • ใช้การฝังตัวสำหรับการคาดการณ์: ใช้การฝังตัวของพลวัตของประชากรเป็นฟีเจอร์อินพุตควบคู่ไปกับข้อมูลตามบริบทอื่นๆ เพื่อปรับปรุงความแม่นยำในการคาดการณ์

การรวมข้อมูลตามขอบเขตที่กำหนดเอง

หากข้อมูลที่ได้จากการสังเกตการณ์ใช้รูปหลายเหลี่ยมที่กำหนดเอง เช่น รหัสไปรษณีย์ เส้นชั้นความเท่ากันของเวลาเดินทาง หรือพื้นที่การค้า คุณสามารถทำการรวมข้อมูลตามขอบเขตได้ กระบวนการนี้จะรวมเวกเตอร์เซลล์ S2 หลายรายการเป็นการแสดงเดียวสำหรับรูปหลายเหลี่ยมเป้าหมาย การเลือกวิธีการถ่วงน้ำหนักที่เหมาะสมจะช่วยให้การฝังตัวที่รวมข้อมูลแล้วสะท้อนเป้าหมายการสร้างโมเดลปลายทางได้อย่างแม่นยำ

ใช้การรวมข้อมูลแบบถ่วงน้ำหนักตามประชากรสำหรับกรณีการใช้งานที่เน้นผู้คนเป็นหลัก เช่น ประสิทธิภาพของร้านค้าปลีกหรือการสร้างโมเดลพฤติกรรมผู้บริโภค

การใช้การรวมข้อมูลเชิงพื้นที่แบบถ่วงน้ำหนักตามพื้นที่สำหรับข้อมูลประชากรอาจทำให้ฟีเจอร์แมชชีนเลิร์นนิงบิดเบือนไป ซึ่งจะเกิดขึ้นเมื่อพื้นที่ที่ไม่มีผู้คนอาศัยอยู่ เช่น สวนสาธารณะ เขตอุตสาหกรรม หรือแหล่งน้ำ บิดเบือนโปรไฟล์ของผู้พักอาศัยจริง

หากต้องการแก้ไขปัญหานี้ คุณสามารถคำนวณค่าเฉลี่ยถ่วงน้ำหนักตามประชากรใน BigQuery ได้ แนวทางนี้ใช้ชุดข้อมูลประชากรที่มีความละเอียดสูง เช่น WorldPop ในแคตตาล็อกข้อมูล Earth Engineเพื่อคำนวณความหนาแน่นที่แม่นยำของส่วนเซลล์ S2 ที่ตัดกันแต่ละส่วน

หากต้องการดูตัวอย่างการใช้งานเวิร์กโฟลว์แบบถ่วงน้ำหนักตามประชากรที่สมบูรณ์ ให้เรียกใช้โน้ตบุ๊กแบบโต้ตอบ

2. ค่าเฉลี่ยถ่วงน้ำหนักตามพื้นที่

สำหรับกรณีการใช้งานด้านสิ่งแวดล้อมหรือทางกายภาพ ให้ใช้การรวมข้อมูลแบบถ่วงน้ำหนักตามพื้นที่แทน ซึ่งมีประโยชน์สำหรับการวิเคราะห์การใช้ที่ดิน การศึกษาด้านสภาพแวดล้อมที่สร้างขึ้น หรือการวางแผนโครงสร้างพื้นฐานที่คุณต้องประเมินภูมิภาคโดยไม่คำนึงถึงการกระจายตัวของประชากร

ในสถานการณ์เหล่านี้ พื้นที่ทางกายภาพมีความเกี่ยวข้องมากกว่าความหนาแน่นของประชากร ซึ่งจะช่วยให้มั่นใจว่าทุกตารางกิโลเมตรภายในขอบเขตของรูปหลายเหลี่ยมมีส่วนร่วมในเวกเตอร์ที่รวมข้อมูลแล้วอย่างเท่าเทียมกัน

ภายใต้วิธีนี้ เวกเตอร์การฝังตัวของเซลล์ S2 แต่ละองค์ประกอบจะถูกถ่วงน้ำหนักตามพื้นที่ผิวทางภูมิศาสตร์ที่ครอบคลุมภายในรูปหลายเหลี่ยมเป้าหมาย

ตัวอย่างการค้นหา

แทนที่ your-project.your_dataset.embeddings_table ด้วยโปรเจ็กต์ ชุดข้อมูล และชื่อตารางเป้าหมายจริง

SQL: ดึงข้อมูลการฝังตัว

คำค้นหานี้จะดึงข้อมูลเวกเตอร์การฝังตัวและข้อมูลเมตาด้านการปกครองสำหรับเซลล์ S2 ในชุดข้อมูลที่จัดสรร

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: ค้นหาสถานที่ที่คล้ายกัน

คำค้นหานี้จะระบุสถานที่ที่มีพฤติกรรมคล้ายกันโดยไม่จำเป็นต้องใช้ข้อมูลภายนอก

โดยใช้ฟังก์ชัน ML.DISTANCE เพื่อคำนวณความคล้ายคลึงกันของโคไซน์ ซึ่งจะแสดงผลการจับคู่ที่ตรงกันมากที่สุดสำหรับเซลล์ S2 เป้าหมาย แนวทางนี้รองรับสถานการณ์การวางแผนการขยายธุรกิจ เช่น การกำหนดสถานที่ที่จะเปิดร้านค้าใหม่ตามโปรไฟล์ของสถานที่ที่มีอยู่ซึ่งประสบความสำเร็จ

หากต้องการแสดงภาพเซลล์ S2 บนแผนที่ คุณต้องแปลงหรือรวมรหัสเซลล์ S2 กับรูปเรขาคณิตของรูปหลายเหลี่ยมที่เกี่ยวข้อง เนื่องจากชุดข้อมูลนี้ใช้โทเค็นเซลล์ S2 แทนจุดละติจูดและลองจิจูด

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: รวมข้อมูลลูกค้า

ตัวอย่างนี้แสดงวิธีเพิ่มคุณค่าให้กับข้อมูลภายในของคุณเอง (เช่น ตารางประสิทธิภาพของร้านค้า) ด้วยการฝังตัวเชิงพฤติกรรม ตรวจสอบว่าข้อมูลภายในมีโทเค็นเซลล์ S2 (สตริงฐานสิบหก) ที่ตรงกัน

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: โหลดข้อมูลสำหรับแมชชีนเลิร์นนิง

ระบบจะจัดเก็บการฝังตัวเป็นอาร์เรย์ BigQuery หากต้องการใช้การฝังตัวในไลบรารี ML คุณต้องแปลงคอลัมน์เป็นการฝังตัวเป็นเมทริกซ์ 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)