
Мы продолжаем погружаться в тему создания пространственных признаков. Если вы пропустили предыдущие части, рекомендую начать с первой статьи о базовых принципах работы с геоданными, а затем перейти ко второй, где разбирались пространственные объединения, метрики расстояний и источниках данных. Сейчас мы переходим к «высшему пилотажу» пространственного анализа — агрегированию данных и оценке шаблонов.
Агрегирование пространственных данных
Пространственное агрегирование помогает контролировать степень детализации данных в зависимости от пространственных характеристик отдельных записей. Эта операция может быть полезна, если вы хотите сравнить разные регионы по конкретному параметру, (например, плотность населения или динамика продаж), оценить значение признака на единицу площади (скажем, среднюю выручку магазинов на квадратный километр) или преобразовать набор точек в растровые пространственные данные.
Метод работает с разными типами объектов:
точки — например, магазины или АЗС, для которых можно считать суммарные показатели в пределах зоны;
линии (дороги, коммуникации) — значения признаков здесь удобно взвешивать по длине пересечения с зоной интереса;
полигоны — например, районы города, где площадь объектов становится естественным весовым коэффициентом.
Важно учитывать, что агрегирование упрощает анализ, но «схлопывает» внутреннюю вариативность данных, типа как усреднённая температура по больнице может скрывать локальные перегретые серверные.
Существует, по крайней мере, три метода пространственного агрегирования.
Агрегирование по административным границам
В этом методе в качестве свойства для группировки используются административные границы. Этот подход особенно эффективен, когда границы совпадают с аналитическими потребностями бизнеса. Например, экономические и демографические показатели (плотность населения, средняя зарплата, заболеваемость) часто коррелируют с местным законодательством и географическими особенностями.

Важно помнить, что районы могут отличаться на порядки по площади и населению — без нормализации вы рискуете сравнивать яблоки с апельсинами. Например, регион с гигантской площадью, но низкой плотностью населения может исказить анализ продаж розничных сетей.
Агрегирование по квадратным тайлам
Квадратная сетка обладает рядом преимуществ для пространственного анализа: идентичная площадь ячеек устраняет необходимость нормализации данных по этому параметру, а управление детализацией сводится к простому изменению размера сторон. Кстати, именно эта особенность делает квадратные тайлы удобными для преобразования в растровые форматы — по сути, они работают как гигантские пиксели с географической привязкой.

