HW14 // Кластерный анализ
Сегодня мы работаем с данными про сотрудников Компании.
В данных содержатся следующие переменные:
emp
— индентификатор сотрудникаp_exp
— опыт работы в компанииp_age
— возрастная группаp_lvl
— уровень должности в должностной иерархии компанииp_sex
— пол сотруникаp_div
— подразделение, в котором работает сотрудник
Также в данных есть переменные с префиксом q
, которые содержат ответы на вопросы анкеты, которую заполняли сотрудники. Вопросы анкеты можно найти в этом файле. Шкала ответов на вопрос анкеты содержала три альтернативы: 1
— согласен, -1
— не согласен, 0
— затрудняюсь ответить.
Задача, которую поставил нам HRD (директором по персоналу) — кластеризовать сотрудников на основе ответов на вопросы анкеты.
Основные задания
#1
- Загрузите данные. Проверьте их структуру, при необходимости скорректируйте типы переменных. Если в данных есть пропущенные значения, удалите строки, которые их содержат.
- Для упрощения дальнейшей работы отберите переменные, сродержащие ответы сотрудников на вопросы анкеты в отдельный датасет.
Для самопроверки в поле ниже введите количество пропущенных значений, которое содержится в данных.
Подсказки
Как делать задание?
Что надо сделать?
Ответ неверный
#2
Кластеризуйте сотрудников по ответам на вопросы анкеты помощью алгоритма иерархической кластеризации.
Так как результаты кластеризации существенно могут зависеть от выбранной метрики расстояния между кластерами, рассмотрите три варианта — среднее невзвешенное расстояние, метод дальнейго соседа и метод ближайшего соседа.
В качестве метрики расстояния между наблюдениями выберите ту, которая соответствует шкале ответов на вопросы.
Проверьте с помощью построения дендрограмм, выявляется ли кластеризация в данных.
Для самопроверки введите значение аргумента method
функции иерархического кластерного анализа, при котором получается однозначная кластеризация. Если однозначная кластеризация получается при все методах расчета расстояния, введите в поле ответа all
, если ни в одном методе нет однозначной кластеризации, введите none
.
Подсказки
- Иерархическая кластеризация выполняется с помощью функции
hclust()
- Функция требует на вход матрицу расстояний между объектами и метод, с помощью которого рассчитается расстояние между кластерами.
- Матрицу расстояний можно получить с помощью функции
dist()
. - Среднее невзвешенное расстояние задается через значение
"average"
аргументаmethod
. Метод ближайшего и дальнего соседа — значениямиsingle
иcomplete
соответственно. - Дендрограмму можно построить, передав объект с результатами кластеризации в функцию
plot()
.
#3
Рассмотрите возможность кластеризации сотрудников по ответам на вопросы анкеты с помощью метода k-средних.
Для начала определите оптимальное число кластеров, используя в качестве метрики качества кластеризации среднюю ширину силуэта кластера.
Используйте соответствующий график для определения оптимального числа кластеров.
Для самопроверки в поле ответа введите оптимальное число кластеров согласно средней ширине силуэта кластеров.
Подсказки
- Построить необходимую визуализацию можно с помощью функции
fviz_nbclust()
из пакетаfactoextra
. - Функция требует на вход
- датасет (
x
) - метрику качества кластеризации (
method
, в данном случае необходимо передать в него значение"silhouette"
) - функцию кластеризации (
FUNcluster
) - матрицу расстояний (
diss
) - максимальное число кластеров, которое вы хотите рассмотреть (
k.max
)
- датасет (
- Максимальное количество кластеров необходимо выбрать достаточно большим — например, порядка 20.
- Оптимальным количеством кластеров считается то, при корой значение метрики качества кластеризации наибольшее.
#4
- Используя матрицу расстояний, выполните кластеризацию методом k-средних, задав в качестве входного параметра алгоритма оптимальное количества кластеров, полученное в предыдущем задании.
- Визуализируйте кластеры. По построенной визуализации оцените результаты кластеризации.
Описание формата инпута.
Подсказки
- Кластеризация методом k-средних выполняется с помощью функции
k-means()
. - Входными параметрами функции являются матрица расстояний (
x
) и количество искомых кластеров (centers
). - Виузализировать кластеры поможет функция
fviz_cluster()
из пакетаfactoextra
.
#5
Визуализируйте силуэты кластеров. Оцените качество кластеризации.
Описание формата инпута.
Подсказки
- Для визуализации силуэтов кластеров используйте функцию
fviz_silhouette()
из пакетаfactoextra
. - На вход ей необходимо передать результат работы функции
silhuoette()
из пакетаcluster
. - Функция
silhuoette()
ожидает на вход матрицу расстояний (dist
) и вектор со значениями приписанных наблюдениям кластеров (x
).
#6
Рассмотрите вариант кластеризации методом k-средних с тремя кластерами. Выполните кластеризацию, визуализируйте кластеры и их силуэты.
Сравните результаты кластеризации на два и на три кластера.
Описание формата инпута.
Подсказки
Как делать задание?
Что надо сделать?
Ответ неверный
#7
Рассмотрите возможность нечеткой кластеризации на имеющихся данных.
Определите оптимальное число кластеров, используя в качестве метрики качества кластеризации среднюю ширину силуэта кластера. В качестве степени нечеткости кластеризации (fuzziness parameter) используйте значение 1.5.
Используйте соответствующий график для определения оптимального числа кластеров.
Для самопроверки в поле ответа введите оптимальное число кластеров согласно средней ширине силуэта кластеров.
Подсказки
- Построить необходимую визуализацию можно с помощью функции
fviz_nbclust()
из пакетаfactoextra
. - Функция требует на вход
- датасет (
x
) - метрику качества кластеризации (
method
, в данном случае необходимо передать в него значение"silhouette"
) - функцию кластеризации (
FUNcluster
, в данном случае необходимо передать в него значениеfanny
) - матрицу расстояний (
diss
) - максимальное число кластеров, которое вы хотите рассмотреть (
k.max
) - fuzziness parameter, или степень нечеткости кластеров (
memb.exp
)
- датасет (
- Максимальное количество кластеров необходимо выбрать достаточно большим — например, порядка 20.
- Оптимальным количеством кластеров считается то, при корой значение метрики качества кластеризации наибольшее.
#8
- Используя матрицу расстояний, выполните нечеткую кластеризацию методом С-средних, задав в качестве входного параметра алгоритма оптимальное количества кластеров, полученное в предыдущем задании. В качестве степени нечеткости кластеризации (fuzziness parameter) используйте значение 1.5.
- Визуализируйте кластеры и их силуэты. По построенным визуализациям оцените результаты кластеризации.
Описание формата инпута.
Подсказки
- Кластеризация методом С-средних выполняется с помощью функции
fanny()
из пакетаcluster
. - Входными параметрами функции являются матрица расстояний (
x
), количество искомых кластеров (k
) и степень нечеткости кластеров (fuzziness parameter,memb.exp
). - Виузализировать кластеры поможет функция
fviz_cluster()
из пакетаfactoextra
. - Виузализировать силуэты кластеров помогут функции
fviz_silhouette()
из пакетаfactoextra
иsilhouette()
из пакетаcluster
.
#9
- Добавьте к датасету только с вопросами анкеты (полученному в задании 1.b) переменную, содержащую степень принадлежности наблюдений к большему кластеру. Сохраните результат в новый объект, чтобы не было перезаписи исходного датасета.
- Постройте линейную модель, в которой целевой переменной будет степень принадлежности наблюдений к большему кластеру, а предикторами — ответы на вопросы анкеты.
Для самопроверки в поле ниже введите значение скорректированного коэффициента детерминации построенной модели, округленное до сотых. В качестве десятичного разделителя используйте точку.
Подсказки
- Добавить переменную в датасет можно с помощью функции
mutate()
. - Значения степени принадлежности наблюдений к каждому из кластеров содержаться в элементе
membership
объекта с результатами нечеткой крастеризации. - Элемент
membership
представляет собой матрицу, в которой первая колонка — степень принадлжености к первому кластеру, вторая — ко второму и так далее.
#10
- Загрузите датасет с формулировками вопросов анкеты.
- Создайте датасет, в котором будут содержаться статистики статистически значимых коэффициентов построенной линейной модели и соответствующие им вопросы. Схема датасета представлена ниже.
Estimate | Standard Error | t | p | Question | Indic |
---|---|---|---|---|---|
0.02 | 0.003 | 4.40 | 0.04 | q_011 | Текст вопроса |
… | … | … | … | … | … |
- Опираясь на формулировки статистически значимых вопросов, предложите интерпретацию кластеризации: какие сотрудники оказались в рассматриваемом (большем) кластере?
Описание формата инпута.
Подсказки
Чтобы получить требуемый датасет, необходимы выполнить следующие шаги:
- Извлечить из аутпута функции
summary()
таблицу со статистиками коэффициентов (coeffisients
) через индксацию списка по имени элемента. - Преобразовать её в тиббл с помощью функции
as_tibble()
.- Названия предикторов (переменных, содержащих ответы на вопрос) содержиться в названиях строк. Чтобы включить их в датасет в функции
as_tibble()
в аргументеrownames
укажите название колонки, в которую необходимо записать названия предикторов. - Для удобства можно перезадать имена колонок после создания тиббла с помощью функции
set_names()
.
- Названия предикторов (переменных, содержащих ответы на вопрос) содержиться в названиях строк. Чтобы включить их в датасет в функции
- Объедините с помощью функции
right_join()
полученный тиббл с датасетом, содержащим формулировки вопросов. - Отфильтруйте статистически значимые вопросы по колонке со значениями p-value.
Дополнительные задания
#1
Отберите из исходного датасета те наблюдения, которые не попали в больший кластер по результатам нечеткой кластеризации.
Описание формата инпута.
Подсказки
Как делать задание?
Что надо сделать?
Ответ неверный
#2
Постройте матрицу расстояний на отобранных наблюдений.
Описание формата инпута.
Подсказки
Как делать задание?
Что надо сделать?
Ответ неверный
#3
Рассмотрите возможность нечеткой кластеризации отобранных наблюдений.
Определите оптимальное число кластеров, используя в качестве метрики качества кластеризации среднюю ширину силуэта кластера. В качестве степени нечеткости кластеризации (fuzziness parameter) используйте значение 1.5.
Используйте соответствующий график для определения оптимального числа кластеров.
Описание формата инпута.
Подсказки
Как делать задание?
Что надо сделать?
Ответ неверный
#4
- Используя матрицу расстояний, выполните нечеткую кластеризацию методом С-средних, задав в качестве входного параметра алгоритма оптимальное количества кластеров, полученное в предыдущем задании. В качестве степени нечеткости кластеризации (fuzziness parameter) используйте значение 1.5.
- Визуализируйте кластеры и их силуэты. По построенным визуализациям оцените результаты кластеризации.
Описание формата инпута.
Подсказки
Как делать задание?
Что надо сделать?
Ответ неверный
#5
Изучите матрицу, содержащию значения степени принадлежности наблюдений к кластерам. Сделайте вывод о наличии или отсутствии кластеризации.
Описание формата инпута.