---
title: Классификация и дисбаланс классов
questionDates:
  q-transfer-0009: '2026-10-01'
  q-transfer-0010: '2026-10-01'
  q-transfer-0011: '2026-10-01'
seo:
  description: >-
    Тема «Классификация и дисбаланс классов» для собеседования Data Scientist.
    Дайте определение классификации. Какие методы классификации вы знаете?
  title: Классификация и дисбаланс классов — Data Scientist
---

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

Подтемы:

- [Классификация](#q-14bee738d69b81119489c18faf4ae37e)
- [SVM](#q-14bee738d69b81a987c6cdecb81cc875)
- [Управление дисбалансом классов](#q-14bee738d69b81d4b15ee67c3ec1db32)

## <strong>Дайте определение классификации.</strong> [#q-14bee738d69b81119489c18faf4ae37e]

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

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

1. [Классификация в ML](http://www.machinelearning.ru/wiki/index.php?title=%D0%9A%D0%BB%D0%B0%D1%81%D1%81%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D1%8F)
   :::

---

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

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

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

1. <strong>Метод k-ближайших соседей</strong> <code>&#40;k&#45;NN&#41;</code>
   &#58; Классифицирует объекты на основе их близости к другим объектам в
   обучающем наборе.

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

1. <strong>Метод опорных векторов</strong> <code>&#40;SVM&#41;</code>&#58;
   Находит разделяющую гиперплоскость между классами, максимизируя отступ и
   минимизируя ошибку.

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

1. <strong>Наивный байесовский классификатор</strong>&#58; Основан на теореме
   Байеса и предполагает независимость признаков для упрощения модели.

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

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

1. [Классификация в ML](http://www.machinelearning.ru/wiki/index.php?title=%D0%9A%D0%BB%D0%B0%D1%81%D1%81%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D1%8F)
   :::

---

## Как метрики бинарной классификации связаны с матрицей ошибок? [#q-14bee738d69b812bba1ff31f51710067]

<span id="q-14bee738d69b814d87c7e3cf11fb162b"></span>

В матрице ошибок `TP` и `TN` обозначают верные предсказания положительного и отрицательного классов, `FP` обозначает ложное срабатывание, `FN` обозначает пропуск положительного объекта. Из них считают:

$$
Accuracy = \frac{TP+TN}{TP+TN+FP+FN},
$$

$$
Precision = \frac{TP}{TP+FP}, \qquad Recall = \frac{TP}{TP+FN},
$$

$$
F1 = 2\frac{Precision \cdot Recall}{Precision+Recall}.
$$

`Accuracy` показывает общую долю верных ответов, но может вводить в заблуждение при дисбалансе классов. `Precision` отвечает, какая доля положительных прогнозов верна; `Recall` показывает, какую долю реальных положительных объектов нашли. `F1` сводит precision и recall в одну метрику и не учитывает `TN`.

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

1. [Метрики классификации: confusion matrix, accuracy, precision, recall и F-мера](https://scikit-learn.ru/stable/modules/model_evaluation.html)
2. [Confusion matrix и метрики классификации. Евгений Разинков, с 1:07:45](https://www.youtube.com/watch?v=ZMfcjEo8IEo&t=4065s)

:::

---

## Чем micro-, macro- и weighted-усреднение метрик отличаются? [#q-transfer-0009]

`Micro` сначала суммирует TP, FP и FN по классам, затем считает метрику, поэтому большой класс сильнее влияет на результат. `Macro` считает метрику отдельно для каждого класса и усредняет с равными весами, делая редкие классы заметными. `Weighted` также усредняет классовые метрики, но весит их по числу истинных объектов класса. При дисбалансе weighted-оценка может выглядеть высокой за счет частого класса. Поэтому вместе с одним числом полезно показывать метрики по классам и confusion matrix.

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

1. [Micro, macro и weighted для precision, recall и F1: раздел о многоклассовой классификации](https://habr.com/ru/articles/979164/)
   :::

---

## Как считать recall, если важный редкий класс помечен нулем? [#q-transfer-0010]

Положительный класс в формуле recall задается смыслом задачи, а не числом 1. Если критичный редкий класс закодирован нулем, указывают `pos_label=0`, инвертируют таргет или явно берут нужную строку confusion matrix. Recall тогда равен доле найденных объектов этого класса среди всех его объектов. Порог подбирают на validation с учетом цены пропусков и ложных тревог, затем фиксируют до test. Accuracy здесь малоинформативна: предсказание только большинства может дать 95%.

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

1. [Выбор положительного класса: pos_label и вычисление метрик](https://scikit-learn.ru/stable/modules/model_evaluation.html)
   :::

---

## Как выбрать порог при разной стоимости false positive и false negative? [#q-transfer-0011]

Сначала переводят FP и FN в сопоставимые потери либо задают ограничение, например recall не ниже 95%. Для каждого порога на validation считают ожидаемую стоимость `C_FP * FP + C_FN * FN` и выбирают минимум с учетом операционной емкости. Если стоимости ненадежны, показывают кривую precision-recall и несколько сценариев. Порог выбирают после обучения, но до просмотра test. При изменении prevalence и стоимости ошибок его придется пересматривать и контролировать в production.

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

1. [Выбор порога на ROC-кривой по стоимости FP/FN и долям классов](https://deepmachinelearning.ru/docs/Machine-learning/Classifier-evaluation/ROC-curve-best-point)
   :::

---

## <strong>Можете ли вы объяснить основную идею метода опорных векторов (SVM)?</strong> [#q-14bee738d69b81a987c6cdecb81cc875]

Основная идея метода опорных векторов <code>SVM</code> заключается в поиске оптимальной разделяющей гиперплоскости, которая максимизирует расстояние (зазор) между двумя классами данных. <code>SVM</code> стремится найти гиперплоскость, которая увеличивает расстояние до ближайших точек каждого класса, называемых опорными векторами. Этот подход позволяет достичь хорошей обобщающей способности и устойчивости к переобучению. Если данные нелинейно разделимы, <code>SVM</code> может использовать ядерные функции для перевода данных в пространство более высокой размерности, где они становятся линейно разделимыми.

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

1. [Метод опорных векторов (SVM)](https://neerc.ifmo.ru/wiki/index.php?title=%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%BE%D0%BF%D0%BE%D1%80%D0%BD%D1%8B%D1%85_%D0%B2%D0%B5%D0%BA%D1%82%D0%BE%D1%80%D0%BE%D0%B2_%28SVM%29)
   :::

---

## <strong>Что делать, если в данных есть дисбаланс классов?</strong> [#q-14bee738d69b81d4b15ee67c3ec1db32]

Если в данных присутствует дисбаланс классов, можно применить следующие подходы&#58;

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

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

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

1. <strong>Генерация синтетических данных</strong>&#58; Использование алгоритмов
   генерации синтетических данных, таких как <code>SMOTE</code> (Synthetic
   Minority Over-sampling Technique), для увеличения размера редкого класса.

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

1. [Дисбаланс классов: метрики и class_weight в RandomForestClassifier](https://habr.com/ru/articles/664102/)
1. [SMOTE: синтетические примеры и сравнение с oversampling](https://habr.com/ru/articles/842480/)
   :::
