Несколько лет назад я ненадолго увлекся машинным обучением и анализом данных, даже написал небольшой цикл о моем погружении в этот удивительный мир, с точки зрения полного новичка.
Как часто бывает при изучении чего-то нового, мне очень хотелось сделать свой «велосипед». К сожалению, в математике и программировании я разбираюсь плохо, поэтому кандидатом на роль «велосипеда» стал собственный датасет.
С того момента прошло уже больше двух лет и вот у меня дошли руки поделится с вами своим небольшим опытом.
В статье мы рассмотрим несколько потенциальных источников для самостоятельного сбора данных (в том числе не очень популярных), а также попробуем найти в этом процессе хоть какую-то пользу.
Оглавление:
Часть I: Введение
Часть II: Источники данных
Часть III: Есть ли от этого польза?
Часть IV: Заключение
Часть I: Введение
Из вступительной части вы наверняка уже догадались, что я не гуру анализа данных и машинного обучения. Пионером в области поиска источников открытых данных меня тоже сложно назвать. Поэтому в данной статье речь пойдет не о хороших практиках, а об утолении "зуда в руках" в случае, если вам пришла в голову идея создать свой датасет.
Прошу вас не воспринимать мою статью слишком серьезно.
С момента задумки статьи до её реализации много воды утекло. Ситуация с доступом к открытым данным становится все лучше и лучше. На Хабре за это время появились хорошие подборки различных источников (например, зарубежных), но я все же решил внести свои «5 копеек».
Итак, пришла пора сбросить гнет чужих наборов данных и создать свой «лучший в мире» набор данных, чтобы скормить его потом алгоритму или просто построить «самый эксклюзивный» график на свете.
Часть II: Источники данных
Порталы с открытыми данными можно разделить на несколько категорий.
Специальные порталы с данными для машинного обучения и анализа
На этих порталах как правило данные собраны в форматы удобные для машинного анализа. Остается их только скачать и загрузить.
Мне в первую очередь вспоминается Kaggle. На Хабре уже есть хорошая статья про наборы данных у Kaggle и инструменты самостоятельного поиска датасетов для машинного обучения.
Поскольку цель нашей сегодняшней статьи не столько сделать хорошо, сколько сделать что-то самостоятельно с нуля, мы продолжим движение в сторону менее популярных ресурсов.
Порталы открытых данных различных гос. органов и общественных организаций
Хотя концептуально «Открытое правительство» в России начало формироваться в начале 2010-х годов, лично мне более-менее адекватные данные обычно удавалось найти примерно за период с 2015 года и позже.
На Хабре уже есть критика порталов с открытыми данными РФ от 2017 года. С тех пор ситуация стала лучше. У некоторых порталов даже появись API для доступа. Однако, все равно остается ощущения, что часто данные собирается по принципу: «Нам тут начальство приказало данные открыть, вот вам кушаете не обляпайтесь».
Рассмотрим основные популярные порталы открытых данных.
Портал открытых данных РФ
Портал оставляет не однозначное впечатление. С одной стороны, у портала есть API для доступа к данным и множество разных датасетов.
С другой стороны на портале, часто можно встретить заброшенные и бесполезные наборы данных, например:
- заброшенный набор данных об активных пользователях сети интернет, в котором полезной статистики меньше чем метаданных.
- или набор данных, который нам привез сам «почтальон печкин».
С другой стороны есть люди, которые ответственно выполняют свою работу. Например, данные о величине муниципального долга Ровеньского района и данные об Исполнение бюджетов сельских поселений Ровеньского района ведутся вполне добросовестно и регулярно. Если вы «смелый, ловкий и умелый то...» вполне можете из этих двух наборов создать один, найти аномальные выбросы, несоответствия или даже корреляции между данными.
Я думаю, результат получится не менее убедительным чем на графике про связь фильмов Николаса Кейджа и падение людей в бассейн.
Портал открытых г. Москвы
У портала открытых данных г. Москвы, тоже есть API для доступа к данным.
Сами данные при этом ведутся более порядочно, чем у федерального ресурса.
На сайте есть как геоданные (объекты с привязкой к координатам), так и просто статистика.
В качестве достаточно простого кейса по созданию своего набора данных можно например, скрестить два набора данных и поискать зависимости между данными вызовов подразделений пожарно-спасательного гарнизона города Москвы по административным округам и данными по количеству выявленных общественными пунктами охраны порядка в городе Москве фактов незаконной сдачи жилья в аренду (поднаем) по административным округам Если найдете что-нибудь интересное отпишитесь в комментарии.
Другие стандартизованные источники
У «Северной столицы», тоже есть свой портал открытых данных.
И у других городов РФ тоже есть аналогичные порталы, но они остаются вам на самостоятельное изучение.
Открытые данные можно найти у разных министерств и ведомств, например, у Минтруда.
Также вполне интересно изучить открытые данные Республики Беларусь.
Сайты с информацией
Помимо ресурсов, в том или ином виде адаптированных под концепцию «Открытого правительства» существует множество других сайтов с полезной статистической информацией, например:
- Центробанк РФ – множество различных экономических показателей, для анализа.
- Народный мониторинг – данные для любителей временных трендов. Если зарегистрироваться на портале, то можно выбрать любую любительскую точку мониторинга погоды и скачать данные о погоде в формате .csv. (без регистрации кнопка не доступна).
- Сайты поставщики данных спортивной статистики, например, у Sportradar есть пробный доступ к API. При желании можно найти кучу информации по разным видам спорта и национальным чемпионатам. От количества побед команды до количества мячей, которые футболист забил головой.
- Национальная электронная библиотека предоставляет данные по издательствам и научным статьям, сводки правда без привязки к датам, но помимо готовых сводок можно с помощью поиска самостоятельно собрать те или иные данные по публикационной активности.
Отчеты, аналитические записки и прочие данные для ручной обработки
На мой взгляд больше всего погрузится в процесс сбора данных помогает именно их получение в ручном режиме. Для этого не обязательно брать очень большой набор данных. В принципе источников для сбора данных великое множество.
Лично я начал с обращений граждан. Сейчас практически каждый орган исполнительной власти, в том или ином виде отчитывается за работу с обращениями граждан.
Я в свое время собрал данные мэрии Москвы. Мэрия предлагает нам данные о количестве обращений в бумажном и электронном форматах, количестве положительных и отрицательных решений и относительному количеству обращений по административным округам Москвы. Всю эту информацию с января 2016 по август 2020 я выложил на GitHub.
Вы можете попробовать обработать данные по другим городам, например по Санкт-Петербургу, Твери или Новосибирску.
Также интересные данные можно найти в отчетах по травматизму, например, в сфере энергетики (Ростехнадзор, Минэерго).
Часть III: Есть ли от этого польза?
На самом деле в силу малого опыта в анализе данных ответить на вопрос заголовка убедительно мне будет затруднительно. Может быть матерые специалисты скажут, что в создании своего набора данных смысла нет и это пустая трата времени.
Но вот, что полезного я вынес для себя в итоге:
- С точки зрения понимания принципов работы с популярными библиотеками данных на Python (или другом языке) собрать хоть один датасет своими руками будет познавательно. Особенно это полезно, когда в процессе возникают какие-нибудь ошибки в формате или наполнении файла.
- Пока ищешь или собираешь данные начинаешь постепенно планировать эксперимент, причем не один.
- Как правило неоткуда взять готовое решение или интерпретацию результатов. Полезно попытаться самому понять, что в итоге получилось даже если результаты вышли безумными и не имеют никакого практического применения. Особенно полезно понять, что сами по себе библиотеки и программы для машинного обучения чудес не делают и если данные плохие или сам анализ не продуман, то и результат будет так себе.
- В процессе сбора данных иногда можно найти явные ошибки, неточности и несоответствия. В упомянутом выше наборе про обращения граждан в мэрию Москвы, точно есть аномальные данные, которые выглядят как «копипаст», также были ошибки с указанием итоговых значений вместо фактических. Понимание, того, что все мы люди и можем ошибаться, помогает лучше понять проблемы и необходимость обработки реальных данных для машинного обучения.
- Полученные результаты можно разместить в общем доступе, вдруг они кому-нибудь однажды будут полезны.
Часть IV: Заключение
Подводя итог хочется призвать всех, кто только начал интересоваться машинным обучением и анализом данных попробовать создать своё «велосипед», причем не только датасеты но и программную часть, чтобы наука о данных не казалось вам магией.
Вот и закончилась статья, которую я не мог написать больше двух лет, но как говорится: «Лучше поздно чем никогда», прям на душе стало спокойно.
Желаю всем бодрого настроения и здоровья в эти нелегкие осенние месяцы.
Если кто-нибудь соберет свой интересный датасет или получит интересные результаты анализа собственных датасетов, пишите в комментарии.
UPD:
Статья на Хабре про источники с датасетами изображений от wadik69
DimaFromMai
Можно данные не только из открытых источников собирать, но и через свой парсер сайтов (scrapy, BeautifulSoup), когда-то с этого начинал.