Обрабатываем информацию по ранжированию районов города и находим способ как применить ее с пользой

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

А что если речь идет о градостроительстве и урбанистике — как тут может помочь машинное обучение и какую информацию мы можем использовать?

Давайте вместе посмотрим на примере решения Ирины Павловой, AI/ML-разработчика ITentika, которая недавно заняла 4-е место во всероссийском хакатоне «Цифровой прорыв».

Постановка задачи

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

Для решения задачи участникам предоставили датасеты, которые содержали пространственные данные о районах и округах Москвы и Московской области, разделенных на секторы 500х500 метров, и статистическую информацию о пребывании и передвижении населения в различных секторах. В датасетах данные предоставлены в различных разрезах: день/ночь, 4/8-часовые промежутки дня, выходной/будний день, количество населения дома/на работе/днем/ночью и так далее.

О решении задачи в общих чертах

Основная идея решения — выявить зависимость между количеством населения в том или ином аспекте, временным промежутком (время досуга или рабочее время), районом Москвы и оснащением района объектами инфраструктуры. 

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

Для решения задачи были использованы датасеты, предоставленные организаторами:

  • Датасет из файла fishnet2021.shp, содержащий пространственные данные всех исследуемых секторов.

  • Датасет из файла adm2fishnet.csv со всеми исследуемыми административными районами, округами, секторами Москвы и Московской области.

  • Датасет из файла 01_Clocation_202109.csv с информацией о среднем пребывании населения в секторах в разрезе день/ночь/работа/дом.

  • Датасет из файла 02_CDensity_202109.csv с информацией об общем среднем пребывании населения в секторах по дням сентября 2021 года в разрезе 8-часовых промежутков, а также о местах и времени пребывания — работа/дом, больше часа/меньше часа.

  • Датасет из файла 03_CMatrix_202109.csv с информацией об общем среднем перемещении населения между секторами в разрезе 8-часовых промежутков, а также целях перемещения — из дома на работу/ с работы домой.

