Share |

воскресенье, 20 августа 2017 г.

Домашнее задание после семинара HR-аналитика в R

Выполняю домашнее задание после семинара HR-аналитика в R. В этом ДЗ вся соль этого обучения - только когда начинаешь работать с реальными данными, да еще в установленные сроки, вот только тогда ты начинаешь учиться по-настоящему. Задание простое - построить несколько моделей, выбрать лучшую из них. На выполнение ДЗ отводилось 2 месяца, и как человек, которому приходиться работать сразу с несколькими задачами одновременно, я дотянула до последнего, так как срок казался таким далеким) Каюсь... В результате доделываю домашку в отпуске...

В моем распоряжении выгрузка с результатами опроса "Исследование ключевых факторов текучести персонала". Я с ней уже на в первый раз работаю, и хочу отметить, она подросла - более 5,5 тыс. записей в моем полном распоряжении по состоянию на конец июня.
В этот раз решила посмотреть на карьерные перемещения - были ли они, у кого они были, и когда случилось такое чудо. Врядли найдется такой человек, который искренне не хочет повышения. (ибо плох тот солдат, который не мечтает стать генералом).
Бесспорно, факт перемещения по карьерной лестнице влияет на стаж работы сотрудника. Часто (увы) этот инструмент применяется именно в целях удержания, но сейчас не про гипотезы, сейчас про цифры.
Как разделяла свои целевые группы: в исследовании есть вопрос "Когда было последнее перемещение, если не было, оставляйте поле пустым". Все, кто проставил дату в этом опросе, промаркированы "да", остальные "нет". Тут комментарии излишни.
Насколько я понимаю, исследование состояло из двух частей. Первая проводилась на другой платформе и не содержало этого вопроса. Увы, но с этой частью мне пришлось расстаться, иначе анализ был бы не верным. Я не помню точной даты, когда Эдуард запустил расширенную версию опроса, но посмотрев внимательно на первую колонку с датой прохождения опроса, увидела интересную картинку - до 13.10.2015 даты были в одном формате, а начиная с этой даты в другом. Вот по этому признаку я и выделила нужную выборку для моего анализа. Можно было поступить проще и задать вопрос Эдуарду - когда появился этот вопрос в исследовании, но я решила проверить свое чутье, а заодно потренировать другой навык - как из данных, имеющихся в наличии, извлекать другие данные)
Собственно ниже картинка, которая показывает различия в стаже:
Стаж значимо различается для тех, кого миновало перемещение по службе, и тех, в кого попало. Классический критерий Манна-Уитни в помощь, кто графикам не верит (результаты теста на том же графике). Где у одних все заканчивается, у других все только начинается...
Всем светит счастье повышения, но вот кому оно светит внутри компании, а кому вне, какие факторы на это влияют? Переформулируя эту задачу в типа аналитическую, я прихожу к следующей формулировке:
Задача - построить алгоритм для предсказывания вероятности повышения. Само предсказание мне конечно интересно, но мне важнее определить факторы, влияющие на зависимую переменную. Для решения использовала 2 варианта: логистическую регрессию и random forest (случайный лес).
Решение.
Подготовка данных к анализу. Самая муторная часть. Тест на выносливость. Качество всех данных можно оценить по следующей картинке слева.
Здесь все красное - это пропущенные значения. Для визуализации воспользовалась функцией matrixplot() из пакета VIM. Чем темнее цвет, тем больше числовое значение.  Но в нашем случае почти все переменные категориальные, получается тут цвет не дает ничего. Зато понятен объем пропущенных значений. Именно с ними пришлось возиться дольше всего. Обработка разных названий одного и того же, выявление откровенно ошибочных данных (например дата приема больше даты увольнения), заняло у меня намного меньше времени. Решила не избавляться от строк с пропущенными данными. Понятно, что в таком случае данных для анализа останется совсем мало. Попробовала вариант заполнения пустых значений - использовать случайные значения из встречающихся для данной переменной.
Помимо работы с существующими данными создала несколько новых переменных. Первая переменная - менялся ли ваш руководитель в процессе работы (BossChange). Если менялся, то присвоено значение =1, если не менялся, то значение =0. Вторая переменная - Поколение руководителя (BossGeneration). Путем "творческих" упражнений я определила поколение руководителя - BB, X или Y. Расчет не точный, но я надеялась, что могут получиться интересные результаты (забегу вперед и скажу - интересных результатов не получилось). Как считала: есть год рождения респондентов, есть разница в возрасте с руководителем, точнее следующие группы: 1 - 3 года, 3 - 10 лет и т.д. Тут просто взяла среднее по каждой группе и прибавила к году рождения, потом определила поколение. Заодно увидела, что в среднем руководители все-таки старше ~на 7 лет.
Дополнительно выделила из вопроса "Проходили ли вы обучение за свой счет, если да, то какое" новые переменные - ОбучениеЗаСвойСчетЯзыковыеКурсы, ОбучениеЗаСвойПрофКурсы, ОбучениеЗаСвойСчетsoftSkills, ОбучениеЗаСвойСчетОфисПО, ОбучениеЗаСвойДругое.
Что осталось для анализа. После обработки первоначальная выборка несколько похудела. Убрала записи до 13.10.2015 (см. выше почему). Убрала записи с отрицательным стажем. Долго думала, но решила убрать записи, в которых смена руководителя произошла после перевода сотрудника. Сделала это потому, что в модели буду активно использовать данные о руководителе и об отношениях с ним. А респондент описывал именно последнего руководителя, а не того, при котором произошло повышение. Получается, что он писал о человеке, который не имел отношения к его переводу. В итоге  минус почти 1,5 тыс. записей. Сомневалась оставлять или нет продолжающих работать. В итоге сделала и так, и так. Разница в результатах была не критическая, решила для поста взять всех.
В сухом остатке 4 018 записей для работы.
Зависимая переменная:  2 533 человек (63%) не получили повышение, 1 486 (37%) получили. Выборка не сбалансированная, придется иметь это в виду при решении. Спасибо хорошему человеку, который совсем по другому случаю и в другом месте дал ссылку как это сделать в R, используя caret, сама бы долго искала. В trainControl в параметре sampling можно указать варианты для несбалансированных выборок. Попробовала варианты "down" и "up".
Делила выборку на обучающую и тестовую в соотношении 70%(для обучения модели) на 30%(для финального тестирования). Везде использовала простую стратегию кросс-валидации - 10 фолдов и все. С учетом несбалансированности выборки не самый лучший выбор (мне нужны гарантии, что распределение классов в фолдах будет отвечать распределению в исходном наборе), но сейчас моя цель закрепить материал семинара, а не строить боевую модель, на основе которой будут приниматься решения.
Классификация с помощью логистической регрессии. Сначала для анализа взяла практически все переменные, кроме ответов на свободные вопросы и результаты тестов. Последние могут внести существенный вклад в модель, но мало участников прошли тесты, в результате получается уж очень много переменных и мало записей. Оставлю это до лучших времен.
После первого обучения модели увидела какие факторы оказались значимыми, а какие нет. На втором шаге исключила из модели все факторы, для которых для всех уровней этих факторов p-value оказался менее 0.05. Сделала можно сказать вручную (зрение+внимательность), хотя знаю, что делается это легко/быстро/просто. В python точно, в R еще предстоит найти как это делать. Век живи, век учись, но века в моем распоряжении сейчас нет.
Ниже на картинке важность первых 15 факторов в порядке убывания этой самой важности + значения коэффициентов для модели + направление их действия.

