Перейти к содержимому
На этой странице

Кластеризация и методы ближайших соседей

Все темы Data Scientist

Что такое кластеризация?

Кластеризация - это задача машинного обучения, направленная на разделение набора данных на группы или кластеры объектов, которые имеют схожие характеристики или поведение. Основная цель кластеризации состоит в том, чтобы найти скрытую структуру в данных и сгруппировать объекты таким образом, чтобы объекты внутри кластера были более похожи друг на друга, чем на объекты из других кластеров. Кластеризация является методом без учителя, что означает отсутствие меток или заранее определенных категорий для объектов данных.


Какие методы кластеризации вы знаете?

Основные методы кластеризации:

  1. K-средних (K-means): Разбивает набор данных на заранее заданное количество кластеров, минимизируя сумму квадратов расстояний между точками и центроидами кластеров.

  2. Иерархическая кластеризация (Hierarchical clustering): Строит древовидную структуру кластеров, объединяя или разделяя кластеры на основе близости объектов.

  3. DBSCAN

    (Density-Based Spatial Clustering of Applications with Noise)

    : Определяет кластеры как области высокой плотности объектов, разделенные областями низкой плотности.

  4. Агломеративная кластеризация (Agglomerative clustering): Начинает с отдельных объектов как отдельных кластеров и последовательно объединяет их в более крупные кластеры.

  5. Спектральная кластеризация (Spectral clustering): Использует спектральное представление графа данных для выделения кластеров.

  6. Mean Shift: Определяет кластеры как области вокруг локальных максимумов плотности данных.


Для чего может использоваться кластеризация?

Кластеризация может использоваться для:

  1. Анализа данных: Позволяет выявить скрытые структуры и группировки в данных, что помогает понять их характеристики и взаимосвязи.

  2. Сегментации рынка: Помогает разделить клиентов, товары или услуги на группы схожих характеристик для более точного таргетирования рекламы и маркетинговых стратегий.

  3. Классификации: Может использоваться для предварительной обработки данных перед классификацией, основанной на метках, или для создания новых признаков.

  4. Анализа изображений: Помогает группировать и классифицировать изображения на основе их содержимого или характеристик, таких как цвета и текстуры.

  5. Обработки естественного языка: Используется для кластеризации текстовых данных, например, для группировки документов по темам или стилям.

  6. Поиска аномалий: Позволяет выявить необычные или аномальные объекты, которые отличаются от общего паттерна данных.


Какова алгоритмическая сложность k-Nearest Neighbors (kNN)?

Алгоритмическая сложность k-Nearest Neighbors (kNN) зависит от количества объектов в обучающем наборе данных и количества соседей, которые необходимо найти.

  1. Подготовка: kNN хранит обучающие данные, а при выборе KD-tree или Ball-tree дополнительно строит индекс. Оптимизации весов нет, но время fit не равно нулю.

  2. Предсказание прямым перебором: вычисление расстояний до n объектов с d признаками стоит O(nd). Выбор k соседей добавляет затраты, например O(n log k) с кучей; полная сортировка требует O(n log n).

Итог зависит от алгоритма поиска, размерности и числа запросов. Деревья могут ускорять поиск в малой размерности, но универсальной сложности O(n log k) для всех вариантов kNN нет.


Как обрабатывать пропуски?

Обработка пропусков в кластеризации включает следующие шаги:

  1. Удаление пропущенных значений: Исключение объектов с пропущенными значениями из анализа может быть вариантом, если количество пропусков невелико и не существенно для общего объема данных.

  2. Замена на среднее/медианное значение: Пропущенные значения можно заменить на среднее или медианное значение по соответствующему признаку.

  3. Использование алгоритмов заполнения пропусков: Методы, такие как k-ближайших соседей или алгоритмы заполнения пропущенных значений на основе регрессии, могут быть использованы для заполнения пропущенных значений.

  4. Использование моделей машинного обучения для заполнения пропусков

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

  5. Использование специальных значений: Пропущенные значения можно заменить специальными значениями, такими как “unknown” или “-1”, если это имеет смысл в контексте задачи.


Сравните методы класстеризации.

