Русский
Русский
English
Статистика
Реклама

2гис

Особенности масштабирования WebGL-карты

22.12.2020 08:17:45 | Автор: admin
Мывыпустили редактор стилей. Подробно о том, как сним можно настроить карту под задачи сервиса, можно почитать наvc.ru. НаХабреже хотим рассказать оконцепции StyleZoom, которую мыиспользуем втом числе ивредакторе стилей.

Под катом небольшой рассказ озум-левелах: почему встандартном виде они неподходят для больших территорий икак масштаб влияет назагрузку тайлов ивнешний вид карты.




Зум-левел


Для обозначения масштаба вWebGL-карте 2ГИС, как ивомногих других картах, используется число зум-левел или просто зум. Зум, равный нулю, соответствует масштабу карты, при котором весь мир помещается вквадрат размером 256256px.


Карта мира при zoom = 0

Увеличение зума наединицу соответствует растяжению карты вдва раза. Напервом зуме весь мир будет размером 256 2 = 512px. Начетвёртом получаем размер 256 2 2 2 2 = 4096px.

Такая система позволяет обозначать диапазон масштабов удобными для понимания числами. Например, zoom = 11 примерно один крупный город наэкране, zoom = 19позволяет детально рассмотреть здания ипроходы между ними.

Проекция Меркатора


Вкартах 2ГИС используется картографическая проекция Меркатора. Картографическая проекция способ отобразить сферическую поверхность Земли наплоской карте.

Так как плоскость ишар неодно итоже, любая картографическая проекция искажает форму или размеры объектов. Впроекции Меркатора объекты набольших широтах накарте выглядят больше, чем объекты наэкваторе. Поэтому натаких картах Гренландия выглядит размером сАфрику, хотя фактически еёплощадь меньше площади Африки в14раз. Здесь можно рассмотреть, как проекция искажает размеры стран.


Если Россию приблизить к экватору, её размер на карте значительно уменьшается

Растяжение объектов пропорционально 1 / cos(lat), где lat широта объекта. Из этой формулы следует, что объекты на широте Санкт-Петербурга (lat = 60) на карте будут растянуты в два раза. А объекты на Северном или Южном полюсах (lat = 90) и вовсе растянутся до бесконечности. Именно поэтому на картах в проекции Меркатора никогда не рисуются полюса на них обрезается всё севернее и южнее 85 широты.

Подробнее о проекции Меркатора можно почитать в этом наглядном и увлекательном материале.

Проблемы сзумом ипроекцией Меркатора


Изсвойств проекции Меркатора вытекает главная проблема сзумами: один итотже зум-левел наразных широтах соответствует разным фактическим масштабам карты.

Сравним скриншоты карты на14-м зуме вМурманске (широта69) иТашкенте (широта41).


15-й зум в Мурманске


15-й зум в Ташкенте

Видно, насколько сильно отличаются поразмеру дома. ВМурманске они крупные, вТашкентеже карта мельчит.

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

Решение


Для решения этой проблемы мыввели понятие styleZoom, который может отличаться отобычного zoom.
Обычный zoom StyleZoom
Определяет масштабирование объектов Определяет, какие тайлы грузить
Записывается в url Определяет, для какого масштаба применять стили
Используется в привычных методах getZoom / setZoom Используется в методах getStyleZoom / setStyleZoom
Совпадает с растровыми тайлами

