Автор: Винаяк Джоглекар, соучредитель и технический директор Synerzip.

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

Эксперимент - ранжирование резюме вручную

Мы разработали игру для ранжирования резюме путем сравнения пар с вознаграждением победителю. Игра не нашла того уровня признания, которого мы ожидали. Поэтому мы привлекли человека-эксперта для составления рейтинга. Опытному рекрутеру потребовалось полдня, чтобы оценить 35 резюме. Очень часто рекрутер спрашивал, какому признаку придать больший вес? Был ли это опыт, местоположение, общение или компенсация?

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

Таким образом, проблема ранжирования резюме сводится к нахождению весов для каждого из атрибутов.

Задача - обучающий набор для стандартных алгоритмов ранжирования.

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

Мы видели, что «логистическая регрессия» прогнозирует вероятность, основанную на весах для различных атрибутов, извлеченных из того, какие резюме были включены в короткий список или отклонены в прошлом. Эта вероятность - в нашем случае - укажет, подходит кандидат или нет. Мы будем использовать этот номер для ранжирования кандидатов в порядке убывания пригодности.

Доступные данные

В нашей компании у нас был доступ к данным о следующих 13 атрибутах примерно 3000 кандидатов, которые были проверены примерно на 100 вакансий за последние 6 месяцев.

1. текущая компенсация

2. Ожидаемая компенсация

3. Образование

4. Специализация

5. Расположение

6. Самая ранняя дата начала

7. Общий опыт

8. Соответствующий опыт

9. Связь

10. Текущий работодатель

11. Стабильность

12. Разрыв в образовании

13. Рабочий промежуток

Нам нужно было количественно оценить некоторые из этих атрибутов, таких как образование, стабильность, общение и т. Д. Мы применили собственное суждение и преобразовали текстовые данные в числа.

Очистка данных

Мы не были уверены, получим ли мы стабильные результаты, поскольку у нас не хватало исторических данных по резюме. Мы игнорировали вакансии, в которых было проверено 10 или менее резюме. С другой стороны, мы также обнаружили проблему с большими обучающими наборами - особенно в случае вакансий, которые остаются открытыми долгое время. Требования к этим вакансиям, вероятно, изменились. Как мы узнали позже, стабильная точность была получена для вакансий с наборами тренингов, численность которых составляла от 40 до 80 резюме.

Запуск логистической регрессии

Мы перечислили 22 вакансии, по которым менеджерам по найму было представлено несколько сотен резюме за последние 6 месяцев. Мы вели запись собеседований, запланированных на основе соответствия резюме. Мы решили использовать 75% доступных данных для обучения (обучающий набор) и 25% для тестирования (тестовый набор) нашей модели. Программа была написана для получения следующего вывода:

  • Вектор весов для каждого из 13 атрибутов
  • Прогнозирование того, будет ли набор тестовых примеров «подходящим» или «неподходящим».

Результат был основан на точности прогноза. Точность определяется по следующей формуле:

Точность = (истинно положительные + истинно отрицательные) / (общее количество резюме в тестовой выборке)

«Истинно-положительные» - это количество подходящих резюме, которые были правильно спрогнозированы как подходящие. Точно так же «Истинно Негативы» - это количество неподходящих резюме, которые, по прогнозам, не подходят. Мы достигли средней точности 80% в диапазоне от 67% до 95%.

Меры по повышению точности

График подходящих и неподходящих резюме на сайте Experience vs Pay не показал какой-либо последовательной закономерности. Подходящие резюме, как правило, содержат больше высокооплачиваемых людей с меньшим опытом, что несколько противоречит здравому смыслу. Помимо этого, подходящие резюме имели тенденцию группироваться ближе к центру графика по сравнению с неподходящими.

Учитывая характер графика, граница решения будет нелинейной - вероятно, квадратичным полиномом или полиномом более высокой степени. Мы решили протестировать с использованием полинома 6-й степени - таким образом, создав 28 атрибутов из 2 основных атрибутов, а именно. опыт и оплата. Мы снова запустили программу; на этот раз с этими 28 полиномами шестой степени и оставшимися 11 атрибутами, всего 39 атрибутов. Это повысило точность с 80% до 88%. Мы достигли 100% точности по 4 вакансиям.

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

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

Некоторые наблюдения

Внимательно посмотрев на график выше, мы наблюдаем следующее:

  • Одна вакансия придает крайне отрицательный вес «текущей компенсации» - это означает, что более высокооплачиваемые кандидаты не подходят. Интересно, что в большинстве других вакансий наблюдается обратное.
  • Позиция разработчика C ++ присваивает положительный вес «Общему опыту», а отрицательный - «Соответствующему опыту». Требовалось наличие более широкого набора навыков, помимо C ++.

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

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