Для тех, кто привык работать в R, такое представление наверное окажется не совсем привычным. Я попыталась совместить и важность факторов, и значение коэффициентов в модели, и направление их действия. Чем хороши линейные модели, что они позволяют получить все сразу, хотя качество предсказания зачастую существенно ниже в сравнении с непараметрическими моделями. На картинке выше: все, что синее увеличивает ваши шансы на повышение, все что красное приводит к уменьшению этих шансов. Удивило первое место в этом топе - модель говорит, что самым важным фактором является смена руководителя (о как!). Я ожидала увидеть тут что-то типа стажа работы или возраста. Посмотрим, что скажет другая модель.
Метрики качества модели: общая точность модели 70,9% (доверительный интервал 68,3%- 73,5%). ROC AUC - 72%. Маловато, но если честно, я сильно не верю, когда мне говорят о точности модели на уровне 90 - 95%. (Еще немного и прям функциональные зависимости получаются, как в физике или химии). Меня результат удовлетворяет, и если бы классы были сбалансированы, я была бы совсем счастлива. Хотя я честно пыталась учесть этот факт. Но классы не сбалансированы, и в результате 70,9% против 63%.
Классификация с помощью random forest - и вот тут я поступила наверное сильно не правильно. Я не стала запихивать в модель все переменные, которые я брала на самом первом шаге в построении модели логистической регрессии. Я взяла только те переменные, которые там оказались значимыми. Почему я так сделала? Хотела видимо честно сравнить оба алгоритма, максимально приблизив их по набору входящих данных. И вот важность факторов второй модели, вид привычный для пользователей R:
Последовательность переменных по убыванию их важности изменилась. На первое место вылетел стаж работы (до повышения конечно, не общий) stagPromot. Скажу сразу, я вообще сильно сомневалась, а стоит ли включать эту переменную в анализ. Но по логике, чем дольше ты работаешь, тем выше вероятность. В лог. регрессии эта переменная не попала даже в ТОП-30. На втором месте снова оказалась переменная, связанная со сменой руководителя во время работы (1 - это означает, что смена руководителя была).
Метрики качества модели - общая точность 72,1% (доверительный интервал 69,5% - 74,7). ROC AUC 79,7% (!). Ох уж эти непараметрические модели :-). Надо было бы еще xgboost зарядить (как говорят, во всех непонятных ситуациях используй xgboost), наверное получила бы желаемые ~90% и поссорилась сама с собой))).
Выбор лучшей модели - между логистической регрессией и случайным лесом победил последний на основании значения roc auc. Это можно сказать был выбор "судьи" (то есть меня). Знаю, так выбирать лучшую модель не правильно - есть формальные методы для такого выбора...
Выводы (для себя): 
1. Каждое семейство алгоритмов имеет свои преимущества и важно выбирать то, что помогает тебе ответить на твой конкретный вопрос, а не гнаться за лучшими метриками
2. Учиться, учиться, учиться
3. Всегда не хватает 1-го дня
4. Работать надо на работе, в отпуске это плохо получается(

Задача классификации с помощью пакета mlr в r на кейсе по адаптации персонала

После семинара по R участники делают свои проекты - домашние задания. Я тоже решил сделать свое домашнее задание. Чтобы показать студентам, что я сам еще могу руками работать. И еще показать потенциальным участникам семинара "HR-аналитика в R", что их ждет на семинаре. Если Вы не аналитик, рекомендую Вам в самом низу почитать менеджерскую часть проекта - то, что делает менеджер, принимающий решения, на основе анализа.
В качестве задачи я решил взять задачу про прогноз успешности адаптации персонала (мы на семинаре разбирали такую задачу), но решить ее с помощью пакета mlr.
mlr - это фреймфорк, пакет обертка для алгоритмов машинного обучения, он значительно облегчает жизнь специалистам по машинному обучению. До последнего времени я пользовался пакетом caret, его же использую на семинаре. Но вот в качестве собственного развития покажу, как работает mlr

Итак, 

library(mlr)
Сразу обозначу, почему mlr мне показался симпатичен- параметры модели. И возьму один из самых популярных алгоритмов - случайный лес. Но количество алгоритмов больше, в том числе любимый всеми xgboost

пятница, 18 августа 2017 г.

11 факторов, влияющих на эффективность обслуживания клиентов

Перевод статьи How 11 Factors Influence Customer Service Performance в рамках нашего проекта переводы статей по hr-аналитике на английском.
Перевод статьи выполнила Ольга Крутых (по ссылке - профиль в Линкедине). Ольга работала в HR, но несколько лет назад уехала в Испанию и, как я понимаю, в HR возвращается только через переводы)))
Статья кажется не HR-ая, но на самом деле, открою секрет, в списках задач по HR аналитике, управление лояльностью клиентов - одна из HR задач. Эта статья скорее обзорная, но начнем с чего-то - в моем блоге это первая статья про применение HR аналитики в обслуживании клиентов.
Итак,

