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

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

  1. Выбор модели, не требующей нормализации таких функций. Вы можете использовать немасштабируемые функции в некоторых моделях, таких как Дерево решений, но очень вероятно, что та же модель улучшит свою точность с помощью масштабированных / нормализованных функций. Таким образом, мы могли бы также выполнить преобразование функций
  2. Выполнение обратного геокодирования. Вы можете использовать библиотеки, такие как geopy и reverse_geocoder, чтобы восстановить адрес из географического местоположения. Однако Арсений пишет в своем среднем посте, что недостаток получения информации через HTTP в том, что это не всегда быстро и что вы можете достичь ограничений API, если вы работаете с большими данными. Кроме того, адреса (названия городов, стран) могут содержать опечатки, что потребует дальнейшей очистки ваших преобразованных данных.
  3. Преобразование данных геолокации в зоны. Вы можете использовать алгоритм кластеризации, такой как алгоритм k-ближайшего соседа, чтобы сгруппировать данные о географическом местоположении (используя небольшое количество потенциальных кластеров) и присвоить каждому кластеру или группе уникальный идентификатор. Затем этот уникальный идентификатор может заменить столбцы широты и долготы.

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

Ресурсы:

  1. Https://medium.com/open-machine-learning-course/open-machine-learning-course-topic-6-feature-engineering-and-feature-selection-8b94f870706a
  2. Https://stats.stackexchange.com/questions/330800/how-to-normalize-gps-coordinates-for-deep-learning