---
title: Кластеризация
seo:
  title: Кластеризация — Data Scientist
  description: Тема «Кластеризация» для собеседования Data Scientist. Что такое кластеризация? Какие методы кластеризации вы знаете?
---

[Все темы Data Scientist](/data-scientist)

## <strong>Что такое кластеризация?</strong> [#q-14bee738d69b816da56ecd571a5b0de6]

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

:::note[Ссылки для изучения]

1. [Кластеризация в ML](https://education.yandex.ru/handbook/ml/article/klasterizaciya)
   :::

---

## <strong>Какие методы кластеризации вы знаете?</strong> [#q-14bee738d69b8156a32ee9905cf4ffea]

Основные методы кластеризации&#58;

1. <strong>K-средних</strong> <code>&#40;K&#45;means&#41;</code>&#58; Разбивает
   набор данных на заранее заданное количество кластеров, минимизируя сумму
   квадратов расстояний между точками и центроидами кластеров.

1. <strong>Иерархическая кластеризация</strong>
   <code>&#40;Hierarchical clustering&#41;</code>&#58; Строит древовидную
   структуру кластеров, объединяя или разделяя кластеры на основе близости
   объектов.

1. <strong>DBSCAN</strong>
   <code>
     &#40;Density&#45;Based Spatial Clustering of Applications with Noise&#41;
   </code>
   &#58; Определяет кластеры как области высокой плотности объектов, разделенные
   областями низкой плотности.

1. <strong>Агломеративная кластеризация</strong>
   <code>&#40;Agglomerative clustering&#41;</code>&#58; Начинает с отдельных
   объектов как отдельных кластеров и последовательно объединяет их в более
   крупные кластеры.

1. <strong>Спектральная кластеризация</strong>
   <code>&#40;Spectral clustering&#41;</code>&#58; Использует спектральное
   представление графа данных для выделения кластеров.

1. <strong>Mean Shift</strong>&#58; Определяет кластеры как области вокруг
   локальных максимумов плотности данных.

:::note[Ссылки для изучения]

1. [Кластеризация в ML](https://education.yandex.ru/handbook/ml/article/klasterizaciya)
   :::

---

## <strong>Для чего может использоваться кластеризация?</strong> [#q-14bee738d69b811ebb6bc3957a955a72]

Кластеризация может использоваться для&#58;

1. <strong>Анализа данных</strong>&#58; Позволяет выявить скрытые структуры и
   группировки в данных, что помогает понять их характеристики и взаимосвязи.

1. <strong>Сегментации рынка</strong>&#58; Помогает разделить клиентов, товары
   или услуги на группы схожих характеристик для более точного таргетирования
   рекламы и маркетинговых стратегий.

1. <strong>Классификации</strong>&#58; Может использоваться для предварительной
   обработки данных перед классификацией, основанной на метках, или для создания
   новых признаков.

1. <strong>Анализа изображений</strong>&#58; Помогает группировать и
   классифицировать изображения на основе их содержимого или характеристик,
   таких как цвета и текстуры.

1. <strong>Обработки естественного языка</strong>&#58; Используется для
   кластеризации текстовых данных, например, для группировки документов по темам
   или стилям.

1. <strong>Поиска аномалий</strong>&#58; Позволяет выявить необычные или
   аномальные объекты, которые отличаются от общего паттерна данных.

:::note[Ссылки для изучения]

1. [Кластеризация в ML](https://education.yandex.ru/handbook/ml/article/klasterizaciya)
   :::

---

## <strong>Какова алгоритмическая сложность</strong> <code>k&#45;Nearest Neighbors &#40;kNN&#41;</code><strong>?</strong> [#q-14bee738d69b81658029ea3111daee94]

Алгоритмическая сложность k-Nearest Neighbors <code>&#40;kNN&#41;</code> зависит от количества объектов в обучающем наборе данных и количества соседей, которые необходимо найти.

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

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

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

:::note[Ссылки для изучения]

1. [Кластеризация в ML](https://education.yandex.ru/handbook/ml/article/klasterizaciya)
   :::

---

## <strong>Как обрабатывать пропуски?</strong> [#q-14bee738d69b81c09dfdecec201d5bfd]

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

1. <strong>Удаление пропущенных значений</strong>&#58; Исключение объектов с
   пропущенными значениями из анализа может быть вариантом, если количество
   пропусков невелико и не существенно для общего объема данных.

1. <strong>Замена на среднее/медианное значение</strong>&#58; Пропущенные
   значения можно заменить на среднее или медианное значение по соответствующему
   признаку.

1. <strong>Использование алгоритмов заполнения пропусков</strong>&#58; Методы,
   такие как k-ближайших соседей или алгоритмы заполнения пропущенных значений
   на основе регрессии, могут быть использованы для заполнения пропущенных
   значений.

1. <strong>
     Использование моделей машинного обучения для заполнения пропусков
   </strong>
   &#58; Можно обучить модель машинного обучения (например, случайный лес или
   градиентный бустинг) на имеющихся данных и использовать ее для предсказания
   пропущенных значений.

1. <strong>Использование специальных значений</strong>&#58; Пропущенные значения
   можно заменить специальными значениями, такими как "unknown" или "-1", если
   это имеет смысл в контексте задачи.

:::note[Ссылки для изучения]

1. [Кластеризация в ML](https://education.yandex.ru/handbook/ml/article/klasterizaciya)
   :::

---

## <strong>Сравните методы класстеризации.</strong> [#q-14bee738d69b818faf40d269a5bd1ce4]

<strong>Вот краткое сравнение основных методов кластеризации&#58;</strong>

{/* prettier-ignore */}
1. <code>K&#45;means</code>&#58;

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

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

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

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

1. <code>Иерархическая кластеризация</code>&#58;

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

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

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

1. <code>DBSCAN</code> (Плотностная основанная кластеризация приложений с шумом)&#58;

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

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

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

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

1. <code>Mean Shift</code>&#58;

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

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

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

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

:::note[Ссылки для изучения]

1. [Кластеризация в ML](https://education.yandex.ru/handbook/ml/article/klasterizaciya)
   :::

---

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

<code>kNN &#40;k&#45;Nearest Neighbors&#41;</code>&#58;

<strong>Плюсы</strong>&#58;

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

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

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

<strong>Минусы</strong>&#58;

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

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

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

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

<code>АНН &#40;Approximate Nearest Neighbors&#41;</code>&#58;

1. <strong>
     Метод локально-чувствительных хэшей (Locality-Sensitive Hashing, LSH)
   </strong>
   &#58; Алгоритм, который преобразует объекты в хэши таким образом, чтобы
   похожие объекты имели схожие хэши, что ускоряет поиск ближайших соседей.

1. <strong>
     Методы приближенного поиска ближайших соседей (Approximate Nearest Neighbor
     Search)
   </strong>
   &#58; Используются для быстрого поиска ближайших соседей с небольшой потерей
   точности. Примеры включают в себя методы ближайших соседей с приближенными
   структурами данных, такие как k-d trees и ball trees.

:::note[Ссылки для изучения]

1. [Кластеризация в ML](https://education.yandex.ru/handbook/ml/article/klasterizaciya)
   :::