11 факторов, влияющих на эффективность обслуживания клиентов 

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

В литературе мы находим, что когда работники работают качественно, их клиенты:

  1. Чувствуют себя счастливее
  2. Чаще отзываются положительно о сервисе
  3. Более удовлетворены
  4. Чаще приходят в магазин
  5. И покупают больше!

Проще говоря, компания зарабатывает больше, если ее клиенты счастливы. Так как же сделать их счастливыми?

В соответствии с литературой эффективность обслуживания клиентов зависит от нескольких факторов. Их можно разделить на 2 категории: индивидуальные и организационные.

Индивидуальные факторы, влияющие на эффективность обслуживания клиентов


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

В исследовании отмечается, что клиенты ресторана считают, что чем дороже блюда, тем они вкуснее. Поэтому субъективное восприятие – это все.

То, что посетители оценивают одну и ту же еду по-разному в зависимости от цены, означает, что чаще опыт клиента более важен, чем сам продукт.

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

Такие черты характера как добросовестность и экстраверсия влияют на эффективность обслуживания. Добросовестные люди отличаются организованностью, надежностью, ответственностью и трудолюбием. Обычно они выполняют то, что от них ждут.

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

Организационные факторы, влияющие на эффективность обслуживания клиентов

В статье Ployhart, Iddekinge & Mackenzie (2011) отмечается, что организационные факторы влияют на удовлетворенность клиента уровнем обслуживания.
Самый простой способ улучшить эффективность обслуживания – создать соответствующий «климат обслуживания».

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

Исследование, проведенное Ployhart et al. (2011) показало, что магазины с более высоким уровнем климата обслуживания имеют более высокие показатели качества сервиса. В данном случае уровень климата определялся на основе оценок работников ресторана (см. ниже).

Второй фактор – это осознанная автономия (perceived autonomy). Чем выше влияние работника в принятии решений, тем выше его эффективность.

Причины могут быть многочисленны. Более самостоятельные работники чаще чувствуют себя ответственными и поэтому более уверены в себе. К тому же автономия может привести к большей свободе в принятии решений, что, в свою очередь, позволяет работнику быстрее разрешать проблемы.
11 факторов, влияющих на эффективность обслуживания клиентов
Интересно, что в том же исследовании (объект исследования – рестораны) обучение персонала не влияло на улучшение уровня обслуживания.

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

Возможно, что обучение относительно простым темам (как, например, подавание блюд в ресторане) не вызывает такого интереса у работников по сравнению с более сложными и интенсивными курсами, например, продажи.

За обслуживание на высшем уровне также не полагается дополнительного вознаграждения.

Итак, почему же так важна эффективность обслуживания?

Эффективность обслуживания клиентов в магазине определялась тем, насколько счастлив клиент и как часто он будет приходить в магазин. Другими словами, чем выше эффективность обслуживания, тем выше удовлетворенность и лояльность клиента (Ployhart et al., 2011).
11 факторов, влияющих на эффективность обслуживания клиентов

Соединив 2 предыдущие модели, мы получим комплексную модель эффективности обслуживания клиентов:
11 факторов, влияющих на эффективность обслуживания клиентов
В этом же исследовании обращают на себя внимание и другие интересные моменты.

Оценка уровня обслуживания зависит также от возраста и пола клиента. Чем старше клиенты, тем умереннее их оценки. При этом женщины чаще довольны обслуживанием и готовы вернуться в ресторан и рекомендовать его своим знакомым (высокая удовлетворенность и лояльность).

Метрики эффективности обслуживания клиентов


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

1. Экстраверсия

