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
Изучите матрицу, содержащию значения степени принадлежности наблюдений к кластерам. Сделайте вывод о наличии или отсутствии кластеризации.
Описание формата инпута.