Первый шаг для такого анализа — тесселяция, то есть покрытие выбранной территории неперекрывающимися квадратами. Чтобы не генерировать ячейки для всего земного шара (что было бы вычислительно безумием), процесс можно ограничить административными границами или другими логическими областями. Можно также использовать готовые пространственные индексы, например S2 (http://s2geometry.io/).

Это особенно актуально для крупных стран с неравномерным распределением данных — например, покрывать сеткой только населённые пункты вместо всей территории РФ.
Важный нюанс: выбор проекции карты напрямую влияет на форму «квадратов». В глобальных проекциях типа Web Mercator (используется в большинстве онлайн-карт) ячейки ближе к полюсам растягиваются, что может искажать расчёты плотности. Для локальных анализов лучше использовать локальные проекции с минимальными искажениями.
Агрегирование по шестиугольной сетке
H3 — система геопространственного индексирования, разработанная Uber для покрытия Земли шестиугольной сеткой. Выбор шестиугольников вместо квадратов или треугольников обусловлен их геометрическими преимуществами:
6 соседей вместо 8 у квадратов, что упрощает анализ смежных зон;
равное расстояние от центра ячейки до всех соседних центров (в отличие от квадратов, где диагональные соседи дальше);
минимальное отношение периметра к площади среди регулярных многоугольников, что снижает количество тайлов для покрытия территории.

Иерархическая структура H3 позволяет управлять детализацией через 16 уровней разрешения — от крупных ячеек (~100 км в диаметре) до микрообъектов (~0.5 м). Библиотека H3 Python упрощает операции: агрегацию данных внутри шестиугольников, поиск соседних ячеек (ближайших соседей) и расчёт статистики в радиусе.
Признаки окружающей среды объекта
В предыдущей статье мы уже обсуждали необходимость учитывать окружение как источник для создания признаков. Вы можете описывать окружение с помощью агрегированных статистических данных в пределах круга. Это соответствует реальной логике: ближайшие объекты чаще посещаются, а радиус агрегации можно адаптировать под задачу. Например, круг радиусом 1 км примерно соответствует 15-минутной пешей доступности для среднего человека.

Кроме того, может быть более точным использовать буферные зоны для крупных объектов, чем просто круг, так как это позволяет учитывать сложные формы полигонов (например, формы торговых центров и парков). Для анализа доступности на автомобиле полигональные кольца помогают игнорировать слишком близкие объекты — представьте, как неудобно искать парковку ради кофейни через дорогу! Однако не все объекты доступны в определённой области за ограниченное время. Пешеходы не могут пересечь реку без моста, не все дороги доступны для грузовиков, и не каждый автомобиль может пересечь пересечённую местность. Чтобы учитывать маршрутные расстояния, можно использовать изохроны — линии, показывающие время в пути. Некоторые маршрутизирующие сервисы предлагают готовые инструменты для их построения, включая OSRM и Google Maps API.
Во многих случаях окружение объекта можно описать через близлежащие объекты. Они могут различаться в зависимости от конкретной задачи, но некоторые из них универсальны. Торговые центры, станции метро и железнодорожные вокзалы — это известные точки притяжения с большим пешеходным потоком. Рестораны, пабы и кафе популярны среди взрослого населения, а их количество может служить прокси-признаком для распределения населения по возрасту, как и количество детских садов и школ (для семей с детьми) и больниц, врачебных кабинетов, аптек (для пожилых людей).

Вы также можете использовать дополнительные данные о плотности населения из различных источников (например, шестиугольную индексацию H3 в наборах данных Kontur), но примерную численность населения можно оценить по площади жилого здания, умноженной на количество этажей.
Удалённые объекты в пределах большого радиуса агрегации могут зашумлять данные; поэтому лучше использовать расстояния как весовые коэффициенты (например, обратно пропорциональные квадрату дистанции). Также применяйте нормализацию по площади для сравнения признаков в пределах кругов разной площади — иначе крупные зоны автоматически получат более высокие абсолютные значения, что введёт в заблуждение даже опытных аналитиков.
Оценка шаблонов
Статистика Getis Ord Gi*
Когда требуется не просто измерить параметры объекта, но и определить, случайно ли его аномальное значение или это признак горячей (hot spot) либо холодной зоны (cold spot), на помощь приходит статистика Getis Ord Gi*.
Проще говоря, Gi* — это z-оценка, которая учитывает взвешенные по расстоянию значения соседних объектов. Если в окружении анализируемой точки отсутствует кластер, её взвешенная сумма будет близка к средневзвешенному значению по всему набору данных. В противном случае z-оценка достигнет статистической значимости (меньше -1.96 или больше +1.96 при p < 0.05), сигнализируя о наличии горячей или холодной зоны. Интересно, что эта статистика особенно чувствительна к «плотным» кластерам — например, к районам с аномально высокой плотностью кафе или зонам с низкой посещаемостью транспорта.
Кратко о механике расчёта:
для каждой точки определяется взвешенная сумма значений в её окружении (напомню первый закон Уолдо Тоблера — «Всё связано со всем, но то, что ближе, связано сильнее», следовательно, близкие объекты вносят больший вклад);
сравнение этой суммы с ожидаемым средним для случайного распределения;
стандартизация разницы через стандартное отклонение, что даёт z-оценку.
Практический нюанс: порог ±1.96 работает только при нормальном распределении данных. Для иных случаев критичные значения проверяются через бутстреп или пермутационные тесты — иначе рискуете принять шум за инсайт.

Локальная статистика Морана I
Не только кластеры высоких и низких значений могут предоставить необходимые подсказки. Британский врач Джон Сноу обнаружил способ передачи холеры, анализируя карту новых случаев заражения: все они были сосредоточены вокруг одного насоса. Люди обычно набирали воду из этого источника, но Сноу также нашёл здание без заражённых внутри зоны. Жители здания, в котором была пивоварня, предпочитали пить пиво вместо воды из насоса, что натолкнуло Сноу на идею о том, как холера распространяется. Этот исторический кейс иллюстрирует принцип пространственной автокорреляции задолго до появления формальных статистических методов.

Локальная статистика Морана I измеряет степень пространственной автокорреляции для каждого объекта в наборе данных. В отличие от глобальной версии, которая даёт общую оценку кластеризации для всей территории, локальные индикаторы пространственной ассоциации (LISA) позволяют определить, формирует ли конкретная точка кластер с соседями или выступает выбросом. Положительные значения указывают на схожесть значений признака с окружающими объектами (например, участки с высокой плотностью кафе), отрицательные — на контраст (например, пустырь среди жилых кварталов).
Значимые значения LISA выявляют скопления и аномалии, которые невозможно объяснить случайностью. Интерпретация напоминает метод Getis Ord Gi, но здесь акцент смещён с поиска «горячих зон» на анализ структурной связанности данных — как если бы мы сравнивали узоры на ковре вместо поиска отдельных пятен.
Кластеризация и оценка плотности ядра
Кластеризация может выполняться классическими методами машинного обучения, такими как K-Means или иерархическая кластеризация, для группировки близких точек, но DBSCAN часто оказывается предпочтительнее для геоданных.


Этот алгоритм не требует задания числа кластеров априори, автоматически выявляет шумовые точки и работает с объектами произвольной формы — критически важно для анализа реальных географических паттернов, где границы скоплений редко совпадают с идеальными окружностями.

Оценка плотности ядра (KDE) дополняет кластеризацию, позволяя визуализировать и количественно оценить интенсивность пространственных явлений. Метод строит гладкую поверхность плотности признаков, используя гауссово ядро для сглаживания, где ширина окна (bandwidth) напрямую влияет на детализацию: слишком маленькое значение выделяет локальные выбросы, слишком большое — скрывает важные детали. Например, KDE помогает идентифицировать зоны с аномально высокой концентрацией ДТП или выявить «пустоты» в распределении точек продаж, что особенно полезно при планировании инфраструктуры.
Резюме
В этой статье мы завершили обсуждение анализа пространственных данных и создания признаков на их основе, рассмотрев агрегирование данных и преобразование пространственных шаблонов в признаки.
Теперь у вас есть идеи, как предоставлять пространственные данные вашим ML-моделям — будь то группировка событий по регионам с помощью пространственных JOIN, выявление скоплений через DBSCAN или оценка плотности через KDE. Главное — видеть, что геопространственный анализ — это не «гадание на картах», если подкрепить его правильным выбором метрик и методов агрегации. Попробуйте для закрепления материала применить эти подходы к реальным данным — например, к анализу зон риска ДТП или оптимизации логистических маршрутов.
Чтобы не пропустить новые материалы по геоаналитике и другим аспектам ML, подписывайтесь на профиль Cinimex на Хабре.