Введение
Добрый день, уважаемые читатели Хабр.ру! Мы продолждаем серию публикаций по хакатонам, в которых активно участвуем, и прошу заметить, получаем призовые места !!! Сегодня речь пойдет об одной их наших команд (MMG-2), которые отлично выступили на хакатоне ФИЦ-2024 и завоевали третье место (бронзовая медаль), тем самым обеспечив себе место в тройке лидеров и завоевав свою первую победу. К слову будет сказано, ребята провели уже 3 свой хакатон и добились успеха, показав отличный результат и, что самое главное, прокачали свой скилл, навыки работы в команде, а также вошли в большой бизнес.

Хакатон
Хакатон проходил под эгидой Кластера “Ломоносов” в рамках Форума Инновационных Центров (ФИЦ-2024), который ставил своей целью обсуждение множества тем отражающих технологический суверенитет РФ по ряду приоритетных направлений развития. По ходу движения форума были освещены следующие вектора развития IT-отрасли, имеющие существенный потенциал к дальнейшему росту:
- технологии в государственном управлении;
- образование в эру развития искусственного интеллекта;
- внедрение ИИ и корпоративные инновации;
- техническая экспертиза проектов и международное сотрудничество;
- национальные проекты и формирование кадрового состава компаний;
- финансирование стартапов их развитие и инструментарий размещения на бирже;
Как вы видите, спектр рассматриваемых вопросов оказался весьма обширным, но, как известно, любые инновации сопряжены с серьезными стратегическими решениями. Кроме того, требуются, также, технологические аспекты развития бизнеса, производства и науки. Только получая такой качественный симбиоз по этим направлениям, возможно устойчивое развитие любой компании, в целом.
В рамках данного форума удалось привлечь, многие значимые корпорации из различных отраслей: БухЭксперт, Итерион; USETech; SENSE; Моя смена; Код Памяти; ISS; Консорциум Интегра-с; Клиника Фомина; Axenix; IT-ONE; Cosmix soft; BlancLabs; Интерюнис-IT; INSIDIUM; BellIntegrator; Сайберия Нова. Они же и представили свои кейсы на хакатон, который включал в себя ряд значимых наукоемких задач.
Итак, целью данного хакатона было, как можно более плотно, проработать интересные решения в области машинного обучения и анализа данных. Углубить экспертизу в уже имеющихся моделях и присмотреться к новым кадрам. Данный подход позволил завести весьма полезные деловые контакты, например, наша команда подружилась с компанией SENSE с возможностью дальнейшего трудоустройства.

Говоря о качественном составе задач и предложенных для реализации на хакатоне вопросов список оказался очень внушительным:
1. Информационная система управления проектами в строительстве: (Разработать информационную систему управления строительными проектами, которая позволит планировать экономические показатели, сроки производства работ или потребность в трудовых ресурсах, контролировать факт выполненных работ и движения денежных средств по направлениям затраты и поступления, а также корректировать планы с учетом фактической ситуации. Маркетинг. FOGSTREAM PATIAR THERMOPAT);
2. Разработка концепции позиционирования и продвижения комплексного подхода для материалов производства Thermopat / Fogsteream / PatAir: (Сформировать уникальное предложение и разработать стратегию продвижения, позиционирования комплексного подхода к вопросу пожарной безопасности, которая будет включать продукты, производимые группой компаний. Маркетинг. FOGSTREAM PATIAR THERMOPAT);
3. БухПульс: (Используя вводные данные, разработать алгоритм для поиска новых трендов и проблем бухгалтера. Полученная информация будет использоваться для оперативного создания контента. Data Science, Machine Learning. БухЭксперт);
4. Архитектура высоконагруженного распределенного приложения: (Разработать концептуальную архитектуру веб-приложения с учетом требований к безопасности, защитой от кибератак, масштабируемости и высокой доступности на всей территории России. Архитектура ПО, Разработчики веб-приложений, Специалисты по кибербезопасности, Аналитики данных, DevOps Инженеры, Data Engineers. ИТЕРИОН);
5. Разработка модуля классификации опор ЛЭП: (В рамках задания мы попросим Вас провести классификации опор ЛЭП по фотоснимку. Искусственный интеллект. USE Tech);
6. Погонщик нейронок: (Как можно быстрее сделать react приложение по макету из Figma, используя любые ИИ помощники, как можно меньше кодить самостоятельно. Искусственный интеллект. USE Tech);
7. Оценка уровня экспертности по резюме: (Необходимо разработать систему оценки уровня эксперта по резюме. Data Science, Machine Learning, Development. SENSE);