Экстраверсия – первый по значимости фактор, входящий в “большую пятерку” факторов личности. Экстраверты общительны, разговорчивы, энергичны и умеют убеждать. Также они чаще стремятся к превосходству. Исследование показало, что экстраверты успешнее справляются с работой и имеют более высокие (индивидуальные) показатели обслуживания клиентов по сравнению с интровертами.

2. Добросовестность

Добросовестность – второй из “большой пятерки” факторов личности, имеющий прямое отношение к достижению наивысшей эффективности в обслуживании. Добросовестные работники надежны, ответственны, трудолюбивы и целеустремленны. Помимо этого добросовестность играет ведущую роль в оценке производительности труда в целом.
Три оставшихся фактора (открытость, доброжелательность и эмоциональность) не были связаны с достижением высших показателей обслуживания.

3. Когнитивные способности

Когнитивные способности работника - еще один показатель высокой удовлетворенности клиента. Работники с более высоким уровнем познавательных способностей (часто измеряемых в IQ) обычно оказывают более качественные услуги (Ployhart et al., 2011).
Люди с выраженными познавательными способностями будут быстрее учиться, осваивать больше информации и эффективно ее анализировать. Поэтому познавательная способность – наша третья по значимости метрика эффективности обслуживания. Более того, наглядным критерием (proxy) для данной метрики будет уровень образования работника.

4. Обучение персонала

Обучение ускоряет процесс усвоения специфических знаний (Hatch & Dyer, 2004). Оно направлено на совершенствование навыков. Отмечено, что более опытный работник обслуживает более качественно (Ployhart et al., 2011). Однако это утверждение не распространяется на все профессии. Работники, выполняющие несложные обязанности (например, работа официанта), получают меньше пользы от обучения в отличие от работников, занятых на более сложных работах.

5. Фактический опыт работы

Фактический опыт работы – еще одна из метрик оценки эффективности обслуживания, так как более опытные работники лучше подготовлены и следственно предоставляют лучший сервис (Ployhart et al., 2011). Например, типичная ошибка новичка, когда официант пытаясь удержать поднос, опрокидывает его на клиента со всем содержимым, может привести к ухудшению клиентского опыта и снижению удовлетворенности сервисом.

6. Климат обслуживания

Внутренний климат компании – важный фактор, влияющий на поведение работника. Если в организации созданы возможности для качественного оказания услуг, работники знают, что от них ждут сервиса высшего качества и он будет вознагражден. Работа в подобном климате приносит лучшие результаты. Доказано, что климат обслуживания воздействует на качество сервиса и уровень удовлетворенности клиента. Измерение климата можно легко провести в виде опроса работников, используя в анкете короткую шкалу. Примерный вопрос для шкалы может быть таким: «Ресторан измеряет и регистрирует качество вашей работы и сервиса?»

7. Местная конкуренция

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

8. Индивидуальные показатели эффективности обслуживания

Данная метрика отражает качество сервиса, предоставляемого работником. Измерить этот показатель можно задав вопрос: «Готовы ли вы рекомендовать услугу (имя работника) другу или коллеге?» или используя форму обратной связи 360о, в которой клиента просят оценить уровень предоставляемой работником услуги.

Индивидуальный показатель эффективности обслуживания – это выходная переменная, зависящая от переменных, упомянутых в пп. 1-7.

9. Командные показатели эффективности обслуживания

Эффективность работы в команде зависит от эффективности обслуживания каждого работника. Исследование, проведенное Liao & Chang (2014), отмечает, что если у отдельного магазина индивидуальные показатели эффективности (п.8) выше среднего, он превосходит другие магазины, представленные в примере.

Другими словами, индивидуальные показатели эффективности обслуживания влияют «снизу-вверх» на командные показатели (bottom-up effect).

10. Удовлетворенность клиента

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

11. Лояльность клиента

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

Лояльность измеряется очень просто: регистрируя историю покупок клиента в программе (например, система бронирования). Наличие подобных систем может также помочь в улучшении качества клиентского опыта. Например, большинство соляриев регистрируют интенсивность загара и продолжительность сеанса своих клиентов, чтобы затем предложить лучший сервис, основанный на их истории. В качестве еще одного варианта можно предложить (сканируемые) карты лояльности.
__________________________________________________________
На этом все, читайте нас в фейсбуке и телеграмме

Анализ речи мог сейчас привести вас к повышению

Перевод статьи Speach analysis could now land you a promotion в рамках нашего проекта переводы статей по hr-аналитике на английском.
Перевод выполнила Анна Федорова, руководитель одного из hr-направлений крупной телекоммуникационной компании (по ссылке профиль в фейсбуке). Это уже второй перевод Анны, читайте также Компания Висконсина предлагает имплантировать микрочипы дистанционного управления своим сотрудникам. Анне достаются переводы про взрывы и революции. И эта статья - еще один такой взрыв - рассказ про то, как можно анализировать речь работников.
Это не будущее, а настоящее: Raja Sengupta рассказывал мне, что работал в проекте по анализу речи кандидатов на собеседовании для одного холдинга. Это значительно более сложная задача, чем робот Вера. Но такие сервисы скоро появятся у нас.
Итак,
Анализ речи мог сейчас привести вас к повышению

Анализ речи мог сейчас привести вас к повышению