Дальнейшие шаги 

  1. Добавляем колонки с пребыванием и перемещением населения не по работе и не домой во всех датасетах, где требуется по смыслу.

  2. Получаем с помощью библиотеки OpenStreetMap информацию об объектах инфраструктуры Старой и Новой Москвы.

  3. Для удобства используем теги: leisure — досуг, amenity — благоустройство, shop — торговля, historic — исторические места, landuse — землепользование, назначение территории. Для landuse будем рассматривать только варианты использования в качестве жилого массива и как частного сектора или дачного участка.

  4. Все геоданные приводим к единой системе координат, наиболее приспособленной к территории Москвы — EPSG:3035 (см. https://epsg.io/3035).

  5. Период времени досуга — это выходные дни и временной интервал №4 (с 18 до 24 часов) в будние дни. Информацию о выходных днях получаем с помощью сервиса isdayoff.ru.

Технологии

Python, Pandas, Numpy, Geopandas, Sklearn, Osmnx, Libpysal

Решение задачи

Итак, приступаем к детальному решению.

Визуализация секторов

Во-первых, визуализируем количество секторов, расположенных на территориальных образованиях Москвы и области (датасет adm2fishnet.csv).

Московская область, Новая Москва, Старая Москва

Районы Старой Москвы

Районы Новой Москвы

Округи Москвы

Особенность

Обнаружено, что сектор может содержать в себе несколько административных районов, это необходимо учитывать в дальнейшем.

Например, сектор 114417 содержит 5 районов.

Визуализация информации о пребывании по районам

Визуализируем информацию о пребывании населения по районам в разрезе день/ночь/работа/дом (на основе датасета 01_Clocation_202109.csv).

Выводы

В области данные предоставлены очень неполно, мы не сможем провести исследование для области.

Пребывание ночью всегда больше, чем пребывание дома.

Пребывание днем всегда больше, чем пребывание на работе.

Пребывание ночью почти всегда больше, чем пребывание днем, исключение — 4 центральных района и 1 район области.

Визуализация информации о пребывании населения днем или ночью

Визуализируем на карте информацию о пребывании населения по районам Москвы в разрезе день/ночь, предварительно разбив данные на 10 квантилей (на основе датасета 01_Clocation_202109.csv).

Пребывание населения в абсолютных значениях

Слева — день, справа — ночь

Пребывание количества населения на квадратный километр

Слева — день, справа — ночь

Визуализация информации о пребывании в разрезе день/ночь с разбивкой на 10 квантилей

Визуализируем на карте информацию о пребывании населения по районам Москвы в разрезе день/ночь, предварительно разбив данные на 10 квантилей (на основе датасета 01_Clocation_202109.csv).

Аналогичная визуализация, но с использованием интерактивных графиков библиотеки Geopandas.

Визуализируем на карте информацию о пребывании населения по районам Москвы ночью, предварительно разбив данные на 10 квантилей. График можно приближать/удалять/передвигать.

Датасет из файла 01_Clocation_202109.csv был использован только для визуализации.

Время досуга по нему определить нельзя.

Исследование информации об общем среднем пребывании населения 

Исследуем датасет из файла 02_CDensity_202109.csv с информацией об общем среднем пребывании населения в секторах по дням сентября 2021 года, в разрезе 8-часовых промежутков, а также места пребывания — работа/дом, больше часа/меньше часа.

В данном датасете будем выделять периоды времени досуга — это выходные дни и интервал №4 (с 18 до 24 часов) в будние дни.

Информацию о выходных днях получаем с помощью сервиса isdayoff.ru

В датасет добавляем колонки с информацией о пребывании населения не на работе и не дома, больше часа/меньше часа.

Исследуем корреляции между колонками пребывания в разных разрезах

По результатам можно сказать, что меньше всего коррелируют между собой колонки, отвечающие за работу, дом и «не дом и не работу». 

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

Поэтому оставляем для проверки гипотез только колонки 'mc_cnt_work', 'mc_cnt_loc', 'mc_cnt_not_work_not_loc'.

Строим гипотезу: произведем пространственную кластеризацию районов Москвы по трем параметрам о пребывании населения

Произведем пространственную кластеризацию районов Москвы по трем вышеуказанным параметрам о пребывании населения. Каждый район рассматриваем отдельно. 

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

Технология:

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

Находим оптимальное количество кластеров, используя метрику calinski_harabasz_score — это дисперсия внутри кластера, деленная на дисперсию между кластерами.

Что интересно, в случае районов с «рваной» площадью и «островами» модель может сама увеличить заданное количество кластеров.

Собираем статистическую кластерную информацию обо всех районах Москвы в датасеты:

  1. df_clusters_all — с подробной информацией по районам по кластерам.

  2. df_adm_corr_all — по каждому району датасет содержит значения корреляций инфраструктурной информации с пребыванием населения во время досуга, а также плотности инфраструктуры разных типов на квадратный километр.

  3. rsbr_gdf_all — пространственный датасет со всеми данными, использованными для расчета кластеризации, по всем районам.

  4. Сохраняем в csv.

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

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

Район Арбат, кластеризация

Район Южное Бутово, кластеризация

Визуализируем значения количества магазинов на квадратный км и корреляцию с населением на квадратный км (как пример — 1 из 6 показателей корреляций)

В данном исследовании использовано 6 показателей инфраструктуры для расчета 6 корреляций:

leisure — досуг, amenity — благоустройство, shop — торговля, historic — исторические места, landuse — землепользование, назначение территории.

Для landuse рассматриваем только варианты использования как жилой массив и как частный сектор, либо дачные участки

Суть в следующем: 

  • Если корреляция высокая, то на данный показатель (в данном случае количество магазинов) можно опираться для развития района и повышения его привлекательности.

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

Гипотеза на основе датасета из файла 03_CMatrix_202109.csv с информацией о перемещениях населения между секторами 

Гипотеза: посчитаем статистику по перемещениям между районами Москвы.

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

Разделим показатели на группы категорий отдаленности по средним дистанциям: внутри района, до 5 км, от 5 до 10 км, свыше 10 км (в процессе исследования выяснилось, что у некоторых районов менее 4 групп).

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

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

Под дистанциями понимаем расстояния между центроидами секторов.

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

Визуализируем распределение количества населения, прибывающего в район, на квадратный километр в разрезе групп категорий отдаленности (перемещений внутри района или прибытия извне района)

Визуализируем с использованием интерактивных графиков библиотеки Geopandas

Визуализируем на карте информацию о том, откуда население прибывает в конкретный район, в разрезе меток групп дистанций.

Район Крюково:

Район Академический:

Используем для рейтинга еще несколько показателей, полученных на основании датасета из файла 03_CMatrix_202109.csv

Финал — соберем рейтинг для ранжирования районов одного округа на основании найденных выше показателей

В итоговый рейтинг собираем следующие показатели:

Группа 1 (нормируем и шкалируем по принципу «чем больше тем лучше»):

  1. 'inner_part_0' — доля количества перемещающегося внутри района населения к общему количеству прибывающего в район.

  2. 'inner_part_3' — доля количества прибывающего с расстояния более 10 км населения к общему количеству прибывающего в район.

  3. 'shop_per_km2', 'historic_per_km2', 'leisure_per_km2', 'amenity_per_km2', 'residential_per_km2', 'allotments_per_km2' — плотность инфраструктуры разных типов на квадратный километр района

  4. 'mc_cnt_not_work_not_loc_per_km2' — среднее количество людей, находящихся в районе не на работе и не дома во время досуга, в пересчете на квадратный километр.

Группа 2 (нормируем и шкалируем по принципу «чем меньше тем лучше»):

  1. 'median_customers_cnt_not_hw_wh_direction_0' — средний километраж (в метрах), преодолеваемый населением, перемещающимся внутри района.

  2. 'median_customers_cnt_not_hw_wh_direction_3' — средний километраж (в метрах), преодолеваемый населением, перемещающимся с расстояния более 10 км.

Группа 3 — корреляции (шкалируем по принципу «если значение по модулю больше 0,5, то присваиваем вес 0.16, иначе 0»)

'shop_corr', 'historic_corr', 'leisure_corr', 'amenity_corr',

'residential_corr', 'allotments_corr' — показатели корреляций плотности инфраструктуры разных типов к среднему количеству людей, находящихся в районе не на работе и не дома во время досуга, в пересчете на квадратный километр.

У нас 6 показателей корреляций, поэтому присваиваем веса = ⅙.

Юго-Западный административный округ

Юго-Западный административный округ

Вывод

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

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

Подробнее с работой и ее материалами можно ознакомиться по ссылке.