Как стать автором
Обновить

Геоаналитика с помощью Python и открытых данных: пошаговое руководство

Время на прочтение11 мин
Количество просмотров42K
Всего голосов 29: ↑29 и ↓0+29
Комментарии39

Комментарии 39

Привет, коллега. Неплохо для вводной статьи.


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


Расскажете вашу версию? (Я вот, к сожалению, наш патентованный метод из-за NDA не могу озвучить.)

Привет! Спасибо большое за обратную связь! Планируется еще не 1 статья, так как тема действительно очень обширная и есть чем поделиться (эх, если бы и правда все было так просто - открыть там, где много людей:))

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

Ну, мой проект уже 5 лет занимается задачами геоинформационной аналитики.


Так что я могу со знанием дела подтвердить, что задачи на классификацию/типирование/скоринг/профилирование популяций и потоков людей — это крайне интересные и достаточно сложные задачи.


Главное, никто до сих пор не научился решать их с приемлемым соотношением стоимость/качество (все overpromising, но underdelivering), поэтому любое знание тут ценно.

>Главное, никто до сих пор не научился решать их с приемлемым соотношением стоимость/качество
Да тут полно проблем. Минимум одна из которых вообще не решается одной аналитикой: для начала нужно иметь что анализировать. Т.е. исходные данные, если уж совсем просто (и даже не обязательно потоки людей, а просто статические данные). Ну т.е. если вернуться к кейсу «открыть кофейню», то очевидно нужны данные сразу нескольких видов:
* где можно открыть (данные об аренде помещений в этом районе)
* стоимость аренды
* есть ли в этом месте достаточный поток потенциальных клиентов
* что именно нужно этим клиентам
* а есть ли конкуренты, и как они вообще себя чувствуют?

И в общем априори очевидно, что это данные далеко не из одного источника. В итоге, их не просто сложно собрать, но еще и сложно сопосотавить друг с другом. Автор, как я понимаю, в Билайне (и как у сотового оператора, есть данные по людям и их перемещениям), я смотрел на это когда-то со стороны банка (и были данные по транзакциям), но даже если вы Билайн или банк с кучей клиентов — у вас все равно далеко не всегда есть все данные. Скажем — данные по конкурентам — тот же Билайн вероятно может их только купить (у Яндекса, Гугля, 2ГИС и т.п.). И даже если вы банк — как только конкурент обслуживается не у вас, вы уже очень мало про него знаете.

И возможно, по именно этой причине у автора разбор кейса с кофейней (возможно, пока), заканчивается на самом интересном месте:

Открываем авито/циан и ищем там помещение для кофейни


Так а где сравнение помещений в пределах района? Может, я что-то упустил в тексте, но на мой взгляд, разница в посещаемости между двумя кофейнями (я привычно примеряю на свой район) в торговом центре у метро и в двух кварталах от него (т.е. 100 метров) — возможно где-то на порядок.

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


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


Плюс ко всему, все теоретические модели хорошо работают только на том сэмпле, на котором их, собственно, и моделировали. Что хорошо работает в Америке, то в Европе показывает ерунду, и наоборот.


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

>Но стоят они дорого, а качество зачастую паршивое.
Так а я о чем? Данные есть в разных источниках, сопоставить их друг с другом сложно, потому что см. выше. Ну т.е. это одна из проблем — возможно решаемая, но реальная.

>простор для изобретения всяких эвристик
Чем наши сайентисты большую часть времени и занимались. Т.е. упрощенно — вот у вас есть транзакции, и вы хотите понять, чего потребитель купил там или там (чтобы оценить саму потребность в кофейне). И выясняется, что транзакции-то — они из VISA, например, и мерчант (и его адрес) там записан в некоторой латинской транскрипции, которую фиг сопоставишь с любой из карт (т.е. процессы геокодирования становятся совершенно ненадежными). Т.е. мы не можем по транзакции зачастую понять, где купили, а что купили — там просто не пишется.

В итоге транзакции достаточно просто сопоставляются только в одном случае — если вы банк, и это ваша карточка, а еще в кафешке стоит POS от вас же (что очевидно далеко не всегда так). В остальных случаях уже тоже начинались эвристики.

>подробности наших методик
Ну так именно это и интересно, конечно же :) И конкурентам вашим — в первую очередь.

Очень все индивидуально (в плане данных/алгоритма/точности и т. д.) для каждого формата/заказчика. Но факт, что даже модель "на коленке" может улучшить работу отдела развития (те ребята, которые ищут коммерческие помещения и т. д.) - это факт. Чем крупнее компания и соответственно обучающая выборка и ресурсы, тем лучше результат конечно, от этого никуда не денешься... а мэтчинг транзакций мало кто использует, слишком это дорого и эффект не оправдывает себя

>мэтчинг транзакций мало кто использует
Ну мы пробовали. Помимо всего прочего, это персональные данные со всеми вытекающими. Тут нужно сильно стараться, чтобы они в таком персональном виде не вытекли куда-то случайно, а это тоже да, дорого. Да и много их, тут уже реально большие данные начинают иметь место.
И конкурентам вашим — в первую очередь.

А мы даже с удовольствием бы всю нашу алгоритмику и методику продавали кому угодно, но «конкуренты» почему-то хотят всё сделать сами, вместо того чтобы готовое взять %) Странно это. Никто не хочет верить чужим эвристикам, видимо.


Пока что только с Precisely договорились, чтобы augment'ить ихний социодем по Европе. По Америке вот не получается, там качество сырых данных такое, что 99% сразу уходит в шлак.

