Исследования
June 7, 2022

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

Это перепубликация совместного с Людмилой Роговой поста, который мы написали в 2018 году.

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

Итак, поступила абсолютно реальная задача, связанная с оценкой компетенций.

Условия задачи - есть выборка сотрудников (~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.

Первое, что желательно сделать – оценить, на какое количество кластеров стоит разбить выборку. Одним из способов является вычисление доли объясненной дисперсии R^2, подробное описание тут.

В нашем примере решили оставить 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, начиная от написания мер до красивой визуализации и интерактивности.

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

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