.

Сделать репост в соц сети!

суббота, 1 сентября 2018 г.

Компетенции. Кластеризация. Подход №1 (Технический) – как это сделать с помощью R & Power BI.




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

Условия задачи - есть выборка сотрудников (~1 300 человек), для которых известно значение по 5-ти компетенциям и 5-ти навыкам.
Определить:
1. Типичные профили сотрудников по сочетанию компетенций и навыков. Определить группу сотрудников, требующих повышенного внимания с точки зрения развития компетенций и навыков.
2. Связь компетенций (если такая есть) с выполнением KPI. Использовать данные в построении модели прогноза эффективности.
На самом деле вторая задача и была первой (самой главной), но тут приведен порядок, в котором сейчас обрабатываются данные.
Кроме того, был запрос со стороны заказчика на анализ фактора социальной желательности и его роли в оценке респондента.
Первая задача решилась легко и быстро с использованием R и Power BI. Именно после получения этих результатов и родилась идея поста, вдруг кому-то пригодится. Вторая задача тоже не долгая, но больше работы, связанной с количеством и качеством данных, но это давно не новость для многих из нас.
Power BI сейчас использовался скорее с точки зрения презентации результатов. Это очень простой способ представить их в интерактивном виде, дать доступ к отчету/дашборду большому количеству пользователей в очень короткие сроки.
Ниже на картинке то, что у нас получилось на первом шаге, когда требовалось определить сотрудников, требующих повышенного внимания с точки зрения развития компетенций. (правда пока еще не доказано, что их стоит развивать для увеличения показателей, это в процессе)



Для меня и, наверное, многих моих коллег, одним из основных инструментом анализа данных является язык R. Именно в этой среде мы привыкли выполнять и классические статистические тесты, и алгоритмы машинного обучения. Среди своих преимуществ R отличает вполне понятный синтаксис, а для тех, кто провёл свои студенческие годы в статистических пакетах, к примеру, SPSS или Statista, этот язык понятен логически и очень хорошо ложится на базу ранее полученных знаний в области статистики и математических методов. Все хорошо, но если от вас требуется быстро предоставить результаты во всех возможных сочетаниях (вопросы пользователей зачастую непредсказуемы), то реализовать на R это достаточно трудоемко, а уместить в одной презентации еще и потребует некоторой креативности. 
А вот Power BI в вопросах построения эстетичных и интерактивных дашбордов превосходит прочие инструменты во много раз. И при правильном проектировании, можно создать такой отчет, который даст ответы на вопросы заказчиков еще во время презентации/самостоятельного просмотра. Я уже опубликовал пост про воронку подбора, где как один из примеров был показан именно этот инструмент. (см.статью про воронку подбора).
Отличная новость состоит в том, что R может быть использован сразу в Power BI, и все перечисленные выше преимущества суммируются.
Ниже я привел последовательность действий по созданию дашборда с кластерами в Power BI. И, как ни странно сейчас прозвучит, но начал я с привычного R-Studio. Почему? Скажу честно, первое – привычка. Второе – некоторые истории, такие как выбор определенных параметров (в моем примере – количество кластеров). Это правда лучше сначала делать в R-studio, а в power bi передавать уже конечный код. Третье – в Power BI скрипты отрабатывают медленнее, хотя на моем маленьком датасете замедление не особо ощутимо.

1. Написание скрипта в R
Использую простой k-means. Набор данных назвал «for_clustering».
Первое, что желательно сделать – оценить, на какое количество кластеров стоит разбить выборку. Одним из способов является вычисление доли объясненной дисперсии (R2), подробное описание тут.
В нашем примере решили оставить 3 кластера, на это указывает следующая диаграмма: последний наибольший излом графика происходит на третьем кластере, затем прирост доли объясненной дисперсии с каждым новым кластером уже не столь значителен.

Дальше собственно кластеризация.
kclus= kmeans(for_clustering, 3, nstart = 20)

Теперь необходимо представить заказчикам полученные результаты.
Самый удобный вариант - визуализировать данные, но поскольку у нас 10 шкал (5 компетенций и 5 навыков), то существует 45 (сорок пять!!!!) вариантов их парного сочетанияи это ни разу не облегчает восприятие результатов. Мы можем выбрать какой-то один график, но это исказит интерпретацию. Очень хочется уместить всю информацию на одной диаграмме, и для этого есть классный способ понижения размерности признаков при помощи метода главных компонент.
PCA <- prcomp(for_clustering)

Добавляем в наш датасет новые переменные – сами кластеры и значения новых осей Х и Y для визуализации в двумерном пространстве:
for_clustering <- data.frame(for_clustering, for_clustering $clust)
for_clustering <- data.frame(for_clustering, PCA2$x[,1:2])

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



Для построения диаграммы был использован пакет ggbiplot, который расширяет графические возможности R.
Мне эта картинка норм, но с позиции моих заказчиков у нее есть много недостатков 😊
1.       Она статична.
2.       Для них каждая точка – это живой человек, у которого есть имя, весьма определенные величины компетенций и прочая информация, которая может быть им полезна.
3.       Всем хочется посмотреть картинку отдельно и по полу, и по городу, и по возрасту, и по стажу в руководящей должности, и по …………..аааааа………уууууу…….Б.. Зачем-то.
И вот PowerBI дает нам возможность быстро (!!!!) реализовать все выше перечисленное. С R тоже есть варианты реализовать все это, но с Power BI все оказывается существенно проще.

2. То же самое, но в PowerBI

Для написания команд R в PowerBI достаточно выбрать соответствующий вариант (R-скрипт) при определении источника данных, как показано на рисунке ниже:


В открывшемся окне напишем код, который мы уже реализовали ранее в R:


Таким образом, мы получаем стандартную для Power BI таблицу, в которую мы передали рассчитанные по каждому сотруднику кластера и значения главных компонент PC1 и PC2, которые понадобятся для визуализации полученных результатов в двумерном пространстве.


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


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




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

  1. Работа с заказчиком и извлечение пользы на основе полученных результатов - отдельная песня)

    Очень круто и лаконично получилось.

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

    В этом смысле оценка по компетенциям - подозреваю - просто повторение KPI.

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

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

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

      Удалить
    3. т.е. компетенции провайдера, а оценивали компетенции кто?

      Удалить
    4. Не так, компетенции наши, опросник провайдера, а потом его шкалы превращаются в наши компетенции))

      Удалить
    5. а кластеры по шкалам опросника не?

      и у меня еще один вопрос: если в первым фактором в PCA все понятно, то что второй фактор означает, не смотрели?)

      Удалить
    6. От PCA в данном случае ожидали именно осей для графика:) Кластеризация была уже по компетенциям, не по первичным шкалам, так как в дальнейшем заказчик будет работать именно в этих понятиях

      Удалить
    7. Александр, посмотрите корреляцию между фактором 1, фактором 2 PCA и компетенциями.
      Вот посмотрите, я в посте Что такое DIGITAL HR
      https://edwvb.blogspot.com/2018/08/chto-takoe-digital-hr.html
      там где кластерный анализ, показываю, что входит в факторы

      цитирую себя

      "в первом факторе по PCA Автоматизация общения с кандидатом входит с коэффициентом корреляции 0, 81, Автоматизация поиска кандидата - 0, 56. Во втором факторе Автоматизация отчётности - 0, 8, Предиктивная аналитика - 0, 53."

      Удалить
    8. Прикольная идея прокоррелировать PCA с изначальными данными для объяснения.:) Теперь как вернусь в Москву, к данным буду пробовать

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

      Удалить
  3. Спасибо за очень интересно интересную статью!

    ОтветитьУдалить