ข้อมูลเชิงลึกเกี่ยวกับพลวัตของประชากร - รหัสไปรษณีย์ของสหรัฐอเมริกา

เอกสารประกอบสำหรับนักพัฒนาซอฟต์แวร์

รายละเอียดสินค้า

ข้อมูลเชิงลึกเกี่ยวกับพลวัตของประชากร (PDI) คือชุดข้อมูลการฝังที่กลั่นกรองข้อมูล เกี่ยวกับพฤติกรรมของมนุษย์และการโต้ตอบกับสิ่งแวดล้อมให้เป็นการฝังที่กระชับ พร้อมสำหรับการวิเคราะห์ (หรือ "ลายนิ้วมือดิจิทัล") ในสถานที่ที่เฉพาะเจาะจง

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

ภาพรวมของผลิตภัณฑ์

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

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

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

ข้อกำหนดเบื้องต้น

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

  • เปิดใช้ Analytics Hub API ใน Cloud Console
  • เปิดใช้ BigQuery API ใน Cloud Console
  • มีความรู้พื้นฐานเกี่ยวกับผลิตภัณฑ์ BigQuery
  • ตรวจสอบว่าบัญชีของคุณมีบทบาทเจ้าของ การสมัครใช้บริการ Analytics Hub (roles/analyticshub.subscriptionOwner) เพื่อดำเนินการที่เกี่ยวข้องกับผู้ติดตาม
  • ตรวจสอบว่าบัญชีของคุณมีบทบาทผู้ใช้ BigQuery (roles/bigquery.user) เพื่อสร้างชุดข้อมูล

หากคุณเพิ่งเริ่มใช้การฝังหรือ BigQuery Machine Learning เราขอแนะนำให้คุณดูสื่อการฝึกอบรมต่อไปนี้ให้จบก่อนเริ่มการวิเคราะห์

ใช้การฝัง

ทำความเข้าใจข้อมูล

ก่อนเริ่มการวิเคราะห์ โปรดสละเวลาสักครู่เพื่อตรวจสอบโครงสร้างของสคีมา

การจัดระเบียบชุดข้อมูล

ระบบจะจัดระเบียบการฝังลงในตาราง BigQuery แยกต่างหากสำหรับแต่ละประเทศหรือภูมิภาคทดสอบ

โครงสร้างของเวกเตอร์การฝัง

คอลัมน์ features คือเวกเตอร์ 330 มิติ (จัดเก็บเป็นREPEATED FLOAT อาร์เรย์ใน BigQuery) แต่ละส่วนของอาร์เรย์จะสอดคล้องกับสัญญาณข้อมูล ที่เฉพาะเจาะจงซึ่งดึงมาจากโมเดลพลวัตของประชากร

การทำความเข้าใจโครงสร้างนี้จะช่วยให้สามารถตัดฟีเจอร์ออกได้ (เช่น การพิจารณาว่าพฤติกรรมการค้นหาคาดการณ์ยอดขายได้มากน้อยเพียงใดเมื่อเทียบกับสภาพอากาศ)

ดัชนีเวกเตอร์ แหล่งข้อมูล คำอธิบาย
0 – 127 เทรนด์การค้นหาแบบรวม บันทึกความสนใจและความกังวลในระดับภูมิภาค (เช่น การค้นหา "ยิม" "อาการไข้หวัด" "สินค้าหรู")
128 – 255 แผนที่และปริมาณผู้เข้าใช้บริการ บันทึกสภาพแวดล้อมที่สร้างขึ้น (จุดที่น่าสนใจ เช่น โรงพยาบาล สวนสาธารณะ โรงเรียน) และการเข้าชมของมนุษย์เพื่อแสดงสถานที่ที่น่าสนใจ
256 – 329 สภาพอากาศและคุณภาพอากาศ บันทึกบริบทด้านสิ่งแวดล้อม (อุณหภูมิ ปริมาณน้ำฝน คุณภาพอากาศ)

คอลัมน์และข้อมูลเมตาที่สำคัญ

ตารางการฝังมีข้อมูลเมตาเชิงพื้นที่และเชิงเวลาที่ช่วยให้วิเคราะห์ กรอง และทำงานร่วมกับบริการอื่นๆ ได้

