По моему мнению, есть три различных типа функций, которые вы можете генерировать из данных широты и долготы: категории, кластеры и расстояния.
Категории: превратить каждую запись в категорию или категории. Категории могут быть страной, городом, достопримечательностью (POI) или другим геопространственным слоем. Обычно это называется обратным геокодированием (RGC) или извлечением POI
OpenStreetMap. (Бесплатно, с открытым исходным кодом)
Для RGC: Nominatim API см. Обратное геокодирование
Для POI и дополнительных уровней: Overpass API
Коммерческие API
Google Places API
Foursquare API
Кластеры: в некоторых случаях вы можете рассматривать точки на карте относительно других точек. Поэтому сначала вы кластеризуете точки, а затем назначаете идентификатор кластера как категориальный элемент в вашем наборе функций. Некоторые подходы:
DBSCAN, метод кластеризации, который группирует точки на основе близости / плотности и устойчив к выбросам.
GMM, который хорош, когда ваши кластеры находятся относительно близко друг к другу, но вы хотите хорошее разделение на кластеры или когда вы хотите создать мягкие назначения в кластеры.
Иерархическая кластеризация (), которая создает дендограмму кластеров и позволяет настраивать пороговое значение, определяющее количество кластеров.
Пространственно-временные подходы: в некоторых случаях вы захотите также включить временную область в модель (например, когда вы хотите обнаружить пребывания / посещения пользователей в месте, но игнорировать места, которые они посещают в течение очень короткого времени) .
Третий тип объекта, который вы можете выделить, - это расстояния: расстояние от одной точки до следующей, расстояние до фиксированной точки (например, начало координат), все зависит от вашего контекста. Формула перехода к расстоянию - это Haversine distance (), которая вычисляет расстояние, учитывая, что Земля является сферой, а не плоскостью.