Websoft

среда, февраля 18, 2015

Инструмент отсева неэффективных работников на этапе подбора: дерево решения

Напоминаю, что Websoft и Лаборатория "Гуманитарные Технологии" договорились об интеграции своих продуктов, и теперь у клиентов Вебсофта есть возможность проводить тестирование через Вебтютор. Так что воспринимайте данный пост как подспорье в решении задачи отбора
Еще покажу, что можно делать с помощью тестов на этапе подбора

Новый для нашего рынка инструмент принятия решения на основе данных кейса Кейс: отсев неэффективных работников на этапе подбора.
Напомню, мы протестировали кандидатов на входе, они в дальнейшем показали определенные результаты, что позволило разделить их на 1 - неэффективных (или тех, кого не стоило бы брать в компанию) и 2) всех остальных или тех, кого можно принимать.
В предыдущем посте я показал возможности логистической регрессии. Мы выявили две шкалы - Sp и Do, которые позволяют отличать неэффективных от всех остальных.
Главный недостаток логистической регрессии - интуитивно непонятные результаты, диаграмму ROC не предъявишь совету директоров. 
Требуется более наглядный инструмент. Таким инструментом является технология Trees - или дерево принятия решения.

Итак, 

Напоминаю, что мы выявили две шкалы, которые значимо различают неэффективных и остальных:
  • Sp
  • Do
(про то, как выявили, что такое значимость различий, читай 
Визуализируем взаимосвязь тестов и показателей эффективности. 

На этой диаграмме
  • шкала X - показатели кандидатов по шкале Sp теста CPI, 
  • шкала Y - данные шкалы Do теста CPI; 
  • зеленые пирамидки - неэффективные работники, 
  • красные точки - работники, качество работы, которое устраивает работодателя.
График сам подсказывает решение, верно? Прям так и просится провести границу по линии 50 Sp. 
Посмотрим, что нам скажет инструмент Trees
Инструмент отсева неэффективных работников на этапе подбора: дерево решения
Обращаю ваше внимание, что это не человек рисует данное дерево, а машинка (программа R или она же Rstudio). Для спецов в области статистики сообщаю, что я здесь не рассматриваю проблемы оверфитинга и т.п., моя задача - показать инструмент. Инструмент нам предлагает следующую инструкцию принятия решения по кандидату:
  1. если показатели кандидата по шкале Sp больше или равно 50, значит берем на работу
  2. если меньше 50, смотрим шкалу Do.
  3. если Do больше или равно 54, берем кандидата, если меньше, отклоняем кандидатуру.
Красиво?

8 комментариев:

Alex Brazhenko комментирует...

Прикольно!
Для Python есть библиотека sklearn для Machine Learning. Эти деревья тоже круто считает.

Эдуард Бабушкин комментирует...

а Python умеет модель тренировать?)

Анонимный комментирует...

Вот эта библиотека. Там все основные инструменты для ML.
http://scikit-learn.org/stable/

И разделение на testing|training data, трансформация, масштабирование данных. Естественно можно натренировать модель.

Я сейчас как раз ищу мошенничество в базе данных писем Enron :) (500 Mb архив), использую методики Text learning

Эдуард Бабушкин комментирует...

неплохо двинулся за это время) поздравляю)
а анализ текста это уже немного про другое
или ты типа задачи про СПАМ = 0, 1?

Анонимный комментирует...

Не совсем.
Есть задача на тему supervised learning.
Таблица с финансовыми показателями сотрудников Enron.
У каждого сотрудника есть label с названием POI (person of interest) - ну типа, подозреваемый или замешанный каким-либо образом в мошенничестве. Таких в списке 18.

К тому же есть список всех POI. Это 35 человек.
К тому же есть база данных c письмами Enron.

Задача - построить модель, которая будет определять POI.

Можно выбрать основные фичи по ним натренировать модель (к тому же у дерева решений есть функция, которая выбирает самые значимые фичи). Но тут-то и начинается самое интересное. Если мы добавим в базу данных еще десяток POI из другого списка (без финансовых показателей), то наша модель будет предсказывать совершенно по другому.

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

И вот тут уже нужно применять text learning.

P.S. круто, в курсе дают именно инструмент, полный алгоритм как стоит работать с данными (определение - выбор фич, трансформация, масштабирование - выбор алгоритма, настройка - оценка, валидация, метрики) и поторение при необходимости, пока не достигнешь нужных характеристик accuracy, recall и т.п.

Эдуард Бабушкин комментирует...

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

Alex Brazhenko комментирует...

О, а Python в дереве решений есть еще такой метод как feature_importances_ - вообще классная вещь. Все переменные ранжирует по значимости. Но в зависимости от метода валидации также получаются разные значения.

Здесь главное понять какая из метрик нам важнее, например, accurcy, recall или precision
т.е. важнее ли нам поймать всех преступников (возможно забрав по пути немного невиновных), либо всех кого ловим, должны быть преступники (оставляя, возможно, на свободе некоторых из них, но также не трогая невиновных)

Эдуард Бабушкин комментирует...

feature_importances_

Саша, я тебе конечно завидую, хотя в R такое же встречал: и да, очень круто получать то, что планируешь)

вообще таблицы прогноза 2Х2 при всей видимой простоте несут в себе потрясающие возможности