Temel doğruluk verilerini hazırlama
Nüfus Dinamikleri yerleştirmelerini kullanmak için kesin referans verileriniz desteklenen bir coğrafi sınıra göre toplanmalıdır. Yönetim sınırı türleri dünya genelinde farklılık gösterdiğinden verilerinizi evrensel matematiksel ızgara sistemlerini (ör. S2 hücreleri) veya yerel yönetim bölgelerini (ör. belirli ülke veri kümesine bağlı olarak ilçeler ya da bölgeler) kullanarak hizalayabilirsiniz.
1. seçenek: Yerleştirmeleri mevcut bir modele dahil etme
- Mevcut modele dayalı kesin referans verileri hazırlama: Mevcut bir modeli geliştirmek için gömmeleri coğrafi uzamsal kovaryantlar olarak kullanın.
- Hata düzeltme modeli eğitme: Yerleştirmeleri, orijinal model çıkışını, beklenen değeri veya kesin referansı ve yerleştirmeleri alarak yeni bir hata düzeltme modeli öğrenen bir modele entegre ederek mevcut bir modeli iyileştirin.
2. seçenek: Belirli kullanım alanları için ayarlama
- Tahmin modeli seçin: Tahminler için GBDT, MLP veya doğrusal gibi herhangi bir model kullanılabilir.
- Tahmin için yerleştirmeleri kullanma: Tahmin doğruluğunu artırmak için diğer bağlamsal verilerle birlikte giriş özellikleri olarak Population Dynamics yerleştirmelerini kullanın.
Özel sınır toplama
Gerçek verilerinizde posta kodları, sürüş süresi izokronları veya ticaret alanları gibi özel poligonlar kullanılıyorsa sınır toplama işlemi gerçekleştirebilirsiniz. Bu işlem, hedef poligon için birden fazla S2 hücre vektörünü tek bir temsilde birleştirir. Doğru ağırlıklandırma metodolojisini seçmek, toplanan yerleştirmenin aşağı akış modelleme hedeflerinizi doğru şekilde yansıtmasını sağlar.
1. Nüfus ağırlıklı ortalama (PDI için önerilen varsayılan değer)
Perakende mağazası performansı veya tüketici davranış modellemesi gibi insan merkezli kullanım alanları için nüfus ağırlıklı toplama kullanın.
Demografik veriler için alan ağırlıklı bir mekansal toplama kullanmak, makine öğrenimi özelliklerinizi bozabilir. Bu durum, parklar, sanayi bölgeleri veya su kütleleri gibi yerleşim olmayan alanlar gerçek sakinlerin profilini bozduğunda ortaya çıkar.
Bu sorunu çözmek için BigQuery'de nüfus ağırlıklı ortalama hesaplayabilirsiniz. Bu yaklaşımda, kesişen her S2 hücre segmentinin kesin yoğunluğunu hesaplamak için Earth Engine Veri Kataloğu'ndaki WorldPop gibi yüksek çözünürlüklü demografik veri kümeleri kullanılır.
Nüfus ağırlıklı iş akışının eksiksiz bir uygulama örneğini görmek için etkileşimli not defterini çalıştırın.
2. Alana göre ağırlıklı ortalama
Çevresel veya fiziksel kullanım alanları için bunun yerine alana göre ağırlıklı toplama kullanın. Bu özellik, nüfus dağılımından bağımsız olarak bölgeleri değerlendirmeniz gereken arazi kullanım analizi, yapılandırılmış çevre çalışmaları veya altyapı planlaması için kullanışlıdır.
Bu senaryolarda, fiziksel arazi alanı insan nüfus yoğunluğundan daha önemlidir. Bu, poligon sınırları içindeki her bir kilometrekarenin, toplu vektöre eşit şekilde katkıda bulunmasını sağlar.
Bu yöntemde, her bir bileşen S2 hücresinin yerleştirme vektörü, hedef poligon içinde kapsadığı coğrafi yüzey alanına göre ağırlıklandırılır.
Sorgu örnekleri
your-project.your_dataset.embeddings_table yerine gerçek projenizi, veri kümenizi ve hedef tablo adınızı girin.
SQL: Yerleştirmeleri getirme
Bu sorgu, sağlanan veri kümenizdeki S2 hücreleri için yerleştirme vektörünü ve yönetim meta verilerini alır.
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: Benzer konumları bulma
Bu sorgu, harici veri gerektirmeden davranışsal olarak benzer konumları tanımlar.
Kosinüs benzerliğini hesaplamak için ML.DISTANCE işlevini kullanır ve hedef bir S2 hücresi için en iyi eşleşmeleri döndürür. Bu yaklaşım, başarılı bir mevcut konumun profiline göre yeni bir mağazanın nerede açılacağını belirlemek gibi genişleme planlama senaryolarını destekler.
Bu veri kümesi enlem ve boylam noktaları yerine S2 hücresi jetonları kullandığından, S2 hücrelerini haritada görselleştirmek için S2 hücresi kimliğini karşılık gelen poligon geometrisine dönüştürmeniz veya bu ikisini birleştirmeniz gerekir.
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: Müşteri verilerini birleştirme
Bu örnekte, kendi dahili verilerinizi (ör. mağaza performansı tablosu) davranış yerleştirmeleriyle nasıl zenginleştireceğiniz gösterilmektedir. Dahili verilerinizin eşleşen S2 hücre jetonları (onaltılık dizeler) içerdiğinden emin olun.
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: Makine öğrenimi için veri yükleme
Yerleştirmeler BigQuery dizileri olarak depolanır. Bunları makine öğrenimi kitaplıklarında kullanmak için sütunu NumPy matrisine dönüştürmeniz gerekir.
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)
Google Colab'de çalıştır
Kaynağı GitHub'da görüntüle