styleZoom вычисляется изzoom ишироты посдедующей формуле: styleZoom = zoom + log2(1/ (2 * cos(lat)).

Изформулы вытекают следующие свойства styleZoom:
  • Нашироте 60styleZoom = zoom. Так как стили изначально писались наНовосибирск иМоскву, решили взять эту широту забазовую.
  • Наширотах <60styleZoom < zoom. Наэкваторе styleZoom = zoom 1.
  • Наширотах >60 styleZoom > zoom.

Посмотрим теперь, как будут выглядеть Ташкент и Мурманск при styleZoom = 15.


Ташкент, styleZoom = 15 (zoom 15.59)


Мурманск, styleZoom = 15 (zoom 14.53)

Хорошо видно, что styleZoom соответствует реальному масштабу карты вне зависимости отшироты: дома визуально неотличаются поразмеру, карта вдвух разных городах выглядит одинаково.

Ограничения


Умеханизма коррекции есть недостатки, которые проявляются вдвух сценариях работы скартой.

zoom < 9
Нанебольших зумах, когда наэкране виден весь мир или его бльшая часть, перетаскивание карты вверх-вниз приводит кбольшим изменениям широтыи, соответственно, styleZoom.

Вовремя перетаскивания это может привести кзагрузке новых тайлов, переключению стилей, появлению или исчезновению объектов ит.п. Чтобы избежать этого эффекта, приzoom<9коррекция отключается, иstyleZoom приравнивается кzoom.

lat > 60
Наочень больших широтах styleZoom становится сильно больше zoom. Так как styleZoom отвечает зато, какие тайлы грузить, может оказаться, например, что на14-м зуме мызагрузим иотобразим тайлы 16-го зума. Тайл 16-го зума в16раз меньше поплощади, чем тайл 14-го зума. Иесли обычно наэкран попадает 30тайлов, товэтом случае ихбудет 480. Аколичество тайлов сильно влияет напроизводительность. Чтобы незагружать видеокарту наэтих широтах, при lat > 60коррекция отключается, иstyleZoom также приравнивается кzoom.

Вместо вывода


Подключайте API наших WebGL-карт иоформляйте картыпод задачи вашего сервиса, непереживая, как они будут выглядеть вразных городах.

Запост отдельное спасибо Лёше Федосову. Лёха, привет!
Подробнее..

Владельцы MAPS.ME отменили изменения и вернули старое приложение. Надолго ли?

01.02.2021 12:14:39 | Автор: admin

Слева старое приложение, справа декабрьская версия от южнокорейцев. Источник: Смерть MAPS.ME?

В ноябре 2020 года Mail.Ru Group продала MAPS.ME южнокорейской компании Daegu Limited (входит в состав платёжной системы Parity.com), и уже 20 декабря 2020 года новые владельцы выпустили обновление, которое практически убило приложение.

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

К счастью, новые владельцы осознали глубину своей ошибки и откатили изменения. В апдейте от 30 декабря 2020 года восстановлена вся функциональность. Казалось бы, победа? Справедливость восторжествовала? Нет, в это слабо верится.

Продажа MAPS.ME


Приложение MAPS.ME (первоначально MapsWithMe) создал белорусский стартап MapsWithMe в апреле 2011 года. Разработчиков было четверо Юрий Мельничек (автор проекта, бывший сотрудник Google), Александр Золотарёв, Виктор Говако и Сергей Речицкий.


Юрий Мельничек, Александр Золотарёв, Виктор Говако и Сергей Речицкий в 2011 году. Источник: 42.tut.by

Изначальной идеей было выпустить карты, которые работают в офлайне, в отличие от Google Maps. Во-первых, они доступны без интернета и не нужно платить за роуминг. Во-вторых, такое приложение по своей сути будет быстрее. Идея оказалась отличной. Хотя к тому времени на рынке уже было небольших приложений с картами в офлайне, но большинство из них сохраняли данные в виде статических изображений, а это не позволяло скачать и использовать целиком карту страны в виде векторных тайлов.

За основу сразу взяли OpenStreetMap, но в приложении изменили стили, чтобы карты OSM стали удобнее и симпатичнее. Впоследствии ссылку на OpenStreetMap спрятали, что можно считать нарушением лицензии OSM.

Команда работала над проектом примерно полтора года. Было тяжело, инвестиции из собственного кармана достигли $250 тыс. Двум основателям пришлось продать свои квартиры. Первой вышла версия для iOS, потом для Android. Затем платная версия за 169 рублей, которая позволяла загружать карты в высоком разрешении. Приложение нашло аудиторию по всему миру: на первом месте по количеству пользователей были США, потом Россия.

В 2014 году компанию купила корпорация Mail.Ru Group за 542 млн рублей ($11,48 млн по курсу на 14 ноября 2014 года) и основатели получили свои доли. Приложение стало бесплатным.

Сразу после покупки был закрыт допотопный фирменный сервис Карты@Mail.ru. Вместо него планировалось везде использовать MAPS.ME, но не получилось. Он остался независимым мобильным приложением. В остальных продуктах (доставка, такси) Мейл по-прежнему использует карты Google Maps, которые стоят огромных денег.

Нужно заметить, что автономия проекта MAPS.ME в составе Mail.Ru была одним из условий его продажи. И его не получилось никуда интегрировать.

Может, оно и к лучшему, потому что тогда Mail.Ru мог бы и прибить отдельное мобильное приложение.

К 2019 году приложение преодолело отметку в 140 млн скачиваний и 10 млн месячных активных пользователей. Выручка составила около $2,5 млн, чистый убыток около $385 тыс. Команда разрослась, набрали менеджеров и т. д.


Команда MAPS.ME в Mail.Ru, источник

По мнению пользователей, с 2014 года приложение не стало хуже, что является заслугой разработчиков Mail.Ru. Они его не испортили. Хотя пытались. Например, в 2019 году сервис запустил платную подписку на каталог путеводителей, которые бесплатно доступны в других местах это не очень красиво.

В ноябре 2020 года MAPS.ME решили продать корейской компании Daegu Limited (входит в состав платёжной системы Parity.com) за 1,557 млрд рублей, это $19,33 млн по курсу на 2 ноября 2020 года. К тому времени компанию давно покинули основатели, а проект до самого конца оставался убыточным.

Возможно, финансовые показатели стали одной из причин продажи. К тому же, у совместного предприятия Сбера и Mail.ru есть доля в картографическом сервисе 2ГИС, который Сбербанк целиком купил в июне 2020 года. Кроме того, и OpenStreetMap, и MAPS.ME опенсорсные проекты, и кто угодно может создавать продукты на их основе. Сейчас Mail.Ru начала работать над собственными сервисами картографии на основе OpenStreetMap.

Что изменилось в декабре 2020 года


Для начала вспомним этот ужас, который появился в декабрьском обновлении. Создалось ощущение, что новые владельцы из Южной Кореи понятия не имеют, что за программа попала им в руки, как она работает и за что её любят миллионы человек.

Небольшой список сделанных изменений:

  • Для получения карт внедрили Mapbox SDK. В результате карты практически перестали работать в офлайне
  • Фоновое скачивание работало плохо
  • Пропали карты метро и навигация по метро
  • Испортилась пешеходная навигация, исчезла диаграмма с перепадом высот
  • Пропали личные данные: подписки на отключение рекламы, отзывы, записи пройденных маршрутов
  • Интерфейс стал монструозным, сильно напоминая Google Maps. Размер карт увеличился в четыре раза, при этом ухудшилась детализация. Например, размер карт Москвы вырос с 50 до 200 МБ
  • Исчез ландшафтный режим
  • Приложение стало тормозить

Зато появился кошелёк. Ведь новый владелец это платёжная система.

Для разработчиков MAPS.ME выход новой версии оказался сюрпризом.

Разразился большой скандал, поэтому вскоре изменения откатили и вернули оригинальную версию.

Но есть основания полагать, что корейцы не просто так переделали приложение и поэтому могут со временем вернуться к изначальному плану. Ведь нужно понимать, что проект убыточный. Если приложение бесплатное, то остаётся монетизация через рекламу. Кафе, рестораны и магазины платят за баннеры прямо на картах. Чтобы реализовать такую модель, разработчикам нужна удобная платформа, куда будет интегрироваться эта реклама. Вероятно, с этой целью они и переделали приложение.

Поэтому существует ненулевая вероятность, что ситуация повторится. Изменения просто ненадолго откатили, а потом Daegu Limited снова вернётся к первоначальному плану. Деньги есть деньги.

Форки MAPS.ME


К счастью, в 2015 году Mail.Ru сделала хорошее дело и открыла исходный код на GitHub под лицензией Apache 2.0 для свободного использования (официальный репозиторий). Его можно использовать частично (например, для добавления отображения офлайн-карт) или целиком, для создания нового сервиса с помощью модификации Maps.me.

Репозиторий форкнули более 1100 пользователей GitHub. Это гарантирует сохранность исходного кода.

Благодаря открытым исходникам, вскоре после продажи проекта был запущен проект по восстановлению оригинального облика MAPS.ME. В телеграм-канал Original MAPS.ME Project добавилось более 250 человек.

И уже много лет поддерживается свободный форк F-Droid.

Хотя инициатива с форками сейчас не так актуальна, потому что корейцы откатили изменения и вернули оригинальную версию MAPS.ME, но какая-то работа всё равно идёт, судя по активности в телеграм-канале и репозиториях. Например, разработчики заменяют иконки, на которые может распространяться копирайт. Они заменили уже 100 из 400 иконок.



Но если владельцы MAPS.ME опять испортят приложение, можно какое-то время не устанавливать новую версию. Просто скачать все нужные карты и пользоваться старым приложением. Форк исходного кода гарантирует, что эта версия приложения никуда не исчезнет.

Альтернативы MAPS.ME


На самом деле MAPS.ME это просто одна из многих оболочек для рендеринга OpenStreetMap, и вся суть именно в свободных картах, которые редактируются силами сообщества. Туда люди вносят тропинки и другие объекты, которые вы никогда не найдёте на Google Maps. Лучшая информативность OSM по сравнению с Google Maps особенно хорошо заметна в труднодоступных местах и не очень популярных туристических маршрутах.

Вообще, карты Google Maps предназначены в первую очередь для автомобилистов и обслуживания бизнесов. А для прогулок по городу, туризма, велосипедного спорта и любого другого активного отдыха OpenStreetMap просто без конкуренции.


Для сравнения, одна и та же лесная зона в черте города. Слева OpenStreetMap (MAPS.ME), справа Google Maps. Источник

Чтобы карты отображались в офлайне, нам нужны векторные тайлы и программа для их рендеринга.

OpenStreetMap главная причина популярности MAPS.ME. Но OSM это по сути база геоинформационных данных, а не векторные тайлы. Чтобы сгенерировать тайлы, требуется специальный движок, так как MapTiler, Mapbox или опенсорсный OpenMapTiles (на базе MapTiler), который можно установить на своём сервере и пользоваться им бесплатно. Этот сервер подготавливает векторные тайлы для загрузки в мобильное приложение.

И хорошая новость: есть целый ряд альтернативных программ для рендеринга тайлов. Вот небольшой список мобильных приложений, которые импортируют данные из OpenStreetMap, загружают тайлы на устройство и работают в офлайне. Хотя приложения основаны на свободных картах, некоторые из них платные или продают платный контент:

  • OsmAnd, есть бесплатная и платная версии (треки и тропинки, поддерживаются тепловые карты Strava и тайлы OpenTopo), не требует создания аккаунта, поддерживает закладки, работает в офлайне, отличается насыщенным UI, iOS, Android. В последних версиях под Android исправлен баг с поиском, из-за которого раньше поиск на карте практически не работал. Если кому-то интересно, вот телеграм-канал с разработчиками.


    OsmAnd для Android
  • Mapy.cz (есть популярные трейлы, горизонтали высот, хорошо подходит для велоспорта), работает в офлайне, Android-версия Mapy.cz Cycling & Hiking offline maps, также версии под iOS, Windows и AppGallery. Это приложение фокусируется на Центральной Европе, а международная версия называется Windy Maps
  • Guru Maps
  • Bike Citizens
  • Naviki
  • MapFactor Navigator
  • Pocket Earth, только для iOS
  • MapOut, только для iOS


    3D-эффект в MapOut
  • Gaia GPS, походы и путешествия

Что касается альтернатив, то одной из лучших считают OsmAnd. Здесь поддерживаются GPS-навигатор, предупреждения о камерах контроля скорости (POI) и другие необходимые функции. Правда, некоторые функции платные, хотя при желании можно сэкономить. Например, вот бесплатная версия от F-Droid (3.8.5) и бесплатные карты. Карты скачиваются заранее и хранятся на устройстве, как и положено. Есть мнение, что карты OsmAnd даже полнее и информативнее, чем у MAPS.ME.



Итак, старое приложение MAPS.ME пока остаётся с нами. Но если что-то пойдёт не так мы знаем, что делать.

P. S. Кстати, в картографических магазинах ещё продаются бумажные карты разных масштабов. Иногда в походе такая карта удобнее, чем экран мобильного телефона, хотя в 21 веке это уже какой-то экстремальный дауншифтинг.



На правах рекламы


Наша компания предлагает серверы не только с CPU от Intel, но и серверы с процессорами AMD EPYC. Как и для других типов серверов, огромный выбор операционных систем для автоматической установки, есть возможность установить любую ОС с собственного образа. Попробуйте прямо сейчас!

Подробнее..

DevDay-подкаст, или что не так с онлайн-митапами

27.05.2021 08:07:06 | Автор: admin

Мы записали свой подкаст. Ещё перед тем как ввязываться, прекрасно понимали, что эту тему сложно назвать трендовой. Некоторые вообще считают, что она уже ближе к Клабхаусу. Но мы ставили цель не похайпить, а решить вполне конкретную задачу победить уныние онлайна.

DevDay

2ГИС проводит митапы под названием DevDay с 2012 года. За это время собирались примерно 50 раз, чтобы обсудить как жёстко-хардкорные темы, так и продуктово-теоретические. Формат обычный для митапов два-три интересных спикера, крутое общение, весёлое афтепати. Всё было очень круто и часто нам даже приходилось многим отказывать, так как банально не могли вместить всех желающих в большом конференц-зале офиса.

стабильно аншлагстабильно аншлаг

Что не так с онлайном

С приходом карантина лавочку пришлось свернуть и перейти в онлайн. В таком формате провели два митапа: говорили о C++ и про то, в чём заключается работа продакта.

Неоспоримый плюс онлайна можно позвать спикера из любой локации. Так, находясь в Новосибе, нам удалось пообщаться с Андреем Аксёновым и Александрой Кулачиковой из Москвы.

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

Посмотрели, кто как решает эту задачу, и поняли, что для нас самое правильное искать другой формат и ждать возможности встречаться в офлайне.

Так и появился DevDay-подкаст. Формат подкастов позволяет не подстраиваться по времени и постоянно смотреть в экран, а запускать фоном в удобное время. Да и со спикерами удобнее договариваться о времени записи. Отдельно отмечу, что диалог всегда интереснее монолога.

DevDay-подкаст

Первые выпуски писали на коленке. Обычный рекордер, наушники от Айфона. Прежде чем заказывать красивые ретромикрофоны и обмазываться звукопоглощающими панелями, хотелось проверить гипотезу а смогу ли я говорить связно хотя бы 20 минут?. Получилось не сильно связно, но приемлемо. Особенно если верить в себя, что постепенно получится лучше. Да и с интересными гостями пока везёт.

Последние выпуски писали уже на микрофоны на стойках и с человеком, который разбирается, как всё это правильно писать.

микрофоны в кадре, звукача не видномикрофоны в кадре, звукача не видно

Кстати, о гостях и темах. Так или иначе они связаны с 2ГИС, компаниями экосистемы и их деятельностью. То есть примерно 100500 тем из разных сфер IT и бизнеса.

О чём первые пять выпусков

5. Школа 21

Беседа с Иваном Чубченко, директором Школы 21 в Новосибирске. Обсудили:

  • чем Школа 21 отличается от Школы 42 и Школ в Казани и Москве;

  • при чём тут 2ГИС и Сбер;

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

  • в чём особенности обучения без учителей;

  • что не так с современной системой образования и где во всём этом место Школы.

Apple-подкасты / Google-подкасты / Я.Подкасты / YouTube / SoundCloud

4. О красоте и разнообразии карт

Андрей Кочанов, 2ГИС
Настя Барыкина, Ситимобил

Как стать дизайнером, который рисует карты, и чем сегодняшние карты отличаются от карт прошлого и будущего.

Apple-подкасты / Google-подкасты / Я.Подкасты / YouTube / SoundCloud

3. Возвращенцы

Саша Волохин, iOS-разработчик
Андрей Лузин, бэкенд-разработчик

Болтаем с ребятами, которые уходили из 2ГИС, а потом вернулись. Обсудили IT, зарплаты, компании и реализацию детских мечт. И главное почему сотрудники уходят даже их самых хороших компаний

Apple-подкасты / Google-подкасты / Я.Подкасты / YouTube / SoundCloud

2. Из разработчика в продакты

Вадим Смирнов, менеджер продукта в 2ГИС.

О чём говорили:

  • когда стоит идти в продакты,

  • мешает ли опыт разработчика управлять продуктом,

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

Apple-подкасты / Google-подкасты / Я.Подкасты / Youtube / SoundCloud

1. Про общение

Максим Берёзкин, крайний за продукты 2ГИС

  • Зачем 2ГИС тратит ресурсы на информирование команд о фичах, метриках и деньгах.

  • Что такое Доставили, R&D Talks и продуктовый саммарайзинг

  • Нужно ли рассказывать в R&D о деньгах и продуктовых метриках

  • Какой эффект от всего этого.

Apple-подкасты / Google-подкасты / Я.Подкасты / YouTube / SoundCloud

Планы

В следующем выпуске хочется поговорить с Ильёй Таратухиным. Немного о нашем офисе в Петербурге, но больше о том, как руководитель команды фронтенд-инфраструктуры решился вернуться в 2ГИС в роли руководителя офиса разработки ПО.

Если же говорить о более долгих планах, то хочется продолжать находить интересные темы и спикеров. А ещё уже хочется свою микростудию с теми самыми панелями и микрофонами.

Если вам интересно более подробно узнать о 2ГИС и компаниях экосистемы, процессах и кейсах пишите в комменты, в личку или в Телеграм. Выберем самое интересное и запишем выпуск.

И, конечно же, ставьте лайк, нажимайте колокольчик, расскажите друзьям, делитесь мнениями что заходит, что не заходит, куда качать тему и с кем.

Подробнее..

Как мы персонализировали POI

18.12.2020 08:10:10 | Автор: admin

Мыв2ГИС хотим облегчить пользовательскую поисковую рутину ипотому стремимся предугадывать запросы пользователей. Под катом расскажем прото, как мыпридумали алгоритм для персонализации интересных мест ичто изэтого вышло.


image


POI (point ofinterest) маленькая круглая иконка накарте. Обозначает место или компанию, которые могут представлять интерес для пользователя.


image
Вот они POI 2ГИС. У каждой рубрики своя иконка


Объекты POI популярные убольшинства городские объекты вразных рубриках. Ахочется учитывать ещё иинтересы каждого пользователя отдельно. Поэтому мырешили добавить накарту персонализированные POI, которые будут отвечать заэто.


Удачно подобранные POI ещё исокращают цепочку шагов поиска накарте. Обычно пользователь ищет что-то так: открыл приложение ввёл поисковый запрос просмотрел выдачу открыл карточку объекта.


Сперсонализированными POI пользователь может без поискового запроса сориентироваться накарте инайти информацию: открыл приложение увидел нужный POI накарте открыл карточку объекта.


image
Карта без персонализированных POI и с ними интересными для пользователя рестораном, кофейней и клиникой


Данные


Вкачестве потенциальных объектов для POI логично братьте, ккоторым пользователь уже проявлял интерес. Асреди них искать такие, ккоторым онвернётся снаибольшей вероятностью. При этом желательно, чтобы объекты интересовали пользователя как можно дольше чтобы онпривык искать ихнакарте.


Нокак классифицировать эти данные? Можно разметить выборку объектов, обогатить множеством признаков иприменить бустинг или нейронные сети. Номожно пойти другим путём ипридумать эмпирическое правило.


Эмпирическое правило


Уэмпирического правила есть иплюсы, иминусы. Да, это даст более слабое качество классификации. Ноглавное преимущество мыможем быстро илегко проверить востребованность POI. Подготовка данных, обучение такой модели иеёвнедрение займёт значительно меньше времени, чем, например, бустинг. Аесли фича окажется успешной как для пользователя, так идля компании, мывсегда сможем переключиться наболее сложные изатратные модели.


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


Такое свойство есть нетолько уretention rate продукта, ноиумногих других явлений, связанных сповторным обращением например, повторное обращение кобъекту, как внашем случае. Это знание помогло нам разработать алгоритмы поопределению домашнего города для пользователя, краткосрочных идолгосрочных пользовательских интересов.


Первый алгоритм


Первым делом сформировали выборку вида

$X^{l}=(x_{i},y_{i})_{i=1}^{l}$


$x_{i} $ n-мерный вектор признаков i-го объекта, а в качестве объекта классификации рассматриваем все объекты, которыми интересовался пользователь за определённое время до даты расчёта. В нашем случае это два месяца.

$y_{i} $ класс i-го объекта отклик, который принимает значение, равное1, если пользователь посетил фирмы вконтрольный период времени, и0, если непосетил.


Так как нам важны объекты, которые будут долго интересны пользователю, товкачестве контрольного периода выбрали месяц через две недели после даты расчёта. Этот лаг вдве недели нужен, чтобы незахватить вчисло успешных объекты мгновенного/краткосрочного интереса те, которые пользователь ищет прямо вдату расчёта или рядом сней, нонефакт, что вернётся кним. Успешными считаем объекты сy=1 тоестьте, ккоторым пользователь вернулся вовремя контрольного периода.


Правило $a:X\rightarrow Y$, которое множеству признаков объектаХ ставит всоответствие его классY, выглядит так:


$f(y|x)=\left\{\begin{matrix} \sum_{i=1}^{k}x_{i} \cdot exp\left ( \frac{i\cdot b}{k} \right )>\alpha ,y=1 \\иначе,y=0\end{matrix}\right., $


где k общее количество дней (или любой другой единицы времени) в обучающей выборке.


$x_{i} $ равно 1, если в день с номером i пользователь интересовался объектом, иначе 0. Номер дня равен 1 в первый день обучающей выборки и k в последний.


$\beta $ параметр, отвечающий заскорость изменения значимости дня взаимодействия собъектом помере удаления отдаты расчёта.


$\alpha $ пороговое значение.


Идея втом, что чем дальше день, когда пользователь интересовался объектом, тем меньший вес будет уэтого дня при оценке этого объекта. Параметры функции $\alpha $ и $\beta $подбираются путём максимизации целевой переменной:


$\hat{\alpha },\hat{\beta }= \arg\max_{\alpha ,\beta }F\left ( f\left(y| x \right ) \right )$


где F это F-мера ссоответствующим соотношением желаемой точности иполноты модели. Вэтой задаче основной акцент наточности алгоритма, поэтому брали параметр $\gamma =0.5$.


$F_{\gamma }=\left ( 1+\gamma ^{2} \right )\cdot \frac{precision\cdot recall}{\gamma ^{2}*precision+recall}$


Результаты 1.0


Проверили алгоритм больше чем на450 млн объектов. Среди них доля объектов соткликом, равным1, составляет примерно 5%. Полнота алгоритма 0.153, точность 0.401, а F-мера $(\gamma =0.5)$ 0.303.


Качество такого алгоритма может показаться недопустимо низким. Дело втом, что вчисло объектов для классификации входят объекты, которые мынеможем отнести кдолгосрочным интересам наоснове данных метрик пользователи интересовались ими слишком мало, чтобы делать какие-то выводы.


Только3% объектов интересовали пользователя больше двух дней заобучающий период. Вэтом нет ничего удивительного: туда входят объекты изсфер снизким retention. Таких много, они могут быть очень крупными например, аптеки, бары или просто объекты, которые незаинтересовали пользователя.


Среди объектов соткликом, равным1, такой процент выше 22%. Это тоже мало, нообъясняется большим периодом между посещениями объекта.


image


Если исключить такие объекты, топри техже параметрах модели полнота вырастает с0.153 до0.684 при тойже точности в0.401, аF-мера сакцентом наточности становится равной 0.437 классическая, конечно, выше.


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


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


Второй алгоритм


Чтобы учесть эти проблемы, мыдобавили вфункцию признак, показывающий максимальный период пользовательского интереса, инемного иначе учли интенсивность посещения объекта иего актуальность. Разделили пользователей натри группы почастоте посещения продукта. Для каждой изних подобрали свои параметры этой модели:


$f(y|x)=\left\{\begin{matrix} exp\left ( \frac{x_{1}\cdot \beta }{k} \right )\cdot \left ( \lambda x_{2}+\mu x_{3} \right ))>\alpha ,y=1 \\иначе,y=0\end{matrix}\right.,$


k количество дней вобучающей выборке.


$x_{1} $ номер последнего дня взаимодействия пользователя собъектом (равен 1в первый день обучающей выборки иkвпоследний).


$x_{2} $ количество дней взаимодействия пользователя собъектом врассматриваемом периоде.


$x_{3} $ количество дней между первым ипоследним днём взаимодействия пользователя собъектом врассматриваемом периоде.


$\alpha ,\beta, \lambda ,\mu $ параметры функции, которые подбираются путём максимизации целевой переменной (внашем случае это F-мера) аналогичным для первой модели образом.


Результаты 2.0


Оценили параметры и получили следующие результаты по кластерам пользователей.


Кластер Полнота Точность F-мера
$\bf (\gamma =0.5)$
1. Объекты пользователей, которые заходят в 2ГИС реже трёх раз в месяц 0.072 0.349 0.197
2. Объекты пользователей, которые заходят в 2ГИС чаще трёх раз в месяц 0.162 0.457 0.335
3. Объекты пользователей, которые заходят в 2ГИС чаще десяти раз в месяц 0.194 0.514 0.386
Итого по 2-му алгоритму 0.177 0.492 0.363
Итого по 1-му алгоритму 0.153 0.401 0.303

F-мера увеличилась для всех кластеров, кроме первого ему соответствует самая неактивная часть аудитории и на неё приходится не так много объектов.


Количество истинно-положительных объектов увеличилось на17%. Прирост вточности составил9.1%, авполноте 2.4%. Общая F-мера увеличилась на6%.


Если исключить объекты сслишком маленьким количеством уникальных дней, топри техже параметрах модели полнота вырастает с0.177 до0.802 (для первой модели 0.684, тоесть прирост на11.8%) при тойже точности в0.492 (для первоймодели 0.401, тоесть прирост на9.1%). Иесли исходя изэтого оценить F-меру $(\gamma =0.5)$, тодля второго алгоритма она будет 0.533, адля первого 0.437, тоесть прирост составляет 9.6%.


Итог эксперимента набою


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


Персонализированные POI чуть больше обычных ипоявляются накарте раньше них
Персонализированные POI чуть больше обычных ипоявляются накарте раньше них


Замесяц 500000 пользователей сделали 1млн кликов поперсонализированным POI. Это примерно12% оттех пользователей, кому мыихподобрали ноэто незначит, что остальные пользователи необратили наних внимание.


Примерно40% оттех, кому подобрали персонализированные объекты, обращались кэтим объектам другими способами. Иэто тоже хорошо значит, есть потребность вперсонализации нетолько накарте, ноивдругих составляющих продукта.


POI vs Избранное


Чтобы оценить, достаточноли для нас таких результатов, мырешили сравнить персонализированные нами POI собъектами, которые пользователь персонализировал сам сИзбранным.


Уперсонализированных POI иИзбранного похожая цель запомнить места, вкоторые хочется вернуться. Похож ивнешний вид они отмечены иконками накарте иимеют примерно один итотже масштаб отображения. Разница вовнешнем виде: значок увсех объектов Избранного всегда один итотже белый флажок наоранжевом или красном фоне, ауперсонализированных POI цвет ипиктограмма иконки меняется изависит ототрасли объекта.


image
Персонализированные POI ещё и подскажут текстом, что за объект нас интересовал в отличие от иконок Избранного без подписей


Оказалось, что доля пользователей скликами вперсональные POI больше, чем доля пользователей скликами вИзбранное скарты вдва раза среди тех, кому POI вообще были подобраны, ивполтора раза среди всех пользователей.


Фактически, мысделали для пользователя обновляемое Избранное накарте, закоторым ему ненадо следить ивообще что-либо самому делать. Это довольно неплохой результат поэтому есть смысл развивать персональные POI идальше.


Выводы


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


Нуиещё один вывод будущее заперсонализацией.

Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru