Пример теории и науки о реальных данных

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

В этой статье мы собираемся использовать Yelp Dataset, в частности файл business.json, для извлечения функций, зависящих от местоположения.

Мы также будем использовать Справочник по математике Бронштейна, Семендяева, Мусиола, Мюлига (ссылка на PDF) и соответствующее резюме Яна Филиппа Матушека.

Обзор данных

Документация Yelp дает хороший обзор функций, ниже - краткий фрагмент.

{
    // string, 22 character unique string business id
    "business_id": "tnhfDv5Il8EaGSXZGiuQGg",

    // string, the business's name
    "name": "Garaje",

    // string, the full address of the business
    "address": "475 3rd St",

    // string, the city
    "city": "San Francisco",

    // string, 2 character state code, if applicable
    "state": "CA",

    // string, the postal code
    "postal code": "94107",

    // float, latitude
    "latitude": 37.7817529521,

    // float, longitude
    "longitude": -122.39612197,

    // float, star rating, rounded to half-stars
    "stars": 4.5,

    // integer, number of reviews
    "review_count": 1198

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

Например, предприятие, указанное выше, находится в районе Сан-Франциско SoMA (, где есть отличный гуакамоле), и вокруг него сосредоточено множество других ресторанов.

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

Сферические системы координат

Земля представляет собой несовершенную сферу с приблизительным радиусом 6357 километров. Географическая система координат - метод, позволяющий определять точки на сферах, часто используется в землеустройстве среди других профессий.

Мы определяем широту как угол, который колеблется от нуля градусов на экваторе до 90 градусов на полюсах. И наоборот, долгота проходит от полюса к полюсу и колеблется от 0 до 180 градусов. На рисунке ниже эти две концепции показаны на сфере.

Точки запроса в районе

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

Две точки на сфере

В качестве первого подхода мы можем вычислить ортодромическое расстояние между двумя точками P(lat1, long1) и Q(lat2, long2) на сфере с радиусом R:

Этот метод чрезмерно медленный, поскольку он означает вычисление расстояния между точкой и всеми остальными для всех точек в наборе данных.

Угловой радиус

Лучше подойти к угловому радиусу, чтобы описать, насколько большой сфера или круг выглядит с данной точки зрения. Например, если мы хотим преодолеть расстояние d на сфере радиуса R, тогда угловой радиус r равен:

Ограничительная рамка

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

Перемещение по кругу широты для определения ограничивающей долготы не работает так же, как описано выше. На изображении ниже точки T1 и T2 имеют максимальную и минимальную долготу соответственно. Они не находятся на том же круге широты, что и достопримечательность M, но находятся ближе к полюсу.

Широта T1 и T2:

Поэтому предельные долготы рассчитываются следующим образом:

Где:

Математика в Python

Мы можем интерпретировать приведенную выше методологию в коде Python:

В примере с Garaje наш код вернет фрейм данных, в котором перечислены все предприятия в радиусе d_query=2km от Garaje, как показано на изображении ниже:

Функциональная инженерия

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

Что мы можем извлечь из этой информации? Оказывается, мы можем многому научиться:

  • Сколько предприятий поблизости (плотность)
  • Сравнение ценового диапазона
  • Сравнение рейтингов звезд
  • Количество отзывов
  • и т.д…

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

Рейтинг звезд

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

Ценовой диапазон

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

Подсчет плотности

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

Обратите внимание, что график ниже будет сильно различаться в зависимости от радиуса запроса и степени развития в данной области.

Вывод

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

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