Кластеризация и методы ближайших соседей
Что такое кластеризация?
Кластеризация - это задача машинного обучения, направленная на разделение набора данных на группы или кластеры объектов, которые имеют схожие характеристики или поведение. Основная цель кластеризации состоит в том, чтобы найти скрытую структуру в данных и сгруппировать объекты таким образом, чтобы объекты внутри кластера были более похожи друг на друга, чем на объекты из других кластеров. Кластеризация является методом без учителя, что означает отсутствие меток или заранее определенных категорий для объектов данных.
Ссылки для изучения
Примеры хороших ответов из реальных собеседований
- Собеседование на Middle Data Scientist | #Нанято S1E01RU · 36:13–40:09Техническое собеседование · Ответ кандидата
Кандидатка объясняет кластеризацию как разделение объектов без целевой разметки и сравнивает спектральный подход с K-means на сложной геометрии кластеров.
Какие методы кластеризации вы знаете?
Основные методы кластеризации:
-
K-средних
(K-means): Разбивает набор данных на заранее заданное количество кластеров, минимизируя сумму квадратов расстояний между точками и центроидами кластеров. -
Иерархическая кластеризация
(Hierarchical clustering): Строит древовидную структуру кластеров, объединяя или разделяя кластеры на основе близости объектов. -
DBSCAN
(Density-Based Spatial Clustering of Applications with Noise)
: Определяет кластеры как области высокой плотности объектов, разделенные областями низкой плотности.
-
Агломеративная кластеризация
(Agglomerative clustering): Начинает с отдельных объектов как отдельных кластеров и последовательно объединяет их в более крупные кластеры. -
Спектральная кластеризация
(Spectral clustering): Использует спектральное представление графа данных для выделения кластеров. -
Mean Shift: Определяет кластеры как области вокруг локальных максимумов плотности данных.
Ссылки для изучения
Примеры хороших ответов из реальных собеседований
- #3 Собеседование Data Scientist на 650к в месяц · 6:22–6:54Разбор интервью · Ответ кандидата
Кандидат называет K-means и DBSCAN и связывает их выбор с тем, известно ли число кластеров.
Для чего может использоваться кластеризация?
Кластеризация может использоваться для:
-
Анализа данных: Позволяет выявить скрытые структуры и группировки в данных, что помогает понять их характеристики и взаимосвязи.
-
Сегментации рынка: Помогает разделить клиентов, товары или услуги на группы схожих характеристик для более точного таргетирования рекламы и маркетинговых стратегий.
-
Классификации: Может использоваться для предварительной обработки данных перед классификацией, основанной на метках, или для создания новых признаков.
-
Анализа изображений: Помогает группировать и классифицировать изображения на основе их содержимого или характеристик, таких как цвета и текстуры.
-
Обработки естественного языка: Используется для кластеризации текстовых данных, например, для группировки документов по темам или стилям.
-
Поиска аномалий: Позволяет выявить необычные или аномальные объекты, которые отличаются от общего паттерна данных.
Ссылки для изучения
Какова алгоритмическая сложность k-Nearest Neighbors (kNN)?
Алгоритмическая сложность k-Nearest Neighbors (kNN) зависит от количества объектов в обучающем наборе данных и количества соседей, которые необходимо найти.
-
Подготовка: kNN хранит обучающие данные, а при выборе KD-tree или Ball-tree дополнительно строит индекс. Оптимизации весов нет, но время fit не равно нулю.
-
Предсказание прямым перебором: вычисление расстояний до n объектов с d признаками стоит O(nd). Выбор k соседей добавляет затраты, например O(n log k) с кучей; полная сортировка требует O(n log n).
Итог зависит от алгоритма поиска, размерности и числа запросов. Деревья могут ускорять поиск в малой размерности, но универсальной сложности O(n log k) для всех вариантов kNN нет.
Ссылки для изучения
Как обрабатывать пропуски?
Обработка пропусков в кластеризации включает следующие шаги:
-
Удаление пропущенных значений: Исключение объектов с пропущенными значениями из анализа может быть вариантом, если количество пропусков невелико и не существенно для общего объема данных.
-
Замена на среднее/медианное значение: Пропущенные значения можно заменить на среднее или медианное значение по соответствующему признаку.
-
Использование алгоритмов заполнения пропусков: Методы, такие как k-ближайших соседей или алгоритмы заполнения пропущенных значений на основе регрессии, могут быть использованы для заполнения пропущенных значений.
-
Использование моделей машинного обучения для заполнения пропусков
: Можно обучить модель машинного обучения (например, случайный лес или градиентный бустинг) на имеющихся данных и использовать ее для предсказания пропущенных значений.
-
Использование специальных значений: Пропущенные значения можно заменить специальными значениями, такими как “unknown” или “-1”, если это имеет смысл в контексте задачи.
Ссылки для изучения
Сравните методы класстеризации.
Вот краткое сравнение основных методов кластеризации:-
K-means:-
Один из самых популярных и простых методов кластеризации.
-
Работает на основе центроидов, которые представляют собой средние значения объектов в кластере.
-
Хорошо работает на больших наборах данных.
-
Чувствителен к начальным значениям центроидов.
-
-
Иерархическая кластеризация:-
Строит дерево кластеров (дендрограмму), где каждый узел представляет собой кластер, а ребра представляют сходство между кластерами.
-
Не требует заранее определенного числа кластеров.
-
Подходит для небольших и средних наборов данных.
-
-
DBSCAN(Плотностная основанная кластеризация приложений с шумом):-
Идентифицирует кластеры на основе плотности точек.
-
Способен обрабатывать кластеры произвольной формы и шум в данных.
-
Не требует заранее определенного числа кластеров.
-
Чувствителен к параметрам радиуса и минимального числа точек.
-
-
Mean Shift:-
Находит локальные максимумы плотности данных (peak points) и считает их центры как центры кластеров.
-
Не требует заранее определенного числа кластеров.
-
Может работать с кластерами произвольной формы.
-
Чувствителен к параметру сглаживания (bandwidth).
-
Ссылки для изучения
Каковы плюсы и минусы kNN? Как ускорить поиск соседей с помощью ANN (approximate nearest neighbours)?
kNN (k-Nearest Neighbors):
Плюсы:
-
Прост в реализации и понимании.
-
Не требует обучения, что делает его хорошим выбором для начальной оценки данных.
-
Хорошо подходит для многих типов данных, включая нелинейные и неструктурированные данные.
Минусы:
-
Чувствителен к масштабированию признаков.
-
Требует хранения всего набора данных в памяти.
-
Низкая эффективность на больших наборах данных из-за вычислительной сложности поиска ближайших соседей.
-
Неэффективен для данных с большим количеством признаков.
АНН (Approximate Nearest Neighbors):
-
Метод локально-чувствительных хэшей (Locality-Sensitive Hashing, LSH)
: Алгоритм, который преобразует объекты в хэши таким образом, чтобы похожие объекты имели схожие хэши, что ускоряет поиск ближайших соседей.
-
Методы приближенного поиска ближайших соседей (Approximate Nearest Neighbor Search)
: Используются для быстрого поиска ближайших соседей с небольшой потерей точности. Примеры включают в себя методы ближайших соседей с приближенными структурами данных, такие как k-d trees и ball trees.
Ссылки для изучения
Чем Gaussian Mixture Model отличается от K-Means?
K-Means дает жесткое назначение кластеру и минимизирует сумму квадратов расстояний до центроидов. Лучше всего он соответствует примерно сферическим кластерам схожего масштаба. GMM задает вероятностную смесь: у каждой точки есть posterior-вероятности компонент, а компоненты могут иметь разные ковариации и форму. Параметры GMM обычно оценивает EM по likelihood. Число кластеров для K-Means выбирают по задаче и внутренним метрикам, для GMM можно дополнительно сравнивать AIC или BIC. Оба метода чувствительны к инициализации.
Ссылки для изучения
Примеры хороших ответов из реальных собеседований
- 100 Data Science вопросов мидлу! Парень c Физтеха проходит собеседование · 23:23–25:22Мок-собеседование · Совместный разбор
Обсуждение сравнивает жёсткое назначение точки ближайшему центроиду в K-means с вероятностным смешением гауссовских компонент в GMM.
Когда спектральная кластеризация лучше K-Means?
Спектральная кластеризация полезна для нелинейных кластеров, например двух колец, которые K-Means не разделяет центроидами. Она строит граф сходства, использует собственные векторы его лапласиана и кластеризует полученное представление. Результат сильно зависит от affinity, масштаба соседства и числа кластеров. Матрица сходства и eigendecomposition дороги по памяти и времени, поэтому метод плохо масштабируется без разреженного графа или приближений. Качество проверяют вместе с устойчивостью к параметрам.
Ссылки для изучения
Примеры хороших ответов из реальных собеседований
- Собеседование на Middle Data Scientist | #Нанято S1E01RU · 36:13–40:09Техническое собеседование · Ответ кандидата
Кандидатка объясняет, что спектральная кластеризация полезна для вложенных и нелинейно разделимых кластеров, где предположение K-means о форме кластеров не работает.







