29.04.2021       Выпуск 384 (26.04.2021 - 02.05.2021)       Статьи

Использование геолокационных данных в машинном обучении: основные методы

Данные о местоположении — это важная категория данных, с которыми часто приходится иметь дело в проектах машинного обучения. Они, как правило, дают дополнительный контекст к данным используемого приложения. Специально к старту нового потока курса по Machine Learning, делимся с вами кратким руководством по проектированию и визуализации элементов с геопространственными данными.

Читать>>




Экспериментальная функция:

Ниже вы видите текст статьи по ссылке. По нему можно быстро понять ссылка достойна прочтения или нет

Просим обратить внимание, что текст по ссылке и здесь может не совпадать.

Геолокационные данные могут применяться в различных сценариях
Геолокационные данные могут применяться в различных сценариях

Данные о местоположении — это важная категория данных, с которыми часто приходится иметь дело в проектах машинного обучения. Они, как правило, дают дополнительный контекст к данным используемого приложения. Специально к старту нового потока курса по Machine Learning, делимся с вами кратким руководством по проектированию и визуализации элементов с геопространственными данными.


Например, перед вами может встать задача прогнозирования объёмов онлайновых продаж через анализ клиентских данных. Методы машинного обучения способны определить более точные модели покупательского поведения с учётом информации о местоположении клиента. Применение таких методов более эффективно, если речь идёт о физических (не онлайновых) площадках, таких как магазины розничной торговли, рестораны, гостиницы или больницы.

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

Данные о предметной области приложения (включают основную информацию о местоположении)

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

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

Другие приложения могут использовать другие типы данных, например изображения. При прогнозировании для таких предметных областей, как сельское хозяйство (например в составлении прогнозов объёмов производства продуктов питания), геология (например при поиске оптимального места добычи полезных ископаемых), могут использоваться спутниковые изображения.

Спутниковые изображения
Спутниковые изображения

Очевидно, что при составлении прогноза данные о местоположении играют большую роль. Как же их можно использовать?

Геопространственные данные (используются как дополнение к информации о местоположении)

Наш набор данных можно расширить, добавив к нему внешние данные, основанные на местоположении (либо общедоступные, либо полученные от третьей стороны). В этой статье я буду использовать термин "геопространственные данные", или "данные геоинформационной системы (ГИС)", поскольку такие данные включают в себя информацию, связанную с географическим контекстом местности.

С помощью геопространственных данных фиксируются основные географические атрибуты местоположения.

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

Аналогичным образом, если используется информация со спутника, такие данные могли бы включать сведения о расположении рек и лесов, топографическую информацию (сведения о расположении холмов и долин), данные о региональном климате и прочее. Давайте вначале посмотрим, как эти данные представлены.

Форматы геопространственных данных

Таких стандартных форматов может быть несколько. В них хранятся геометрические данные и другие описательные атрибуты географических объектов. Например, в таких данных могут храниться координаты дорожных маршрутов с указанием типа и ширины дорожного покрытия, данные об ограничениях скорости на участках дороги, типе дороги (городская улица, автострада и пр.).

Самые часто используемые форматы:

  • Векторный формат (самый древний и самый распространённый стандарт. Файл в векторном формате фактически представляет собой набор файлов: в одном файле хранятся геометрические данные, в другом — специальные атрибуты данных и т. п.).

  • GeoPackage (более новый стандарт, набирающий популярность. Данные хранятся в одном небольшом по размеру файле, реализованном в виде контейнера базы данных SQLLite).

  • GeoJSON (использует стандартный текстовый формат JSON).

Геометрические геоданные хранятся в виде векторных объектов:

  • точка: например местоположения зданий, домов, ресторанов, стоянок такси;

  • ломаная: например улицы, реки, железные дороги;

  • полигон: определяет зоны, например регионы, районы, озера, штаты, страны;

  • мультиполигон: набор полигонов.

В геоинформационных данных используются структуры данных Точка, Ломаная, Полигон и пр.
В геоинформационных данных используются структуры данных Точка, Ломаная, Полигон и пр.

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

Географические объекты представляют географические особенности и отношения между ними
Географические объекты представляют географические особенности и отношения между ними

Они используют структуры данных, определяющие связь между такими объектами, например:

  • Какие объекты находятся рядом друг с другом?

  • Какие дуги соединяются друг с другом?

  • Какие объекты находятся внутри других полигонов?

Загрузка геоданных

К счастью, нам не нужно вникать в тонкости структуры таких форматов и работать с низкоуровневыми структурами данных.

Мы можем использовать замечательную Python-библиотеку GeoPandas, максимально упрощающую выполнение задачи. GeoPandas представляет собой надстройку библиотеки Pandas, поэтому в ней сохранены все её мощные функции.

Она работает с объектами GeoDataFrame и GeoSeries, представляющими собой "пространственно ориентированные" версии объектов DataFrame и Series в Pandas. В надстройке реализуется ряд дополнительных методов и атрибутов, которые можно использовать для работы с геоданными в DataFrame.

GeoDataFrame — это обычный объект в Pandas DataFrame с дополнительным "геометрическим" столбцом в каждой строке, в который заносятся данные о местоположении.

GeoPandas также может одной командой загружать геопространственные данные из различных форматов географических файлов в GeoDataFrame. Операции в GeoDataFrame выполняются одинаково независимо от исходного формата. Таким образом, стираются различия между форматами и их структурами данных.

import geopandas as gpd

# Load the Shape map of New York City as a GeoDataFrame
shape_df = gpd.read_file(shape_data_dir/'ny.shp')

Предварительная обработка геоданных (базовые системы координат)

Геоданные содержат координаты (x, y) географических мест, как правило, в виде значений широты и долготы. Однако, как ни странно, сами по себе эти координаты не могут быть привязаны к физическому местоположению.

Такие координаты — не более чем числа в произвольном пространстве. Для того чтобы они могли однозначно отображать реальное место в реальном мире, они должны быть связаны с системой координат. Такая система координат называется базовой (CRS).

Базовая система координат привязывает координаты широты/долготы к реальной точке на Земле
Базовая система координат привязывает координаты широты/долготы к реальной точке на Земле

Нам сейчас просто важно понять, что, поскольку Земля не является идеальной сферой, идеальных универсальных базовых систем координат просто не существует. Систем CRS множество, и каждая оптимизирована под конкретные цели или различные участки Земли.

Предварительная обработка геоданных (картографические проекции)

Аналогичным образом системы CRS используются для проецирования координат местоположения на карту с целью визуализации.

Картографическая проекция выводит изображение 3D-сферы на 2D-поверхность
Картографическая проекция выводит изображение 3D-сферы на 2D-поверхность

Поэтому, если вы получаете геоданные из разных источников, нужно позаботиться о том, чтобы перепроецировать все эти координаты в одну и ту же базовую систему координат. Также нужно убедиться, что она совпадает с базовой системой координат, используемой картой визуализации. В противном случае координаты вашего местоположения будут отображены неверно.

После загрузки и стандартизации геоданных необходимо выполнить анализ полученных данных и визуализировать их.

Визуализация

В Geopandas реализована довольно мощная встроенная функциональность прорисовки. Кроме того, для визуализации геоданных можно использовать другие отличные библиотеки Python, например Folium и Plotly.

Загрузите данные приложения в Pandas Dataframe.

Переведите данные в GeoDataFrame посредством преобразования информации о местоположении в её геометрический формат.

import pandas as pd
import geopandas as gpd
from shapely.geometry import Point

# Load your application data with Pandas
app_df = pd.read_csv(app_data_dir/'app.csv')

# Convert it to a GeoDataFrame by transforming the Latitude/Longitude coordinates 
loc_crs = {'init': 'epsg:4326'}
loc_geom = [Point(xy) for xy in zip(app_df['longitude'], app_df['latitude'])]
geo_df = gpd.GeoDataFrame(app_df, crs=loc_crs, geometry=loc_geom)

# Plot the GeoDataFrame
geo_df.plot()

Затем выведите изображение GeoDataFrame.

Изображение данных о местоположении
Изображение данных о местоположении

Сами по себе точки данных не несут осмысленного контекста. Поскольку эти точки представляют собой места в Нью-Йорке, вы должны наложить их на базовую карту Нью-Йорка (которую мы загрузили из Shapefile), и только тогда такой набор точек приобретёт значимость.

Базовая карта Нью-Йорка
Базовая карта Нью-Йорка
import matplotlib.pyplot as plt
fig, ax = plt.subplots(figsize=(10,10))
# Plot the base map
shape_df.plot(ax=ax, color='lightgrey', zorder=1)
# Overlay the data locations
geo_df.plot(ax=ax, alpha=0.5, zorder=2)
Для получения контекста наложите данные о местоположении на базовую карту
Для получения контекста наложите данные о местоположении на базовую карту

Добавление функциональных возможностей

В зависимости от решаемой проблемы данные о местоположении можно использовать для добавления в набор данных дополнительных функций. Вот самые распространённые дополнительные функции.

Геокодирование и обратное геокодирование

Геокодирование — это способ привязки адреса, записанного в текстовом виде (например адреса дома, который вы собираетесь оценить), к координатам (широте/долготе). И, наоборот, обратное геокодирование позволяет сопоставить с координатами адрес (по улице, городу, штату и почтовому индексу). Такую функциональность обеспечивает Geopy — популярная Python-библиотека.

Расстояние между двумя точками

Имея точные координаты достопримечательностей, можно рассчитать расстояние между ними. Например, важной информацией может быть расстояние до ближайшей больницы или расстояние между местами посадки и высадки в каршеринге. Такое расстояние можно измерить несколькими способами:

  • эвклидово расстояние — простое расстояние по прямой между координатами (x, y) двух точек. Это расстояние измеряется на плоской 2D-поверхности;

  • геодезическое расстояние измеряется на сферической Земле, то есть на трёхмерной поверхности. Например, кратчайшим расстоянием будет расстояние между двумя точками на сфере. Расстояние Haversine — это примерно то же, что и дуга большого круга, но для его расчёта используется формула Haversine;

  • манхэттенское расстояние применяется к городским местоположениям, в которых улицы образуют кварталы. Используется для расчёта фактического расстояния (например при вождении или пешей прогулке) между двумя точками вдоль городских улиц. Такой расчёт более логичен, чем расчёт расстояния по прямой. Название расстояния происходит от района Манхэттен в Нью-Йорке, заполненного кварталами квадратной формы с дорогами, идущими параллельно друг другу и пересекающимися под прямым углом. Однако на практике, хотя улицы и пролегают прямо, их направление не всегда в точности ориентировано на север, юг, восток или запад. Это обстоятельство учитывается: рассчитывается скорректированное расстояние с учётом угла поворота карты улиц города.

Манхэттенское расстояние
Манхэттенское расстояние

Определение направления из одной точки к другой

При перемещении между двумя точками земного шара помимо расстояния можно рассчитать направление движения (азимут). При выходе из начальной точки рассчитывается начальное направление.

Направление между Кейптауном и Мельбурном
Направление между Кейптауном и Мельбурном

Расстояние от точки до ломаной

Это ещё одна полезная информация. Например, вы хотите узнать, как далеко отстоит дом от шоссе, железнодорожного пути или автобусного маршрута? Или какое расстояние от фермы до реки?

Локализация

Кроме точек на карте имеются регионы. Возможно, вам захочется узнать, находится ли точка в определённом регионе.

Например, находится ли дом в школьном округе с высоким рейтингом, так как это обстоятельство существенно влияет на стоимость недвижимости.

Перекрытие регионов

Перекрытие появляется при пересечении или объединении двух регионов. Например, перекрывает ли зона наводнения (или лесная зона) границы округа или штата.

Географическая кластеризация

Помогает группировать места в географические кластеры, которые могут не совпадать с существующими географическими границами страны или штата.

Например, для сегментации клиентов можно определить кластеры на основе местоположения клиентов и создать функцию, назначающую каждого клиента своему кластеру.

Другим примером могут служить кластеры, создаваемые на базе информации о местоположении COVID-инфицированных людей и используемые при мониторинге распространения заболевания.

Встраивание географических областей

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

Модели машинного обучения

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

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

Обратите внимание, что значения широты/долготы часто могут использоваться в чистом виде с древовидными моделями, такими как Random Forest или Gradient Boost, не требующими нормализации данных. Другие модели, например нейросетевые, обычно требуют нормализации значений координат.

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

Узнайте, как прокачаться и в других специальностях или освоить их с нуля:

Другие профессии и курсы





Разместим вашу рекламу

Пиши: mail@pythondigest.ru

Нашли опечатку?

Выделите фрагмент и отправьте нажатием Ctrl+Enter.

Система Orphus