>Никто не хочет верить чужим эвристикам, видимо.
Возможно. А может быть у них просто другой набор доступных данных и несколько другие задачи, и они не уверены, что что-то получится на чужих эвристиках.
Честно говоря, какой-то код на питоне — чуть ли не последнее, что хотелось бы видеть в статье обзорного плана. Ну, во всяком случае на мой взгляд. Те кто этой темой уже занимается (и даже такие как я, кто уже три года как бросил и занят другой), уже вероятно нашли свой инструмент, и уж что такое OSM, вероятно знают давно. И ЦИАН тоже парсили :)

Лучше бы ближе к бизнесу, если можно так выразиться, и чуть выше уровнем.

Спасибо за обратную связь! Статья как раз рассчитана на новичков, "прожженным" аналитикам в сфере гео будет скучно, согласна)

Тема очень уж узкоспециализированная, новичков в неё фиг заманишь %)

Код на питоне - отлично. Мне делающему это на SQL интересно как это в параллельной вселенной :).

Кстати, а зачем spatial join шестиугольников с точками? Думаю здесь гораздо быстрее для каждой точки посчитать номер шестиугольника и сделать обычный джоин по номерам шестиугольников, нет?

Спасибо!

Пространственные индексы используются в предназначенных для работы с его данными базах как раз для оптимизации расчетов. Вручную с помощью python это делать смысла нет, когда есть библиотека GeoPandas

Пространственные индексы великая вещь, когда вы работаете с произвольными фигурами, например полигонами территорий, линиями дорог. Но они в любом случае сравнительно медленные, по сравнению с хеш-таблицами. Убер свои шестиугольники создал именно как индекс, потому что (при масштабе Убера) универсальный пространственный индекс не справлялся.

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

код на питоне — чуть ли не последнее, что хотелось бы видеть в статье обзорного плана

Лучше бы ближе к бизнесу

Хабр технический ресурс, а не бизнес инкубатор.

Автору за статью благодарность, позновательно!

Если вам код такого типа интересен — то он уже сотни раз опубликован. Впрочем, мне совершенно не жалко, Я лишь свое мнение высказал, что идеи, которые этот код реализует, гораздо интереснее, потому что их мало хороших. А приведенный код расчета плотности населения… ну и что он вам дал полезного?

Понимаю ваш интерес, согласна, что можно было бы шире раскрыть тему. А про плотность населения на удивление не все в курсе) (опять таки, я говорю про небольшие компании, а не про специализированные отделы геоаналитики:)

>про плотность населения на удивление не все в курсе
Я тут вижу пару аспектов:
— про шестиугольную сетку вы допустим рассказали, и показали какие-то расчеты, но вот почему собственно такая выбрана (а не обычная прямоугольная) — как-то я не вижу чтобы было написано (я если что, догадываюсь :).
— задача расчета плотности населения (как и любая частная задача) еще очень далека от реальной задачи оптимального размещения своего бизнеса в городе. То есть, на мой взгляд опять же, интереснее то, как можно получить практические выводы, тем более что тут все далеко не так очевидно, и не сводится к простой математике. Да и к сложной, в общем-то, тоже…

Спасибо!

Будем ждать!

Спасибо!!!

Огромное спасибо за статью! Я бы сам до шестиугольников еще долго не дошёл, хотя с географией работаю.

Пс. Главное, чтобы никто не бросился по этой тепловой карте строить кофейни в Краснодарском Шанхае ;)

Спасибо! Ох, про наш местный Шанхай совсем другая история)))

И еще одна история, как центр Красноярска оказался на КДПВ?

Отличная статья спасибо!

Продолжайте)

Спасибо!

Просьба, если уж включаете в статью код, проверять что он хоть чуть-чуть работает.

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

  • Откуда hexagons в самом начале в for hex in hexagons :, к этому моменту был только один шестиугольник h3_address. Мистически появились из четвертого куска кода (мы во втором).

  • Почему get_lat_lon_ вызывается с подчеркиванием на конце, а определено без?

  • Что за geometry используется в overlay = gpd.GeoSeries(geometry).to_json() - до этого geometry была только локальной переменной и не присутствует в текущем скоупе, переменной с таким именем нет даже ниже.

Такой подход к коду оставляет впечатление жуткой неаккуратности (к которой на мой взгляд приучает Jupiter, но это для другой статьи).

Спасибо большое за замечания, уже редактирую, сегодня обновлю статью!

Не ругайтесь на юпитер) вы, как я поняла, разработчик, поэтому я прекрасно понимаю о чем вы)

Круто. Отличная статья!

Спасибо!

Очень интересно, узнал из статьи и из комментариев про индексирование шестиугольниками. Спасибо!

спасибо за интересную статью! попробовал использовать упомянутый метод с гексагонами для поиска своих популярных треков тренировок в пределах города - все работает и результаты корректные. Единственное вместо h3 ипользовал аналогичную H3-Pandas, так как она позволяет работать с мультиполигонами без дополнительных манипуляций

Все как всегда красиво в теории но так далеко от практики)
Раз уж работали в МАГНИТЕ и прочих сетевых конторах то самый главный кейс надо выразить ТАК)

зайти на территорию

убить весь мелкий бизнес

в далее торговать очередным говномагнитом не заботясь за какие цены и какого качества)

А в теории все для малого бизнеса с кофейней)

ну это кто с какой стороны смотрит ;). Зато сетевики и делают трафик там, где его раньше никогда и не было и можно это использовать для открытия розницы, не конкурирующей с магнитом (продуктовые магазины аля "Продукты у Наташи" и так повымирали все почти, но раз уж зашла речь, то можно рассчитать сколько потенциально трафика можно отжать, если предложить что-то уникальное (кулинария/выпечка и пр.))

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

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории