Данные о местоположении и похожее моделирование
В рекламе двойное моделирование используется для увеличения размера вашей аудитории.
Предположим, у вас есть группа пользователей, составляющих вашу аудиторию, но вы знаете, что этого недостаточно для проведения кампании, о которой так отчаянно просит ваш клиент. Что вы делаете? Вы берете свою аудиторию и «расширяете» ее за счет «похожих» пользователей: положительное влияние на доставку очевидно, но есть и дополнительное преимущество для охвата пользователей, которые могут еще не знать о вашем клиенте (привлечение пользователей).
Несмотря на то, что двойник упоминается в сотнях мест (например, [1], [2]), очень редко это объясняется с технической точки зрения, так как существует несколько разных способов решения этой проблемы.
Данные о местоположении
Данные, которые я ищу для этого PoC, должны содержать идентификатор наряду со временем и местоположением GPS. После непродолжительного поиска в Google я наткнулся на Microsoft Research T-Drive Trajectory Data Sample, набор данных, содержащий местоположения такси, который идеально подходит для этого проекта (предлагаю вам также просмотреть соответствующие публикации, так как это действительно интересно). вещи).
Данные о местоположении — странный зверь: широта и долгота непрерывны, но их взаимосвязь не является линейной, что делает их очень сложными для моделирования. По этой причине мне нужно преобразовать их в дискретное пространство (т.е. сделать категоричным), и очевидное (хотя и не лучшее) решение — использовать геохеш:
После обработки всех данных (чтение + объединение) мы преобразуем данные в матрицу такси/геохеширования:
Моделирование
Теперь, когда у нас есть матрица такси/геохеширования, мы можем моделировать отношения между такси разными способами: для этой статьи я выберу самый простой из них — NearestNeighbours из scikit-learn.
Тестирование
Самое интересное: как мы это протестируем? Поскольку я хочу, чтобы эта статья была красивой и короткой, я просто нарисую несколько графиков и докажу вам, что это работает. :-)
Код ниже делает следующее:
- выбрать случайное такси
- найти 2 наиболее похожих такси
- нанести их на карту
Это то, что ты получаешь:
Насколько мы далеки от системы производственного уровня?
Короче: очень, очень далеко!
Но это не цель данной статьи. Для разработки систем производственного уровня требуется время, всестороннее тестирование и постоянный мониторинг с течением времени, а это гораздо больше, чем я хотел рассказать.
Ссылки и ресурсы
- https://medium.com/radon-dev/als-implicit-collaborative-filtering-5ed653ba39fe
- https://github.com/nikhitmago/lookalike-моделирование
- https://www.microsoft.com/en-us/research/publication/t-drive-trajectory-data-sample/
- https://towardsdatascience.com/how-did-we-build-book-recommender-systems-in-an-hour-part-2-k-nearest-neighbors-and-matrix-c04b3c2ef55c (на самом деле, большинство код для этой статьи взят отсюда… читать обязательно!)