С меньшим количеством людей в человеческих ресурсах, программа анализа речи помогает работодателям нанимать новых кандидатов, оценивать пригодность для повышения по службе и измерять уровни стресса среди работников.
«Как вы отдохнули в воскресенье?», «Как прошел ваш последний отпуск?»
Хотя эти вопросы звучат очень просто, ваша следующая работа может зависеть от того, как вы на них ответите. И это будет не человек, с которым вы разговариваете, а компьютер. Вместо трудоемких онлайн опросников или психометрических тестов, некоторые рекрутеры просят кандидатов позвонить по номеру телефона, ввести личный пин-код  и ответить на серию вопросов, изложенных компьютером. Нет мыслей? Нажмите на решетку, чтобы перейти к следующему вопросу. До тех пор пока вы не поете, стучите или просто читаете вслух, что вы говорите не имеет значение. Важно, как вы это говорите.
Департаменты управления персоналом долго использовали компьютерные алгоритмы, чтобы просканировать резюме и выбрать лучших кандидатов на работу. Сейчас использование технологии переходит на другой уровень.
Речевые тесты используются рядом компаний не только для рекрутмента, но также для оценки и тренировки коммуникативных навыков, оценки пригодности для продвижения по службе и измерения уровня стресса сотрудников. Во всех случаях никто — как минимум, не человек — не слушает что вы говорите. Но действительно ли это объективно? И какие риски?
Это происходит вот как. Ваша 15-минутная голосовая запись анализируется в цифровом виде — тон голоса, подбор слов, структура предложений — чтобы определить черты личности такие как открытость к изменениям, энтузиазм, эмпатия. В долю секунды компьютерная программа определяет ваш характер. достижение статуса или хорошо организованы — в сравнении с идеальным Графики и диаграммы выявляют насколько вы дружелюбны, ориентированы на профилем кандадата, составленным рекрутером.
«Не существует человека в мире, который смог бы проанализировать так много аспектов личности, навыков и речи всего за 15 минут», говорит Mario Reis, со-основатель компании Precire Technologies, Ахен, Германия (прим. - компания-инновационный лидер технологий анализа речи). Их инструменты анализа речи используются гигантом человеческих ресурсов Randstad (прим. - рекрутинговая компания), транспортной компанией Fraport и страховой компанией Control€xpert, рассказывает Mario Reis.

Ваш голос раскрывает вас

Компьютер расшифровывает ваш голосовой файл, разделяя его на 500 000 аспектов речи. Затем ваш файл удаляется. При использовании в сфере электронного здравоохранения оно разработано так, чтобы быть анонимным, без определения личного опознавательного кода (пин-кода), говорит Reis.
Собранная информация сравнивается с результатами, ранее полученными у типовой группы. В исследовании, проведенном компанией Precire, у 6 000 человек была записана их речь и также они прошли традиционные личностные тесты. Это позволило исследователям определить речевые модели, связанные со специфическими личностными чертами.

Пока компьютерная программа идеальна на этапе отбора для включенных в «короткий список» кандидатов на работу, она не предназначена для того, чтобы заменить финальное личное интервью, говорит Reis. Но когда дело доходит до измерения коммуникативных навыков, он полагает, что анализ речи имеет преимущество. «Precire сравнивает [запись голоса] с лучшими продавцами, которых мы когда-либо оценивали, с лучшими руководителями, которых мы когда-либо оценивали. Возможно сравнить их объективно. Это то, что вы не можете делать в своей голове. Люди всегда подвержены субъективному ощущению», говорит он.
Ifp Management Diagnostics использует программное обеспечение, разработанное компанией Precire, чтобы оценить и обучить персонал для продаж и руководящих ролей, и измерить уровни стресса.
«Обратная связь от наших участников показывает, что они поражены точностью анализа их речи и личности», говорит Rainer Baecker, партнер и директор давно образованной компании точечного поиска персонала и развития, находящейся в Кельне, Германия. «Наши результаты не только показывают сильные и слабые стороны, но позволяют нам сделать незамедлительные выводы для поведенческих рекомендаций: как участник может расширить его коммуникативный репертуар», говорит он.
Другое преимущество это то, что анализ, проводимый компьютером, не находится по влиянием таких аспектов как пол, возраст или внешность и поэтому он высоко объективен.
Наряду с экономией времени и финансов работодателя, анализ речи делает процесс поиска работы быстрее и более удобным для претендентов, говорит Reis. «Мы видим, что около 75% пользователей Precire проходят свое интервью в первые 24 часа после получения номера телефона и пин-кода,  прямо в свой обеденный перерыв или перед обедом или по пути домой».

Риски

