Как я планирую использовать геолокацию и предсказывать, что вам точно понравится
Последние пару месяцев, находясь на карантине, я решил поизучать, что можно интересного создать.
Погружаясь в дата аналитику и изучая большие данные я обнаружил, что существует кладезь информации, которую часто используют различные компании, но практически не используют обычные люди!
Сейчас вам расскажу, что я делал шаг за шагом и как пришел к анализу геоданных, а главное почему это будет работать и предсказывать, понравиться ли вам новое заведение, место, локация или нет.
Я программист и редко использую социальные сети, но люблю изучать данные, которые эти сети собирают. Так как геоданные чаще оставляют в самой известной соцсети с картинками , то этот сервис я и взял за основу. Юзеры ставят геопозицию, когда посещают определенное место, таким образом показывая своим друзьям, куда стоит сходить.
Но, в чем может быть ценность простому человеку в использовании этих данных?
Во первых, это экономия времени, которое тратиться обычно на поиски места каждые выходные, в тех же Афишах или гугл картах. А во вторых, рекомендации построенные по типу личности, помогают выбрать лучшие места для посещения, которые могут интересны конкретному человеку.
Так у меня зародилась идея собрать данные, анализировать их и построить предсказательную модель. Дополнительно, вот эта статья https://blog.floydhub.com/instagram-street-art/ помогла направиться в нужном направлении.
Сперва вводные по данным:
В отличии от Американцев, наши реже используют геоданные в свои постах, но тоже достаточно часто, чтобы собрать на них модель и построить предсказание. Также, в России реже используют качественные хэштеги в постах, а главное, много рекламных постов, постов продвижения и неумелый смм, который мешает нормально категоризировать данные.
Чтобы определить, какие данные использовать, пришлось повозиться.
Взяв готовый набор данных в сети (https://www.kaggle.com/general/79424) и параллельно собирая через официальное апи данные, я выводил, какие характеристики пользователей могут повлиять на выбор того или иного места.
(Официально, доступ к данным сильно ограничен, нет персональных данных пользователя и была только возможность видеть посты с фотографиями, текстом, комментариями и лайками/просмотрами. Можно также взять описание профиля, и другие открытые данные.)
Я начал с хэштегов, так как это уже некая категоризация, затем добавил анализ текста постов, а дальше подключил анализ фотографий.
Хэштеги
Пользователи соцсети используют множество рекламных хэштегов, которые сильно засоряют выборку. Однако, если анализировать профиль целиком, то можно определить пользователей которые привлекают внимание за счет использования нерелевантных хэштегов и просто рекламных постов.
Текст
Это самая важная часть, так как здесь люди описывают место, пишут свои ощущения и выражают свои мысли. Собирая ключевые слова и контекст в котором они написаны, можно определить многое о человеке. (По умолчанию пользователи делятся позитивным опытом, очень редко когда пишут негатив)
Фото
Соцсеть давно анализирует самостоятельно наши фото и делиться собранной информацией через API со всеми. Информация очень скудная, и взяв первую попавшуюся модель, я смог собрать намного больше.
Тут надо упомянуть, что я все еще в процесс улучшении распознавание объектов на фото, и текущие решения еще далеки от идеала.
Вероятно количество постов, дата создания аккаунта и другие общие характеристики влияют на определение типа пользователя, но на данный момент я пренебрег этими данными.
Как же предсказывать в какое место вероятнее всего пойдет человек, используя эти ограниченные данные?
Покажу пример, который я считаю наглядно показывает как работает система:
Есть два друга, которые разделяют одинаковые увлечения, но живут в разных городах.
Можно грубо предположить, что если друг А приедет в город друга Б, и тот его поведет по любимым местам, то они посетят те места, которые друг Б публиковал в соцсетях.
Но, чтобы улучшить вероятность хороших впечатлений, нужно знать больше людей в том же городе, которые разделяют те же интересы и нужно знать больше мест, которые они публикуют в соцсетях.
Вывод, чем больше у нас данных, тем лучше мы можем определить тип пользователя и тем лучше мы можем делать рекомендации.
Как это работает?
Интересы можно задать вручную в добавок к автоматическому анализу профиля в соцсети.
После система ищет тип профиля с похожими интересами и характеристиками.
Определив тип пользователя, строится прогноз в зависимости от текущей позиции и предпочтений, какие ближайшие локации данный тип пользователя может посетить. Все локации собираются вручную и модерируются.
Таким образом я убрал явных шлак в выдаче рекомендаций.
Сейчас корректность прогнозов стремиться к 80% и думаю ее можно улучшить.
Буду рад вашим комментариям, вопросам и предложениям по доработки системы до ее официального релиза.

