जनसंख्या में बदलाव से जुड़ी अहम जानकारी के एम्बेड किए गए कॉम्पोनेंट का इस्तेमाल करना

ग्राउंड ट्रुथ डेटा तैयार करना

जनसंख्या के आंकड़ों की एम्बेडिंग का इस्तेमाल करने के लिए, आपके वास्तविक डेटा को उस भौगोलिक सीमा के हिसाब से एग्रीगेट किया जाना चाहिए जिसके लिए यह सुविधा उपलब्ध है. दुनिया भर में एडमिनिस्ट्रेटिव बाउंड्री के टाइप अलग-अलग होते हैं. इसलिए, अपने डेटा को अलाइन करने के लिए, यूनिवर्सल गणितीय ग्रिड सिस्टम (जैसे कि S2 सेल) या स्थानीय एडमिनिस्ट्रेटिव क्षेत्र (जैसे कि काउंटी या ज़िले, जो किसी देश के डेटासेट पर निर्भर करते हैं) का इस्तेमाल किया जा सकता है.

पहला विकल्प: मौजूदा मॉडल में एम्बेडिंग शामिल करना

  • मॉडल पर आधारित मौजूदा सटीक डेटा तैयार करना: मौजूदा मॉडल को बेहतर बनाने के लिए, एम्बेडिंग को भौगोलिक डेटा के कोवैरिएट के तौर पर इस्तेमाल करें.
  • गड़बड़ी ठीक करने वाले मॉडल को ट्रेन करें: मौजूदा मॉडल को बेहतर बनाने के लिए, एम्बेडिंग को ऐसे मॉडल में इंटिग्रेट करें जो ओरिजनल मॉडल का आउटपुट, अनुमानित वैल्यू या सटीक जानकारी, और एम्बेडिंग लेता है, ताकि गड़बड़ी ठीक करने वाला नया मॉडल तैयार किया जा सके.

दूसरा विकल्प: इस्तेमाल के खास उदाहरणों के लिए ट्यून करना

  • अनुमान लगाने वाला मॉडल चुनें: अनुमान लगाने के लिए, किसी भी मॉडल का इस्तेमाल किया जा सकता है. जैसे, GBDT, MLP या लीनियर मॉडल.
  • अनुमान लगाने के लिए एम्बेडिंग का इस्तेमाल करना: अनुमान को ज़्यादा सटीक बनाने के लिए, जनसंख्या के आंकड़ों की एम्बेडिंग को इनपुट सुविधाओं के तौर पर इस्तेमाल करें. साथ ही, कॉन्टेक्स्ट के हिसाब से अन्य डेटा का इस्तेमाल करें.

कस्टम बाउंड्री एग्रीगेशन

अगर आपके ग्राउंड ट्रुथ डेटा में कस्टम पॉलीगॉन का इस्तेमाल किया जाता है, जैसे कि पिन कोड, ड्राइव-टाइम आइसोक्रोन या कारोबार की जगहें, तो बाउंड्री एग्रीगेशन किया जा सकता है. इस प्रोसेस में, टारगेट पॉलीगॉन के लिए एक से ज़्यादा S2 सेल वेक्टर को एक ही प्रज़ेंटेशन में जोड़ा जाता है. वज़न असाइन करने का सही तरीका चुनने से, एग्रीगेट की गई एम्बेडिंग आपके डाउनस्ट्रीम मॉडलिंग लक्ष्यों को सटीक तरीके से दिखाती है.

लोगों से जुड़े इस्तेमाल के मामलों के लिए, जनसंख्या के हिसाब से एग्रीगेशन का इस्तेमाल करें. जैसे, खुदरा स्टोर की परफ़ॉर्मेंस या उपभोक्ता के व्यवहार की मॉडलिंग.

जनसांख्यिकी (उम्र, लिंग, आय, शिक्षा वगैरह की जानकारी) डेटा के लिए, इलाके के हिसाब से वेटेज तय करके स्पैटियल एग्रीगेशन का इस्तेमाल करने से, मशीन लर्निंग की सुविधाएं ठीक से काम नहीं करती हैं. ऐसा तब होता है, जब पार्क, इंडस्ट्रियल ज़ोन या पानी के स्रोत जैसी जगहों पर रहने वाले लोगों की जानकारी न होने की वजह से, असल निवासियों की प्रोफ़ाइल में गड़बड़ी हो जाती है.

इस समस्या को हल करने के लिए, BigQuery में जनसंख्या के हिसाब से औसत निकाला जा सकता है. इस तरीके में, ज़्यादा रिज़ॉल्यूशन वाले डेमोग्राफ़िक डेटासेट का इस्तेमाल किया जाता है. जैसे, Earth Engine के डेटा कैटलॉग में मौजूद WorldPop. इससे, इंटरसेक्ट करने वाले हर 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;

एसक्यूएल: मिलती-जुलती जगहें ढूंढें

इस क्वेरी से, व्यवहार के हिसाब से मिलती-जुलती जगहों की पहचान की जाती है. इसके लिए, बाहरी डेटा की ज़रूरत नहीं होती.

यह कोसाइन समानता का हिसाब लगाने के लिए, 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: Join customer data

इस उदाहरण में बताया गया है कि व्यवहार से जुड़ी एम्बेडिंग का इस्तेमाल करके, अपने इंटरनल डेटा (जैसे, स्टोर की परफ़ॉर्मेंस टेबल) को कैसे बेहतर बनाया जा सकता है. पक्का करें कि आपके इंटरनल डेटा में, 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 ऐरे के तौर पर सेव किया जाता है. इनका इस्तेमाल एमएल लाइब्रेरी में करने के लिए, आपको कॉलम को 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)