เนื่องจากรหัสไปรษณีย์เดียวอาจข้ามเขตแดนการบริหารเป็นครั้งคราว (เช่น เส้นเขตแดนของเขต) เราจึงระบุฟิลด์เขตบริหารเป็นอาร์เรย์

  • geo_id: รหัสสถานที่ที่ไม่ซ้ำกันที่เชื่อมโยงกับรหัสไปรษณีย์นี้
  • geo_name: สตริงรหัสไปรษณีย์ของภูมิภาค (เช่น '90210')
  • administrative_area_level_1_names: รายการ (ARRAY<STRING>) ของ ชื่อที่มนุษย์อ่านได้สำหรับขอบเขตระดับบนสุด (เช่น ['California'])
  • administrative_area_level_1_ids: รายการ (ARRAY<STRING>) ของ Place ID ที่ไม่ซ้ำกันสำหรับขอบเขตการบริหารระดับบนสุดที่รหัสไปรษณีย์นี้ตัดกัน (เช่น รัฐหรือจังหวัด)
  • administrative_area_level_2_names: รายการ (ARRAY<STRING>) ของ ชื่อที่มนุษย์อ่านได้สำหรับขอบเขตระดับรอง (เช่น ['Los Angeles County'])
  • administrative_area_level_2_ids: รายการ (ARRAY<STRING>) ของ Place ID ที่ไม่ซ้ำกันสำหรับเขตการปกครองรองที่รหัสไปรษณีย์นี้ตัดผ่าน (เช่น เขตหรืออำเภอ)
  • features: เวกเตอร์การฝังหลักแบบ 330 มิติ ซึ่งจัดเก็บในรูปแบบดั้งเดิมเป็น ARRAY<FLOAT64> การโหลดข้อมูลนี้ลงใน Pandas โดยใช้ Python ต้องทำให้แบน หรือแปลงเป็นเมทริกซ์ NumPy
  • snapshot_date: DATE ในรูปแบบ YYYY-MM-DD ซึ่งกำหนดให้ใช้วันแรกของเดือนเท่านั้น แสดงการแบ่งช่วงเวลาแบบรายเดือนที่เฉพาะเจาะจงซึ่งมีการรวบรวมฟีเจอร์อินพุต เพื่อสร้างข้อมูลการฝัง เช่น ข้อมูล ตั้งแต่เดือนเมษายน 2026 จะจัดรูปแบบเป็น 2026-04-01

เตรียมข้อมูลความจริงพื้นฐาน

หากต้องการใช้การฝังไดนามิกของประชากร คุณต้องรวบรวมข้อมูลที่ได้จากการสังเกตการณ์ ไปยังขอบเขตทางภูมิศาสตร์ที่รองรับ (รหัสไปรษณีย์)

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

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

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

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

ข้อมูลโค้ดสำหรับการเริ่มต้นอย่างรวดเร็ว

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

1. SQL: การดึงข้อมูลการฝังสำหรับเดือนที่เฉพาะเจาะจง

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

SELECT
  snapshot_date,
  geo_name AS postal_code,
  geo_id AS place_id,
  features -- The 330-dim vector
FROM
  `your-project.population_dynamics___us___domestic.v1_postal_code.embeddings_table`
WHERE
  snapshot_date = '2025-10-01' -- You must use the first of the month ('-01')
LIMIT 10;

2. SQL: การกรองตามเขตบริหาร (การยกเลิกการซ้อนอาร์เรย์)

เนื่องจากรหัสไปรษณีย์อาจครอบคลุมขอบเขตการบริหารหลายแห่ง ระบบจึงจัดเก็บฟิลด์ administrative_area_*เป็นอาร์เรย์ หากต้องการกรองรหัสไปรษณีย์ทั้งหมดภายในรัฐหนึ่งๆ (เช่น "แคลิฟอร์เนีย") คุณต้องใช้ฟังก์ชัน UNNEST() ของ BigQuery

SELECT
  snapshot_date,
  geo_name AS postal_code,
  admin1_name
FROM
  your-project.population_dynamics___us___domestic.v1_postal_code.embeddings_table,
  UNNEST(administrative_area_level_1_names) AS admin1_name
WHERE
  -- On or after October 2025
  snapshot_date >= '2025-10-01' -- You must use the first of the month ('-01')
  AND admin1_name = 'California'
LIMIT 10;

3. SQL: การค้นหาสถานที่ที่คล้ายกัน

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