Но карьерный коуч и консультант по высвобождению работников Matthias Martens, компания Martens & Friends, Гамбург, Германия, предупреждает «С точки зрения сотрудника я вижу больше недостатков, чем преимуществ». Существует риск, что не носитель языка упустит возможность, говорит он, и риск людей, изменяющих свою речь, чтобы попытаться манипулировать результатами. Он также опасается, что люди, ищущие работу, которые отказываются представить образец речи, могут быть не допущены к отбору. «Никто в компании не допустил бы этого. Они всегда говорили бы, что это добровольно», говорит Martens. «Но компания, которая использует такой вид технологии это та компания, которая ищет инновационных и любопытных людей, а также имеющих позитивное отношение к техническому прогрессу».
«Если в период процесса рекрутмента кто-то откажется принимать участие [в речевом тесте] из-за страха или скептицизма, то компания подумает, что не стоит больше тратить время на них и найдет ту или иную причину, чтобы отказать им». Для людей, кто пройдет тест, говорит он, «Я думаю, важно, что результаты анализа оцениваются и интерпретируются обученным HR специалистом или психологом и что кандидату дается честная обратная связь о том, что показал тест о нем».
«Меня беспокоит то, что недостаточно подготовленный HR персонал сделает жизнь легкой для себя, позволяя технологии сделать работу и не доверяя своим собственным аналитическим навыкам, поэтому машина принимает все больше и больше решений». Alessandro Vinciarelli, эксперт по вычислительной науке, неврологии и психологии Университета Глазго, Великобритания, говорит, что только в последние пять лет или около того анализ речи начал использоваться. С точки зрения точности, говорит он, «в половине случаев вы можете быть уверены в автоматически полученных данных. В других 50%, лучше, если у вас есть экперт чтобы рассмотреть [выводы]. В целом всегда лучше иметь эксперта». «Эти технологии не предполагают заменить людей. Они предполагают помогать и содействовать профессионалам».
Метод хорошо подходит для найма на работу, связанную с множеством межличностных контактов, говорит он. «Вы можете определить, насколько люди чуткие, вы можете измерить быстры ли они и непринужденны ли при взаимодействии с другими... и для простых работ таких как работа в колл-центрах, способность к коммуникации может быть проверена очень легко этими видами технологий». И, добавляет он, «до сих пор, рекрутмент обычно основывался на чтении резюме [который] всегда неизбежно сводился к просмотру хороших университетов и правильных мест».
Анализ речи, говорит он, может проходить «немного больше этого и возможно увеличит шансы людей кто по той или иной причине не смог сделать лучший шаг в некоторых точках своей карьеры».  Риск, говорит Vinciarelli, это то, что рекрутеры могут начать доверять результатам технических методов и исключать другие методы. «Это вопрос поиска некоторого хорошего компромисса между использованием таких технологий и полной уверенности в нем. Вы должны использовать его с чуткостью и деликатностью».
__________________________________________________________
На этом все, читайте нас в фейсбуке и телеграмме

вторник, 15 августа 2017 г.

Прогноз эффективности работников на основе тестов профессиональных знаний

У меня возник интересный проект, который мне подкинул клиент, и за который я по традиции ничего не получил.
Но проект интересен эвристикой, которую я нарыл, и ей хочу поделиться.
Задачка такая: порядка 500 манагеров в компании, работа которых связана с профессиональными знаниями. Поэтому логичным выглядело решение менеджмента компании протестировать работников на тест профессиональных знаний.

Задача

как на основе теста профессиональных знаний выявить эффективных.
Про эффективность скажу только, что она измерялась "1" - эффективный и "0" - не совсем чтобы.
Задача осложнялась тем, что спецы были не монопрофильные, в компании 8 функциональных направлений и три уровня должности (спец, спец повыше и спец еще повыше).
В тестах использовалось около 300 вопросов (!!!), но вопросы не шли сплошняком для всех менеджеров, а давались выборочно, поэтому мы не могли получить датасет размером 500 манагеров Х 300 вопросов. Точнее, мы его получить получили, но это была sparse матрица - с большим количеством пропущенных значений. Итого у нас в ячейках могло быть три значения: 1 - если респондент ответил правильно на вопрос, 0 - если ответил не правильно, пустая ячейка, если респондент не отвечал на этот вопрос.
К плюсам можно было только отнести только то, что вопросы не строго соответствовали позиции и функциональному направлению, а было много пересечений, т.е. один вопрос мог перекрывать несколько функциональных направлений и уровней должности.

Варианты


  1. Можно было бы сделать свою модель для каждой из 24 позиций (8 функциональных направлений Х 3 уровня позиции). Это не вариант, потому что на каждую позицию среднем выпадает по 20 строк, что не позволяет говорить хоть мало мальски статистической валидации. Можно типа было объединить спеца повыше и спеца еще повыше, но и в этом случае данные нам мало что дают. 
  2. Можно было бы тупо запихать все в алгоритм машинного обучения, дамми кодинг и все такое. Но возникает вопрос, насколько это вообще правильно? К примеру вопрос был задан 100 манагерам, 50 ответили правильно, 50 ответили неправильно. У нас в одной переменной 50 единиц и 450 нулей, в другой 50 единиц и 450 нулей. 
  3. Я избрал третий путь, причем этот путь определялся не только задачей собственно получения точности, сколько позицией клиента. Клиенту нужно было "живое" решение. Ну т.е. чтобы дать что-то, что клиент мог бы применять прям и сразу. А в случае алгоритма машинного обучения это был бы черный ящик: ты туда загружаешь данные, а оттуда колбаса. Клиент не поймет. 

Решение


  1. Решение должно быть наглядным. Первым делом я отбросил вопросы с низкой дисперсией, т.е. вопросы, на которые почти все ответили правильно или почти все ответили неправильно. Понятно, что такие вопросы в принципе не могут дифференцировать эффективных и не очень.
  2. Далее, я тупо запустил цикл с Хи квадрат (у нас показатели эффективности - "1" и "0", и в ячейках "1" и "0") с поправкой йейтса, канечна же. И отобрал только те вопросы, где p-value было ниже 0, 05. Без учета позиции, функционального направления и т.п.. 
  3. В уже отобранном списке я еще запустил цикл с уже корреляцией, чтобы выявить те вопросы, которые отрицательно коррелировали с эффективностью. И такое тоже было: порядка 5-6 вопросов. Они были значимо связаны с эффективностью, но я решил от них отказаться, потому что противоречило содержательной логике: если работник правильно отвечает на вопрос, то с больше вероятностью он будет не эффективным. Наверное, разработчики вопросов не закладывали такой логики.
  4. Остались только вопросы, положительно связанные с эффективностью, и в этом месте я делаю финт ушами: я считаю общее количество вопросов по строке - по каждому работнику, я считаю количество правильных ответов, и я считаю % правильных ответов. Где то в глубине души полагая, что если если каждый выбранный вопрос положительно коррелирует с эффективностью, то сумма даст более точное решение.
  5. В итоге мы получаем две переменные: эффективность и % правильных ответов. 