8. Контекстный перевод названий научных работ: (Разработать и реализовать переводчик, который будет переводить названия научных работ с русского на английский. Переводчик должен учитывать терминологию научной области и её специфику. Для реализации переводчика можно использовать как готовые модели с подключением по API, так и дообучать open-source модели. Data Science, Machine Learning, Development. SENSE);
9. Прогнозирование бизнес драйверов: (Необходимо разработать решение для задачи прогнозирования временных рядов бизнес-драйверов и произвести прогноз на следующий календарный месяц. Лучшие решения послужат дополнением к уже существующему решению. Моя смена);
10. Формирование фото и видео контента с использованием нейросетей на основе биографии и фото персоны: (Разработать функционал генерации иллюстрации и коротких видео на основе промта из биографии памятной страницы и короткой биографической истории, которую пользователь вводит по запросу. Нейросети, FullStack. Код Памяти);
11. Разработка алгоритма трекинга людей в видеопотоке с нескольких камер: (Необходимо разработать алгоритм трекинга людей в видеопотоке с нескольких камер, расположенных в офисе. Для реидентификации людей между камерами запрещается использовать распознавание лиц. Computer Vision. ISS)
12. Цифровая карта подземных коммуникаций с использованием Cesium: (В рамках хакатона участникам предстоит разработать веб-приложение для визуализации подземных коммуникаций города (или промышленного объекта) на трехмерной карте с использованием библиотеки Cesium. Консорциум Интегра-С);

13. Симуляции записи в расписании: (Необходимо создать инструмент заполняющий расписание подобно человеку для тестирования различных видов переменных, которые можно настраивать для расписания. Клиника Фомина);
14. Цифровой сервис для ведения реестра зеленых насаждений города Москвы (Разработать сервис по работе с панорамами города Москва c возможностью разметки и подключению существующих open-source моделей для решения задчач. Axenix);
15. Предсказание необходимого колличества средтсв досмотра: (В целях функционирования новой технологии досмотра необходимо разработать ПО которое позволяет оценить потребное количество средств досмотра: РТУ (рентгенотелевизионная установка), установок НРА и анализаторов паров и следов (ETD));
15. Система контроля и управления доступом: (Создание API для управления сотрудниками: Создание и удаление карточек сотрудников с фотографиями лиц; Управление точками доступа. Проверка нахождения сотрудника на объекте. IT_One);
16. Семантический делитель текстов: (Разработать алгоритм, который сможет обеспечить точное разделение текста на блоки в рамках произвольно заданных ограничений размера блока. IT_One);
17. Разработка сервиса печати этикеток для производителей одежды: (Разработать веб-компонент, который будет встроен в интерфейс системы Cosmic PLM, в котором пользователь сможет реализовать ряд функций. Cosmic Soft);
18. Стартовый (профилактический) комплаенс: предотвращение рисков с помощью AI (Создать систему, которая на основе предоставленных данных о текущих клиентах банка, а также дополнительной информации из открытых источников, социальных сетей, сайтов и других параметров о компании, способна прогнозировать уровень риска нового клиента. BLANC LABS);
19. Реновация пользовательского интерфейса программного обеспечения акустико-эмиссионого измерительного комплекса (Улучшить текущий пользовательский интерфейс программы без модификации содержательной части кода. Основной фокус модификации визуальных элементов, навигации и общем удобстве использования, сохраняя при этом все существующие функциональные возможности. Интерюнис-ИТ);
20. Parallax-scroll лендинг для сайта Insidium (Создать прототип лендинга с параллакс-эффектом на основе существующего сайта Insidium, в котором основное внимание уделяется компромиссному решению правки контента не нарушая параллакс-эффекты, который улучшает визуальное восприятие и взаимодействие пользователей с сайтом. INSIDIUM);
21. Цифровой помощник юриста (Разработка веб-сервиса для автоматической генерации различных типовых юридических документов на основе данных, введенных пользователем, с возможностью последующей правки сгенерированного документа. Компонента);
22. Учет личных финансов (Разработка простого и удобного приложения для учета личных финансов, которое поможет пользователям контролировать свои доходы и расходы. BellIntegrator);
23. AR-приложение для игры Смута (Создать работающий прототип AR-приложения на основе игры Смута. Сайберия Нова);
24. Поиск знаний о фемтосекундных лазерах (Создание инструмента, который поможет ученым и инженерам быстро находить нужную им информацию среди множества научных публикаций о фемтосекундных лазерах. FrontEnd, Backend);
Решение
Мы долго и весьма критично подходили к оценке задачи, что взять, на чем сосредоточить свой основной фокус, на что у нас хватит экспертизы. По ряду соглашений и коллективных обсуждений были выбраны несколько задач. По ним мы провели первичный анализ с вариантами решений. По итогу мы остановились на 5 кейсе, предоставленном компанией SENSE - Оценка уровня экспертности по резюме.
В данном кейсе необходимо было оценить кандидата по ряду критериев и понять насколько он подходит бушующей компании, в целом. При этом нам были даны следующие дополнительные фичи: рейтинг организаций, в которых работал кандидат; годы релевантного опыта; компания, куда собеседуется кандидат; грейд внутри компании, где работал кандидат. Также для подсчета финальной оценки можно учитывать любые другие факторы, информацию о которых дана в резюме. Дополнительно, разрешалось использовать как готовые модели с подключением по API, так и дообучать open-source модели или создавать свои. Стек, организаторы, оставили на усмотрение участников.
Первым делом мы сосредоточились на сборе данных в самом широком ключе, нам показалось, что имеющихся недостаточно и было принято решение обогатить датасет. Мы поняли, что основной целью компании, которая нанимает кандидата является минимизация рисков: финансовых, социальных и временных, а следовательно ставится цель, как можно полнее понять, что перед нами за человек.
Говоря о прямой выгоде было ясно, что решение данной задачи позволит HR-специалистам и рекрутерам быстро идентифицировать наиболее подходящих кандидатов для открытых позиций и оптимальным образом подобрать наилучший вариант. При этом улучшается общее качество найма как на короткой позиции, так и в долгосрочной; снижается фактор субъективности и предвзятости с обеих сторон; существенно снижаются затраты на рекрутинг и поиск талантов; минимизируется текучка кадров. То есть задача переходила в сугубо финансовую плоскость с сильной оценкой социальных качеств собеседуемого.
Говоря о метриках оценки для моделей машинного обучения, мы сконцентрировались на скорости обучения, ROC-AUC кривых и скорости отклика модели. Почему это было важно: во-первых, за один рабочий день, HR-специалист просматривает сотни резюме и делает порядка 30-40 звонков, с потенциальными кандидатами, при этом, не всегда возможно учесть все пожелания работодателя и бывает так, что упускаются весьма существенные моменты: редкий опыт соискателя, знание продвинутых технологий, мультикультурный опыт работы, степень и качество реализованных проектов, особые подходы в разработке. Кроме того, применение данной системы существенно облегчит и “продвинет” работу по задачам пополнения кадрового состава компании.
Реализация
При подготовке решения мы сконцентрировались на следущем перечне технологий PyTorch, TensorFlow, CatBoost, RapidFuzz, FastApi, NVIDIA Cuda. Далее мы начали смотреть, что у нас получалось по данным и начали генерить новые фичи, чтобы как можно более полнее понять, кто перед нами, мы хотели “рассмотреть” кандидата, как это делают опытные профайлеры, то есть специалисты по оценке поведенческих характеристик людей.
При этом в ходе работы нам удалось выделить несколько ключевых моментов: во-первых, мы собрали наиболее релевантные технические скиллы по данным с hh.ru, то есть те. которые сейчас гуляют на рынке. В итоге их оказало 666..., где-то адский смешок издал HR ))). Затем дополнили их опытом работы и “хотелками” по зарплате. Но был один момент, ну куда же без него: грейд, в каждой компании свой и не всегда, сеньор в одной компании это сеньор в другой, так как подходы везде разные, стеки технологий тоже и проекты весьма отличаются. Однако, мы дополнительно докинули несколько фичей на зарплату и посмотрели распределение по городам и распределению навыков. Как оказалось в топ-10 вошли такие навыки как: SQL, Docker, java, rest, kubernets, jenkins, javascript, postman, oracle, bash. Также мы сделали предобработку данных и применили SMOTE для балансировки классов. Затем, чтобы понять насколько близки ключевые навыки (key_skills и position) сделали векторизацию; данные заполняли по моде.

