שימוש בהטמעות של תובנות לגבי דינמיקה של אוכלוסייה

הכנת נתוני אמת בסיסיים

כדי להשתמש בהטמעות של נתונים דינמיים של אוכלוסייה, נתוני האמת הבסיסית צריכים להיות מצטברים לגבול גיאוגרפי נתמך. סוגי הגבולות האדמיניסטרטיביים משתנים ברחבי העולם, ולכן אפשר ליישר את הנתונים באמצעות מערכות רשת מתמטיות אוניברסליות (כמו תאי S2) או אזורים אדמיניסטרטיביים מקומיים (כמו מחוזות או נפות, בהתאם למערך הנתונים הספציפי של המדינה).

אפשרות 1: שילוב הטמעות במודל קיים

  • הכנת נתוני אמת קרקע (ground truth) קיימים שמבוססים על מודל: משתמשים בהטמעות כמשתני עזר גיאוספציאליים כדי לשפר מודל קיים.
  • אימון מודל לתיקון שגיאות: שיפור מודל קיים על ידי שילוב ההטבעות במודל שמקבל את פלט המודל המקורי, את הערך הצפוי או את האמת הקרקעית (ground truth) ואת ההטבעות כדי ללמוד מודל חדש לתיקון שגיאות.

אפשרות 2: התאמה לתרחישי שימוש ספציפיים

  • בוחרים מודל חיזוי: אפשר להשתמש בכל מודל, כמו GBDT,‏ MLP או ליניארי, כדי ליצור תחזיות.
  • שימוש בהטמעות לצורך חיזוי: אפשר להשתמש בהטמעות של דינמיקת אוכלוסייה כמאפייני קלט, לצד נתונים הקשריים אחרים, כדי לשפר את דיוק החיזוי.

צבירה של גבולות בהתאמה אישית

אם נתוני האמת שלכם מבוססים על מצולעים מותאמים אישית, כמו מיקודים, קווי זמן נסיעה או אזורי מסחר, תוכלו לבצע צבירה של גבולות. במהלך התהליך הזה, כמה וקטורים של תאי S2 משולבים לייצוג יחיד של מצולע היעד. בחירה נכונה של מתודולוגיית השקלול מבטיחה שה-embedding המצטבר ישקף בצורה מדויקת את יעדי המידול שלכם במורד הזרם.

מומלץ להשתמש בצבירה משוקללת לפי גודל האוכלוסייה לתרחישי שימוש שמתמקדים באנשים, כמו ביצועים של חנות קמעונאית או מודלים של התנהגות צרכנים.

שימוש בצבירה מרחבית משוקללת לפי אזור לנתונים דמוגרפיים עלול לעוות את התכונות של הלמידה החישובית. המצב הזה קורה כשאזורים לא מיושבים, כמו פארקים, אזורי תעשייה או מקווי מים, משבשים את הפרופיל של התושבים בפועל.

כדי לפתור את הבעיה, אפשר לבצע ממוצע משוקלל לפי גודל האוכלוסייה ב-BigQuery. בגישה הזו נעשה שימוש במערכי נתונים דמוגרפיים ברזולוציה גבוהה, כמו WorldPop בקטלוג הנתונים של Earth Engine, כדי לחשב את הצפיפות המדויקת של כל פלח של תא S2 שחוצה את האזור.

כדי לראות דוגמה מלאה להטמעה של תהליך עבודה עם משוקלל אוכלוסייה, מריצים את ה-notebook האינטראקטיבי.

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)