Как я резюме обновлял, или ML-эксперимент с базой ФОПов

Появилась свободная минута на то, чтобы не в последний раз смахнуть пыль со своего резюме и удалить аббревиатуры, расшифровки которых я уже не помню, а вместо них добавить чего-нибудь посовременнее. Что там сейчас в тренде? Data Science, ML, AI? Ну что же, начнем...

Анаконда уже установлена и нежится на рабочем столе в ожидании данных. Титаник мне не интересен, до Чемпионата мира еще далеко, а вот нашумевшая база ФОПов (да-да, та самая с адресами и фамилиями) — в самый раз. Забегая наперед, успокою многоуважаемых, что под катом никаких личных данных.

Все желающие могут лицезреть полный исходный код с датасетами на Kaggle.

Анализ данных

Для начала разомнемся и выведем количество IT-шников, сгруппировав по статусу ЧП. Предварительно отфильтруем их от остальных ФОПовцев по КВЭД 62-63:

Одной картинки на Data Science инженера маловато будет — нужно кодить. И не просто кодить, а геокодить! Положиться на бесплатные сервисы и загеокодить ~250 000 записей по точному адресу — никаких лимитов не хватит, а заморачиваться с установкой своего инстанса Open Street Map ой как не хотелось. Ищем на просторах интернета и находим базу украинских почтовых адресов с геокоординатами — то что нужно!

17 000+ не замапилось (ожидал, что будет хуже). Не беда — поселим ~10 000 «бездомных» на соседние почтовые индексы, а остальные 7 000 распределим на уровне городов — на общие цифры это не повлияет.

Забываем пока об остановленных (мы к ним еще вернемся) и выведем распределение зарегистрированных IT-шников по регионам:

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

Чем темнее точка — тем больше IT-шников зарегистрировано в данном регионе. Недостаток вышеприведенной карты в том, что в максимально красной точке может быть зарегистрировано сколько угодно IT-шников. Например, визуально кажется, что во Львовской области больше зарегистрированных, чем в Киевской. Хотя осмелюсь предположить, что в Киеве они просто любят жить в обществе себе подобных.

Фиксим график путем притягивания за уши Machine Learning алгоритмов. В сеньоры не метим и ограничимся одним из самых простых — k-means алгоритмом. Эмпирическим путем выбираем количество кластеров, равное 15-ти. 3 строчки кода на Python — вот и весь ML:

Как видно из картинки, ML разбил позиции всех IT-шников на 15 кластеров. В центре масс каждого кластера расположена точка с радиусом, пропорциональным количеству зарегистрированных особ в данном кластере. Все становится на свои места: в Киеве в два раза больше зарегистрированных, чем в Харькове. Львовяне тем временем не отстают.

В чем сила, брат? В параметрах! Тонкий тюнинг моделей с последующей оценкой ее качества — довольно сложный процесс и больше похож на искусство. В k-means особо тюнить нечего, кроме как количество кластеров, поэтому в преддверии выборов немного поиграемся и установим n_clusters = 2:

Ха! Запад победил! Ну а справедливости ради, если делить по Днепру... Меньше воды, больше графиков. Вспомним о неактивных ЧП и распределим их по регионам:

Причины остановки ЧП могут быть самыми разнообразными. Осмелюсь предположить, что одна из наиболее распространённых — эмиграция. Построим график только закрытых ЧП в процентном соотношении к общему количеству в данном регионе и посмотрим, откуда «мозги текут» активнее всего:

Среди наиболее лояльных (меньше всего закрытых) — львовяне, харьковчане и киевляне. Крымчан, если честно, ожидал увидеть в первой тройке — не могу объяснить данную аномалию.

Вывод

Пока скрипт экзекьютится, а графики отрисовываются, подведем итоги:
1 статья, 19 комитов, 7 графиков, 80 строк на питоне и +3 строчки в резюме, а выводы делайте сами.

Что дальше

Еще во времена, когда Nokia выпускала своего первого убийцу айфона, а Android делал первые неуверенные шаги, уже тогда наш Screenshot-based доморощенный солюшен использовал Computer Vision техники (видосик для затравочки в конце статьи). Поэтому в следующий раз поговорим о том, как далеко можно послать селекторы и применим Computer Vision и Deep Learning техники для Screenshot-based автоматических тестов.

Похожие статьи:
Меня зовут Николай Мозговой, я старший разработчик и ментор в Sigma Software. Сейчас занимаюсь разработкой облачного бэкенда для...
[«Fail review» — это сборник историй о рабочих провалах: что произошло, как исправляли и какие выводы сделали. Если есть, чем...
Savvy IT School приглашает на курсы для начинающих программистов по специальности Frontend Developer. Для кого эта программа? Для...
Как уже известно, компания Huawei проведет свою презентацию в преддверии MWC 2016 - 21 февраля, она уже распространила...
Ссылки, на которые лучше таки нажать (по мнению автора), отмечены знаком (!) Что-то вроде новостей Вышел RC1 WildFly...
Яндекс.Метрика