Данные о местоположении и похожее моделирование

В рекламе двойное моделирование используется для увеличения размера вашей аудитории.

Предположим, у вас есть группа пользователей, составляющих вашу аудиторию, но вы знаете, что этого недостаточно для проведения кампании, о которой так отчаянно просит ваш клиент. Что вы делаете? Вы берете свою аудиторию и «расширяете» ее за счет «похожих» пользователей: положительное влияние на доставку очевидно, но есть и дополнительное преимущество для охвата пользователей, которые могут еще не знать о вашем клиенте (привлечение пользователей).

Несмотря на то, что двойник упоминается в сотнях мест (например, [1], [2]), очень редко это объясняется с технической точки зрения, так как существует несколько разных способов решения этой проблемы.

Данные о местоположении

Данные, которые я ищу для этого PoC, должны содержать идентификатор наряду со временем и местоположением GPS. После непродолжительного поиска в Google я наткнулся на Microsoft Research T-Drive Trajectory Data Sample, набор данных, содержащий местоположения такси, который идеально подходит для этого проекта (предлагаю вам также просмотреть соответствующие публикации, так как это действительно интересно). вещи).

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

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

Моделирование

Теперь, когда у нас есть матрица такси/геохеширования, мы можем моделировать отношения между такси разными способами: для этой статьи я выберу самый простой из них — NearestNeighbours из scikit-learn.

Тестирование

Самое интересное: как мы это протестируем? Поскольку я хочу, чтобы эта статья была красивой и короткой, я просто нарисую несколько графиков и докажу вам, что это работает. :-)

Код ниже делает следующее:

  • выбрать случайное такси
  • найти 2 наиболее похожих такси
  • нанести их на карту

Это то, что ты получаешь:

Насколько мы далеки от системы производственного уровня?

Короче: очень, очень далеко!

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

Ссылки и ресурсы