Вот краткое сравнение основных методов кластеризации:
  1. K-means:

    • Один из самых популярных и простых методов кластеризации.

    • Работает на основе центроидов, которые представляют собой средние значения объектов в кластере.

    • Хорошо работает на больших наборах данных.

    • Чувствителен к начальным значениям центроидов.

  2. Иерархическая кластеризация:

    • Строит дерево кластеров (дендрограмму), где каждый узел представляет собой кластер, а ребра представляют сходство между кластерами.

    • Не требует заранее определенного числа кластеров.

    • Подходит для небольших и средних наборов данных.

  3. DBSCAN (Плотностная основанная кластеризация приложений с шумом):

    • Идентифицирует кластеры на основе плотности точек.

    • Способен обрабатывать кластеры произвольной формы и шум в данных.

    • Не требует заранее определенного числа кластеров.

    • Чувствителен к параметрам радиуса и минимального числа точек.

  4. Mean Shift:

    • Находит локальные максимумы плотности данных (peak points) и считает их центры как центры кластеров.

    • Не требует заранее определенного числа кластеров.

    • Может работать с кластерами произвольной формы.

    • Чувствителен к параметру сглаживания (bandwidth).


Каковы плюсы и минусы kNN? Как ускорить поиск соседей с помощью ANN (approximate nearest neighbours)?

kNN (k-Nearest Neighbors):

Плюсы:

  1. Прост в реализации и понимании.

  2. Не требует обучения, что делает его хорошим выбором для начальной оценки данных.

  3. Хорошо подходит для многих типов данных, включая нелинейные и неструктурированные данные.

Минусы:

  1. Чувствителен к масштабированию признаков.

  2. Требует хранения всего набора данных в памяти.

  3. Низкая эффективность на больших наборах данных из-за вычислительной сложности поиска ближайших соседей.

  4. Неэффективен для данных с большим количеством признаков.

АНН (Approximate Nearest Neighbors):

  1. Метод локально-чувствительных хэшей (Locality-Sensitive Hashing, LSH)

    : Алгоритм, который преобразует объекты в хэши таким образом, чтобы похожие объекты имели схожие хэши, что ускоряет поиск ближайших соседей.

  2. Методы приближенного поиска ближайших соседей (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. Оба метода чувствительны к инициализации.


Когда спектральная кластеризация лучше K-Means?

Спектральная кластеризация полезна для нелинейных кластеров, например двух колец, которые K-Means не разделяет центроидами. Она строит граф сходства, использует собственные векторы его лапласиана и кластеризует полученное представление. Результат сильно зависит от affinity, масштаба соседства и числа кластеров. Матрица сходства и eigendecomposition дороги по памяти и времени, поэтому метод плохо масштабируется без разреженного графа или приближений. Качество проверяют вместе с устойчивостью к параметрам.

Собеседования: Data Science

Смотри записи интервью, узнай, какие вопросы задают и как отвечают кандидаты.

Вопросы и ответы

Не нашли ответ? Напишите мне в чат. Я делаю Шпаргалку и сам отвечаю на сообщения. Расскажите, что не работает или чего вам не хватает. Может, смогу сразу взять это в работу.

Откуда взяты вопросы?

Из реальных собеседований. Основой подборки стал опыт Вадима Новосёлова: он проходил интервью и записывал вопросы. Подробнее о материалах.

Насколько эти вопросы актуальны?

Эти вопросы встречались нам на реальных собеседованиях в 2025 году. Мы регулярно проходим собеседования и пополняем подборку новыми вопросами. Основы профессии и ключевые технологии остаются востребованными годами, а детали конкретных инструментов и версий стоит сверять с текущей документацией.

На какой уровень рассчитана подборка?

Мы проходили собеседования на вакансии уровня Middle+, а иногда и на Senior-позиции. Вопросы из этих интервью вошли в подборку. Направления работы: Data Scientist, ML-инженер. Глубина обсуждения зависит от вакансии: будь готов объяснить основную идею, привести практический пример и разобрать ограничения и альтернативы решения.

Этот вопрос точно будет на моём собеседовании?

Гарантии нет: набор вопросов зависит от компании, задач команды, уровня вакансии и самого интервьюера. Эти вопросы уже встречались на реальных собеседованиях, но на твоём интервью ту же тему могут проверить другой формулировкой, практической задачей или обсуждением твоего опыта. Используй подборку, чтобы разобраться в теме: объясняй идею своими словами, приводи примеры и готовься обсудить ограничения и альтернативы решения. Так будет проще ответить и на знакомый вопрос, и на неожиданные уточнения.