Мы пробовали разные архитектуры моделей перебирали их гиперпараметры, результаты вы можете видеть на картинке снизу. После множества тестов мы увидели значимый потенциал для CatBoost, CNN, FullConnected NN. Было проделано большое количество работы по оптимизации данных сетей и их тренировке. Также много времени ушло на дополнение датасета новыми фичами.
В ходе тестов, CatBoost уверенно “вырвался” вперед со следующими гиперпараметрами: depth: 8, learing_rate – 0.025595061577702905, l2_leaf_reg: 0.035315775458636886, random_strength: 5.196220487451417, bagging_temperature: 0.36028088941015324, od_type: IncToDec, border_count: 153, grow_policy: Depthwise.

Итоги
По результатам лидерборда и представления проектов на питчинге, нам отдали третье место, с общими баллами, 92.6 (DataSages). Как видно, общий бал не сильно отличался от лидера. Более того, ребята настроили связь с представителями компании SENSE.

В заключении скажем пару слов от дальнейшем развитии проекта, которое может быть сосредоточено на поиске кандидата под проект, учитывая его специфику, технические и финансовые параметры, очень актуально, если стоит задача передать таски на аутсорс.
Кроме того, данный сервис, можно использовать в качестве инструмента по сборке информации о конкурентах, условиях работы в компании, изучению стека технологий, оценке поставленной работы и анализу рынка в том или ином производственном сегменте. Более того, по сумме этой информации можно примерно понять над какими проектами работает компания и кто ее ключевые заказчики. Также это ждает обширное понимание и сопоставление кандидата в общем грейде людей занятых в той же области и направлению. Дополнительно, данную систему можно дополнить технологией FinOps для оптимизации управления кадровыми процессами с целью решения вопросов найма, обучения и удержания сотрудников.
Автор: seiros