เอกสารประกอบสำหรับนักพัฒนาซอฟต์แวร์
รายละเอียดสินค้า
ข้อมูลเชิงลึกเกี่ยวกับพลวัตของประชากร (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 เราขอแนะนำให้คุณดูสื่อการฝึกอบรมต่อไปนี้ให้จบก่อนเริ่มการวิเคราะห์
- หลักสูตรเร่งรัดเกี่ยวกับแมชชีนเลิร์นนิง: การฝัง: ภาพรวมพื้นฐานแบบรวดเร็วเกี่ยวกับวิธีที่โมเดลแมชชีนเลิร์นนิงใช้การฝังเพื่อ แปลข้อมูลที่มีมิติสูงเป็นพื้นที่ที่มีมิติต่ำกว่าในขณะที่ รักษาความสัมพันธ์เชิงความหมาย
- เริ่มต้นใช้งานการค้นหาเวกเตอร์และ การฝัง: ห้องทดลอง Google Cloud Skills Boost ที่ใช้งานได้จริงซึ่งจะแนะนำการฝังเวกเตอร์ ความคล้ายกันเชิงความหมาย และวิธีใช้การฝังภายในระบบนิเวศ Google Cloud ที่กว้างขึ้น
- บทแนะนำเกี่ยวกับแมชชีนเลิร์นนิง (ML) ของ BigQuery (BQML): เนื่องจากชุดข้อมูล PDI โฮสต์อยู่ใน BigQuery คุณจึงฝึกและ เรียกใช้โมเดลแมชชีนเลิร์นนิงใน Embedding ได้โดยตรงโดยใช้ SQL มาตรฐาน โดยไม่ต้องส่งออกข้อมูล
ใช้การฝัง
ทำความเข้าใจข้อมูล
ก่อนเริ่มการวิเคราะห์ โปรดสละเวลาสักครู่เพื่อตรวจสอบโครงสร้างของสคีมา
การจัดระเบียบชุดข้อมูล
ระบบจะจัดระเบียบการฝังลงในตาราง 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 ต้องทำให้แบน หรือแปลงเป็นเมทริกซ์ NumPysnapshot_date:DATEในรูปแบบYYYY-MM-DDซึ่งกำหนดให้ใช้วันแรกของเดือนเท่านั้น แสดงการแบ่งช่วงเวลาแบบรายเดือนที่เฉพาะเจาะจงซึ่งมีการรวบรวมฟีเจอร์อินพุต เพื่อสร้างข้อมูลการฝัง เช่น ข้อมูล ตั้งแต่เดือนเมษายน 2026 จะจัดรูปแบบเป็น2026-04-01
เตรียมข้อมูลความจริงพื้นฐาน
หากต้องการใช้การฝังไดนามิกของประชากร คุณต้องรวบรวมข้อมูลที่ได้จากการสังเกตการณ์ ไปยังขอบเขตทางภูมิศาสตร์ที่รองรับ (รหัสไปรษณีย์)
ตัวเลือกที่ 1: รวมการฝังลงในโมเดลที่มีอยู่
- เตรียมข้อมูลที่ได้จากการสังเกตการณ์ตามโมเดลที่มีอยู่: ใช้การฝังเป็น ตัวแปรร่วมเชิงพื้นที่เพื่อปรับปรุงโมเดลที่มีอยู่
- ฝึกโมเดลการแก้ไขข้อผิดพลาด: ปรับปรุงโมเดลที่มีอยู่โดย ผสานรวมการฝังลงในโมเดลที่ใช้เอาต์พุตของโมเดลเดิม ค่าที่คาดไว้หรือข้อมูลที่ได้จากการสังเกตการณ์ และการฝังเพื่อฝึก โมเดลการแก้ไขข้อผิดพลาดใหม่
ตัวเลือกที่ 2: ปรับแต่งสำหรับกรณีการใช้งานที่เฉพาะเจาะจง
- เลือกประเภทโมเดลการคาดการณ์: คุณใช้โมเดลใดก็ได้ เช่น GBDT, MLP หรือเชิงเส้น สำหรับการคาดการณ์
- ใช้การฝังสำหรับการคาดการณ์: ใช้การฝังพลวัตของประชากรเป็นฟีเจอร์อินพุตควบคู่ไปกับข้อมูลเชิงบริบทอื่นๆ เพื่อปรับปรุงความแม่นยำในการคาดการณ์
ข้อมูลโค้ดสำหรับการเริ่มต้นอย่างรวดเร็ว
ใช้ข้อมูลโค้ดเหล่านี้เพื่อยืนยันสิทธิ์เข้าถึงและทำความเข้าใจรูปแบบข้อมูล
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) ซึ่งให้ค่าพื้นฐานที่เสถียรซึ่งแสดงถึงลายนิ้วมือด้านพฤติกรรมและ
ทางกายภาพของสถานที่ตั้งสำหรับเดือนที่ระบุ