WITH TargetLocation AS (
  SELECT features AS target_vector
  FROM `your-project.population_dynamics___us___domestic.v1_postal_code.embeddings_table`
  WHERE snapshot_date = '2025-10-01' -- You must use the first of the month ('-01')
    AND geo_name = '90210' -- Replace with your target postal code
  LIMIT 1
)
SELECT
  t.geo_name AS postal_code,
  -- 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.population_dynamics___us___domestic.v1_postal_code.embeddings_table` t,
  TargetLocation p
WHERE
  t.snapshot_date = '2025-10-01' -- You must use the first of the month ('-01')
  AND t.geo_name != '90210' -- Exclude the target itself
ORDER BY
  similarity_score DESC
LIMIT 20;

4. SQL: การรวมข้อมูลลูกค้า

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

SELECT
  store.store_id,
  store.postal_code,
  store.total_revenue,
  embeddings.features AS pdi_vector
FROM
  `your-project.internal_data.store_performance` AS store
JOIN
  `your-project.population_dynamics___us___domestic.v1_postal_code.embeddings_table` AS embeddings
ON
  store.postal_code = embeddings.geo_name
WHERE
  embeddings.snapshot_date = '2025-10-01' -- You must use the first of the month ('-01')

5. Python: การโหลดข้อมูลสำหรับแมชชีนเลิร์นนิง

ระบบจะจัดเก็บการฝังเป็นอาร์เรย์ BigQuery หากต้องการใช้ในไลบรารี ML คุณต้องแปลงคอลัมน์เป็นเมทริกซ์ NumPy

from google.cloud import bigquery
import numpy as np
import pandas as pd

client = bigquery.Client()

query = """
SELECT
  geo_name,
  features -- Returns as a list of floats
FROM
  `your-project.population_dynamics___us___domestic.v1_postal_code.embeddings_table`
WHERE
  snapshot_date = '2025-10-01' -- You must use the first of the month ('-01')
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)

คำถามที่พบบ่อย (FAQ)

ฉันจะเข้าถึงข้อมูลดิบที่ป้อน (เช่น คำค้นหาที่เฉพาะเจาะจงหรือร่องรอยการเคลื่อนไหว) ได้ไหม

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

คุณเลือกข้อความค้นหาที่ใช้สร้างการฝังอย่างไร

เราใช้เอนทิตีกราฟความรู้ (KG) แทนคำค้นหาดิบ ตัวอย่างเช่น คำค้นหาอย่าง "แฟนเทย์เลอร์ สวิฟต์" และ "ปีกใน KC" จะแมปกับเอนทิตี KG พื้นฐานเดียวกัน ("Travis Kelce") แนวทางนี้ไม่ขึ้นอยู่กับภาษาใดภาษาหนึ่ง ครอบคลุมหมวดหมู่เชิงความหมายที่กว้างขึ้น และช่วยเพิ่มความเป็นส่วนตัวได้อย่างมาก

มิติข้อมูลเวกเตอร์ตีความได้ไหม (เช่น มิติข้อมูล 5 คือ "กาแฟ" ใช่ไหม)

ไม่ เวกเตอร์คือการแสดงข้อมูลที่ซ่อนอยู่ เนื่องจากโมเดลแมชชีนเลิร์นนิงเป็นผู้เรียนรู้ฟีเจอร์ต่างๆ จึงไม่มีการแมปเชิงความหมายอย่างง่ายหรือการแปลแบบหนึ่งต่อหนึ่งจากดัชนีเวกเตอร์สุดท้ายไปยังอินพุตแหล่งที่มาที่เฉพาะเจาะจง แม้ว่าเราจะทราบว่า ดัชนีแต่ละบล็อกมาจากชุดข้อมูลใด (เช่น ดัชนี 0-127 แสดงถึงเทรนด์การค้นหา) แต่ดัชนีที่เฉพาะเจาะจง เช่น ดัชนี 5 จะไม่ได้เชื่อมโยงกับคีย์เวิร์ดเดียว แต่จะแสดงถึงฟีเจอร์ที่ซับซ้อนและเป็นนามธรรมซึ่งโมเดลได้เรียนรู้

ชุดข้อมูลมีขอบเขตรูปหลายเหลี่ยม (Shapefile) ไหม

ไม่ได้ ชุดข้อมูลนี้มีรหัสไปรษณีย์ (geo_name) และรหัสสถานที่ที่เชื่อมโยง (geo_id) แต่ไม่มีรูปเรขาคณิตแบบหลายเหลี่ยมดิบ (เช่น WKT)

เราขอแนะนำแนวทางต่อไปนี้ ทั้งนี้ขึ้นอยู่กับกรณีการใช้งานของคุณ

  • สำหรับการแสดงภาพใน Google Maps: คุณสามารถใช้รหัสสถานที่ที่ระบุใน geo_id เพื่อจัดรูปแบบและแสดงขอบเขตบนแผนที่โดยตรงโดยใช้ การจัดรูปแบบตามข้อมูล แม้ว่าขอบเขตเหล่านี้จะเหมาะสำหรับการแสดงภาพ แต่ก็ไม่สามารถส่งออกเป็นไฟล์เรขาคณิตดิบได้
  • สำหรับการรวมและการวิเคราะห์เชิงพื้นที่: หากต้องการรูปหลายเหลี่ยมเชิงพื้นที่ดิบ เราขอแนะนำให้รวมชุดข้อมูลนี้กับชุดข้อมูลขอบเขตสาธารณะ (เช่น ชุดข้อมูลที่มีอยู่ในชุดข้อมูลสาธารณะของ BigQuery) โดยใช้รหัสไปรษณีย์ geo_name

ช่วงเวลาของชุดข้อมูลการฝังคือเมื่อใด

ระบบจะอัปเดตการฝัง PDI ทุกเดือนและเพิ่มเดือนใหม่แต่ละเดือนลงในชุดข้อมูล ข้อมูลจะแสดงโดยใช้คอลัมน์ snapshot_date (จัดรูปแบบเป็น YYYY-MM-DD) ซึ่งให้ค่าพื้นฐานที่เสถียรซึ่งแสดงถึงลายนิ้วมือด้านพฤติกรรมและ ทางกายภาพของสถานที่ตั้งสำหรับเดือนที่ระบุ