Прогноз эффективности работников на основе тестов профессиональных знаний

Как вы уже догадались, по оси X - % правильных ответов, красная линия - для не очень эффективных, зеленая линия - для эффективных.
Решение уже выглядит не зряшным. Описательные статистики для двух групп такие
$`0`
   Min.    1st Qu.    Median    Mean    3rd Qu.    Max.
 0.0000    0.2500     0.3750    0.4084     0.5357    0.8750

$`1`
   Min. 1st Qu.    Median      Mean    3rd Qu.    Max.
 0.0000  0.5000     0.7029    0.6647    0.8235     1.0000
Т.е. эффективные в медиане отвечают на 70 % вопросов правильно, а не эффективные - на 37 %.

Дерево решений и другие ужасы нашего городка 

дает нам скоринговую карту
Прогноз эффективности работников на основе тестов профессиональных знаний

Это значит, что если вы отвечаете на 43 % вопросов правильно и выше, то с 87 % вероятностью вы будете эффективным. Если вы отвечаете на менее чем 34 % вопрос правильно, с 66 % вероятностью вы будете неэффективным. И сонфьюзион матрикс на тест сете дает нам такую картину
      FALSE  TRUE
  0      11         19

  1       5          73
Базовая точность 72 %, мы получили 78 %. Пресижн - 79 %. Хотя в нашем случае под пресижн надо считать не 73/(73+19), а скорее 11 / (11+5) = 69 % . И мы отсекаем 35-40 % неэффективных (11 / (11+19).
Если взять случайный лес и прочие алгоритмы, то они конечно же дают точность выше. Но не критично выше - точность на 5-7 % повыше. Кстати, если в модель добавлять собственно вопросы, то точность также не особо растет. Растет, как ни странно, при добавлении вопросов, которые отрицательно коррелируют с эффективностью. Но я таки не стал их включать в модель, ибо сердце человеческое требует гармонии.
И не забывайте, что этот "алгоритм" можно уже завтра ставить клиенту и считать. Просто считаем % правильных вопросов по нужным вопросам и принимаем решение - скоринговая карта.
Вот собственно вся эвристика.

Понравился пост? 

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

На этом все, читайте нас в фейсбуке 

понедельник, 14 августа 2017 г.

Изучаем регрессию дальше


Задача

В предыдущей статье «Регрессия: Как начать предсказывать» мы коснулись темы простой линейной регрессии. Сегодня мы продолжим погружаться в эту интересную тему.

Итак, задача на сегодня у нас следующая. Есть данные участников мастер-класса по скорочтению (126 наблюдений). Мы построим модель прогноза Количества прочитанных книг за год на основании Скорости чтения человека. Т.е. Количество книг это зависимая переменная, а Скорость чтения – это независимая переменная (предиктор).

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

В этой статье мы задействуем следующие методы:
·        Полиномиальная регрессия
·        Decision Tree («Дерево решений»)
·        Random Forest («Случайный лес»)
·        SVR (метод опорных векторов)
·        KNN (метод k-ближайших соседей)

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

Подготовка данных

У нас есть набор данных участников мастер-классов по скорочтению. База, на основании которой мы будем строить нашу модель.

Загрузить данные в R можно следующей командой:
dataset <- read.csv("SpeedReading_4_Groups.csv", sep = ";")
Посмотреть на первые шесть строк нашего датасета можно так:

head(dataset)

Никакой особой подготовки или преобразований наши данные не требуют.

Нам только нужно разделить наши данные на тренировочный и тестовый наборы данных. Т.е. на тренировочном датасете мы будем тренировать наши модели, а на тестовом – будем их тестировать.

Разделить наши данные на два датасета можно следующим кодом:
trindex = sample(1:nrow(dataset), nrow(dataset)*0.8)
training_set = dataset [trindex, ]
test_set = dataset [-trindex, ]

В результате такой операции мы получим два датасета:
training_setтренировочные данные
test_setтестовые данные

При этом данные будут распределены в пропорции 4/5. Т.е. 80% данных пойдет в тренировочные датасет, а 20% оставшихся в тестовый.

Вспоминаем линейную регрессию

Давайте построим простую линейную регрессию с одной независимой переменной, как мы это делали в прошлой статье.

У нас получится следующая модель:

А также давайте визуализируем данную модель.

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

Тест на нормальность распределения наших переменных:

А также гистограммы:


Т.е. наша зависима переменная (Количество прочитанных книг) не прошла тест на нормальность. Кроме того, если посмотреть на график scatter plot, где отображена взаимосвязь наших двух переменных, то мы увидим, что связаны они не совсем линейно.

Нелинейные модели

Теперь давайте попробуем решить нашу задачку при помощи нелинейных моделей.

Полиномиальная модель

Построить такую модель совсем несложно. Достаточно добавить несколько полиномов. Например, это можно сделать так:
training_set$Level2 = training_set$Скорость.чтения^2
training_set$Level3 = training_set$Скорость.чтения^3
training_set$Level4 = training_set$Скорость.чтения^4
poly_reg = lm(Сколько.книг~Скорость.чтения+Level2+Level3+Level4, data = training_set)
summary(poly_reg)

В результате выполнения данных команд мы получим следующую модель:

Интерпретация такой модели ничем не отличается от линейной модели. Здесь мы можем увидеть все предикторы, а также посмотреть чему равняется R2 нашей модели.

Давайте визуализируем и данную модель:

Теперь давайте построим и другие типы моделей.

·        Decision Tree («Дерево решений»)
·        Random Forest («Случайный лес»)
·        SVR (Метод опорных векторов)
·        KNN (Метод k-ближайшего соседа)

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

Decision Tree («Дерево решений»)

Для построения модели Decision Tree достаточно выполнить следующий код:
dTree <-  rpart(formula = Сколько.книг ~ Скорость.чтения,
                  data = training_set,
                  control = rpart.control(minsplit = 3))

И давайте также визуализируем полученный результат:


Мы видим, что данный метод совсем по-другому визуально пытается описать наши данные в отличие от простой линейной регрессии.

Random Forest («Случайный лес»)

Двигаемся дальше. Теперь метод Random Forest. Для построения регрессионной модели данным методом необходимо выполнить следующий код:
rndForest = randomForest(x = training_set[5],
                         y = training_set$Сколько.книг,
                         ntree = 5)

И давайте посмотрим на визуализацию нашей новой модели:


Из рисунка видно, что данный метод еще более «изощрённо» пытается описать наши данные.

SVR (Метод опорных векторов)

Переходим к следующему методу – SVR (Метод опорных векторов). Для построения регрессионной модели, необходимо выполнить следующую строку кода:
fitSVM = svm(formula = Сколько.книг ~ Скорость.чтения,
                data = training_set,
                type = 'eps-regression',
                kernel = 'radial')

И также давайте посмотрим на графическое отображение нашей новой модели:


Рисунок показывает нам, что данный метод строит более плавную линию для описания наших данных.

KNN (Метод k-ближайшего соседа)

И последний метод k-ближайшего соседа. Для построения регрессионной модели при помощи данного метода, нам необходимо выполнить следующий код:
fitKNN <- knn.reg(training_set[5], test_set[5], training_set[,4], k = 5)

И визуализируем нашу модель на графике:

Из рисунка мы видим, что метод KNN чем-то похож на визуализацию Random Forest. Такая же ломанная кривая линия.

Тестируем и выбираем лучшую модель

Теперь давайте протестируем все наши 6 моделей на тестовом наборе данных. Если помните в самом начале мы разделили наш датасет на две части: тренировочный датасет и тестовый датасет. До этого момента мы использовали тренировочный датасет. А теперь мы воспользуемся тестовыми данными.

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

В этом нам помогут три показателя:
MAE (Mean Absolute Error) – Средняя абсолютная ошибка между предсказанной и реальной величиной. Чем меньше ошибка, тем лучше.
RMSE (Root Mean Squared Error) – Квадратный корень из среднеквадратичной ошибки между предсказанной и реальной величиной. От МАЕ отличается тем, что «штрафует» большие ошибки сильнее. Чем меньше, тем лучше.
Rsq (коэффициент детерминации) – это доля дисперсии зависимой переменной, объяснённая нашей независимой переменной или переменными. Чем он больше, тем лучше.

После несложных вычислений и применения наших 6-ти моделей к тестовым данным, мы получим вот такую таблицу:

Давайте выберем трех лидеров по каждому показателю:
МАЕ: линейная, KNN и полиномиальная
RMSE: полиномиальная, Decision Tree и KNN
Rsq: полиномиальная, Decision Tree и KNN

По всем трем показателям у нас лидируют две модели: полиномиальная и KNN.

Ранее я говорил о том, что метод KNN-регрессии имеет настраиваемый параметр. Этот параметр (k) задается в формуле. Когда мы строили модель первый раз, мы задали стандартное значение 5. Но давайте теперь попробуем подобрать оптимальное значение (k), при котором наша ошибка RMSE будет минимальной.

Запустив совсем несложный цикл, мы получим следующий результат:


Т.е. наша ошибка RMSE будет минимальной при k=3. Давайте еще раз построим модель KNN с учетом нового значения k=3.
fitKNN <- knn.reg(training_set[5], test_set[5], training_set[,4], k = 3)

И теперь еще раз рассчитаем все наши параметры для выбора лучшей модели:


Мы видим, что настройка параметра k дала свои результаты. Теперь у нас у метода KNN самая минимальная ошибка RMSE и самый большой Rsq.
Мы могли бы тюнинговать и другие методы, но это уже материал для новой статьи.

Теперь визуализируем все наши модели (линии) и на эти же графики точками нанесем данные из тестового датасета. Так мы сможем понаблюдать воочию, насколько точно наши модели описывали новые данные.

Ниже представлен именно такой график:

Выводы

В этой статье мы познакомились с несколькими нелинейными методами регрессии и решили поставленную в начале задачу. А именно:
        1)    Построили модель регрессии различными методами
        2)    Рассчитали критерии точности моделей для выбора наилучшей
        3)    Настроили k-параметр в KNN методе
        4)    Выбрали наилучшую модель и визуализировали итоговый результат