---
title: Признаки, предобработка и выбросы
questionDates:
  q-transfer-0006: '2026-10-01'
  q-transfer-0007: '2026-10-01'
  q-transfer-0008: '2026-10-01'
seo:
  description: >-
    Тема «Признаки, предобработка и выбросы» для собеседования Data Scientist.
    Что делать если много признаков? Какие существуют методы отбора признаков?
  title: Признаки, предобработка и выбросы — Data Scientist
---

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

Подтемы:

- [Отбор признаков](#q-14bee738d69b81bdaa69d1fc838e4793)
- [Обработка категориальных переменных](#q-14bee738d69b8107b614f4b16204f7ce)
- [Нормализация распределения](#q-14bee738d69b8165980ae3906d74fc68)
- [Методы предобработки данных](#q-14bee738d69b816faf82c373beebe9a4)
- [Поиск выбросов · часть 1](#q-14bee738d69b81f88a0fd14ece0bcb95)
- [Поиск выбросов · часть 2](#q-14bee738d69b81739d75fcd0d40d9156)

## <strong>Что делать если много признаков?</strong> [#q-14bee738d69b81bdaa69d1fc838e4793]

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

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

1. <strong>Методы снижения размерности</strong>
   <code>&#40;Dimensionality Reduction&#41;</code>&#58; Применение методов
   снижения размерности, таких как <code>PCA</code> (Principal Component
   Analysis) или <code>t&#45;SNE</code> (t-distributed Stochastic Neighbor
   Embedding), чтобы сократить количество признаков, сохраняя при этом
   наибольшую часть информации.

1. <strong>Регуляризация</strong> <code>&#40;Regularization&#41;</code>&#58;
   Использование методов регуляризации, таких как L1 или L2 регуляризация, для
   уменьшения весов признаков и отбора наиболее информативных признаков.

1. <strong>Инженерия признаков</strong>
   <code>&#40;Feature Engineering&#41;</code>&#58; Создание новых признаков на
   основе имеющихся данных, чтобы улучшить представление и повысить
   информативность модели.

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

1. [Отбор признаков и снижение размерности: разные подходы](https://deepmachinelearning.ru/docs/Machine-learning/Data-preprocessing/Feature-reduction)
1. [Отбор признаков: фильтры, RFE и L1-регуляризация](https://scikit-learn.ru/stable/modules/feature_selection.html)
   :::

---

## <strong>Какие существуют методы отбора признаков?</strong> [#q-14bee738d69b81749a32e74644b071cf]

Существует несколько методов отбора признаков, включая&#58;

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

1. <strong>Отбор признаков на основе статистических тестов</strong>&#58;
   Использование статистических тестов, таких как t-тест или анализ дисперсии
   <code>&#40;ANOVA&#41;</code>, для оценки значимости признаков и отбора тех,
   которые значимо связаны с целевой переменной.

1. <strong>Рекурсивное исключение признаков</strong>
   <code>&#40;Recursive Feature Elimination&#44; RFE&#41;</code>&#58;
   Итеративный процесс, в котором модель обучается на полном наборе признаков, а
   затем исключаются наименее важные признаки, повторяя процесс до достижения
   определенного критерия.

1. <strong>Отбор признаков на основе вложений</strong>
   <code>&#40;Embedded Feature Selection&#41;</code>&#58; Использование моделей,
   которые сами по себе выполняют отбор признаков, таких как <code>L1</code>
   -регуляризация в линейных моделях или методы отбора признаков в ансамблях
   моделей.

1. <strong>Отбор признаков на основе информационных критериев</strong>&#58;
   Использование информационных критериев, таких как <code>AIC</code> (Akaike
   Information Criterion) или <code>BIC</code> (Bayesian Information Criterion),
   для сравнения моделей с разными наборами признаков и выбора наилучшей модели.

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

1. [Отбор признаков: фильтры, RFE и L1-регуляризация](https://scikit-learn.ru/stable/modules/feature_selection.html)
   :::

---

## <strong>Что такое permutations importance?</strong> [#q-14bee738d69b81fb88bdc3a19c7e0538]

Пермутационная важность <code>&#40;Permutation Importance&#41;</code> - это метод оценки важности признаков в модели машинного обучения путем перестановки значений каждого признака и измерения изменения в метрике качества модели. Кратко говоря, этот метод позволяет оценить влияние каждого признака на предсказания модели путем измерения изменения в производительности модели при случайной перестановке значений данного признака.

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

1. [Перестановочная важность: изменение score после перемешивания признака](https://scikit-learn.ru/stable/modules/permutation_importance.html)
   :::

---

## Чем различаются One-hot, Label, Helmert и Frequency Encoding? [#q-14bee738d69b8107b614f4b16204f7ce]

Вот сравнение этих методов кодирования категориальных переменных&#58;

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

1. LabelEncoder в scikit-learn кодирует целевые метки y. Для категориальных признаков X используют OrdinalEncoder; при смысловом порядке категорий его задают явно.

1. Helmert Encoding&#58; задаёт контрасты между уровнями категории. В реализации category_encoders каждый уровень сравнивается со средним предыдущих уровней через фиксированную матрицу кодирования. Это не вычисление средних целевой переменной и не сравнение только с одной предыдущей категорией.

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

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

1. [Порядковое, частотное и one-hot кодирование категорий](https://deepmachinelearning.ru/docs/Machine-learning/Data-preprocessing/Categorical-preprocessing)
   :::

---

## <strong>Какие методы вы используете для преобразования категориальных переменных?</strong> [#q-14bee738d69b81cb8e63c2fc5ea0c043]

Часто используемые методы для преобразования категориальных переменных&#58;

1. <code>One&#45;hot Encoding</code>&#58; Для переменных без упорядоченных
   категорий, где каждая категория равнозначна.

1. <code>Label Encoding</code>&#58; Для переменных с упорядоченными категориями
   или когда порядок имеет значение.

1. Target Encoding&#58; заменяет категорию оценкой целевой переменной, например средним y. Чтобы избежать утечки, кодирование обучающих строк рассчитывают без их собственных целевых значений, обычно через кросс-валидацию.

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

1. [Порядковое, частотное и one-hot кодирование категорий](https://deepmachinelearning.ru/docs/Machine-learning/Data-preprocessing/Categorical-preprocessing)
1. [Target statistics CatBoost: среднее и защита от собственной метки](https://habr.com/ru/companies/tochka/articles/751012/)
   :::

---

## Как ordered target statistics в CatBoost снижают target leakage? [#q-transfer-0006]

Обычный mean encoding может включить таргет самой строки и завысить качество. CatBoost строит target statistics по случайным перестановкам: для обучающего объекта использует только предыдущие объекты перестановки, добавляя prior и сглаживание для редких категорий. Так собственный таргет строки не попадает в ее кодировку. Модель также комбинирует категориальные признаки. Механизм не защищает от внешних утечек в агрегатах, join и split, поэтому временную и групповую валидацию все равно проектируют отдельно.

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

1. [Ordered target statistics в CatBoost: перестановка, статистика по предыдущим строкам и защита от leakage](https://habr.com/ru/companies/tochka/articles/751012/)
   :::

---

## Когда дереву решений нужно кодирование категориальных признаков? [#q-transfer-0007]

Это зависит от реализации. Дерево математически может делить категории, но `sklearn.tree` ожидает числовые признаки, поэтому нужен encoder. Для номинальной категории ordinal encoding навязывает искусственный порядок; one-hot честнее по смыслу, но раздувает пространство при высокой кардинальности. CatBoost и некоторые бустинги поддерживают категории нативно. Encoder обучают только на train, target encoding делают cross-fitted, а для новых категорий заранее задают обработку. Настоящие порядковые шкалы можно кодировать порядковыми числами.

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

1. [Категории в деревьях: искусственный порядок, one-hot и встроенная обработка CatBoost](https://habr.com/ru/companies/tochka/articles/751012/)
   :::

---

## Как корректно подать категориальные признаки в линейную модель? [#q-transfer-0008]

Для номинальных категорий обычно используют one-hot encoding. Одну категорию можно сделать reference level, особенно в нерегуляризованной модели с intercept, чтобы избежать линейной зависимости колонок. Label encoding для номинальных значений создает ложный числовой порядок. При высокой кардинальности применяют группировку редких значений, hashing или cross-fitted target encoding. Encoder обучают только на train и настраивают обработку неизвестных категорий. Масштаб коэффициента и регуляризация влияют на их интерпретацию.

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

1. [One-hot для номинальных категорий: равноправные значения, рост размерности и регуляризация](https://deepmachinelearning.ru/docs/Machine-learning/Data-preprocessing/Categorical-preprocessing#one-hot-кодирование)
   :::

---

## <strong>Приведите методы преобразования ненормального распределения к нормальному.</strong> [#q-14bee738d69b8165980ae3906d74fc68]

Основные методы преобразования ненормального распределения к нормальному&#58;

1. <strong>Преобразование Бокса-Кокса</strong>
   <code>&#40;Box&#45;Cox Transformation&#41;</code>&#58; Это семейство
   преобразований, которое преобразует данные так, чтобы они приближались к
   нормальному распределению. Он зависит от параметра λ, который можно подобрать
   для оптимального преобразования.

1. <strong>Преобразование Йео-Джонсона</strong>
   <code>&#40;Yeo&#45;Johnson Transformation&#41;</code>&#58; Это обобщение
   преобразования Бокса-Кокса, которое также может работать с отрицательными
   значениями и нулями.

1. Квантильное преобразование&#58; сначала оценивает положение значения в эмпирическом распределении, затем отображает его в выбранное распределение, например нормальное. В QuantileTransformer для этого задают output_distribution="normal".

1. RobustScaler центрирует данные по медиане и масштабирует по межквартильному размаху. Он устойчив к выбросам, но не превращает распределение в нормальное.

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

1. [Приближение к нормальному распределению: степенные и квантильные преобразования](https://scikit-learn.ru/stable/modules/preprocessing.html)
   :::

---

## Как работает WOE и когда его применяют вместо исходного числового признака, например возраста? [#q-14bee738d69b816faf82c373beebe9a4]

Метод взвешенных оценок <code>&#40;WOE&#41;</code> используется в задачах бинарной классификации для анализа влияния категориальных переменных на целевую переменную. Он преобразует категориальные переменные в числовые значения, которые отражают их влияние на целевую переменную.

<strong>Преимущества метода</strong> <code>WOE</code>
<strong>&#58;</strong>

1. Позволяет учитывать монотонную зависимость между категориальными переменными и целевой переменной.

1. Помогает уловить нелинейные отношения между переменными.

1. Устойчив к выбросам и пропущенным значениям.

Возраст можно использовать напрямую в логистической регрессии&#58; тогда его вклад в логит линейный. Для нелинейной зависимости можно использовать интервалы, сплайны или WOE. WOE рассчитывают только по обучающим данным с защитой от утечки; пустые по классу интервалы требуют сглаживания. Монотонность зависит от выбранного разбиения, а не гарантируется самим преобразованием.

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

1. [WOE: расчёт в бинах, сглаживание и обработка новых значений](https://habr.com/ru/companies/vtb/articles/743392/)
   :::

---

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

Некоторые методы поиска выбросов&#58;

1. <strong>Метод межквартильного размаха</strong> <code>&#40;IQR&#41;</code>
   &#58; Определяет выбросы как значения, находящиеся за пределами интервала
   <InlineMath tex={"Q1−1.5×IQR и Q3+1.5×IQR"} />, где
   <InlineMath tex={"Q1 "} /> - первый квартиль, <InlineMath tex={"Q3 "} /> -
   третий квартиль, а <InlineMath tex={"IQR"} /> - межквартильный размах.

1. <strong>Z-оценка</strong> <code>&#40;Z&#45;score&#41;</code>&#58; Оценивает,
   насколько значение отклоняется от среднего значения в единицах стандартного
   отклонения. Значения, сильно отклоняющиеся от среднего на основе Z-оценки,
   могут быть выбросами.

1. Local Outlier Factor (LOF)&#58; Сравнивает локальную плотность объекта с плотностями соседей. Чем больше LOF, тем подозрительнее объект. В scikit-learn атрибут negative_outlier_factor\_ хранит отрицательный LOF, поэтому у выбросов он ниже.

1. <strong>Изолирующий лес</strong> <code>&#40;Isolation Forest&#41;</code>&#58;
   Основанный на идее того, что выбросы имеют более короткие пути в деревьях
   решений, чем нормальные наблюдения. Алгоритм строит лес случайных деревьев и
   измеряет среднюю длину пути до выбранного объекта.

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

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

1. [Обнаружение выбросов в ML](https://www.dmitrymakarov.ru/data-analysis/outliers-09/)
   :::

---

## <strong>Какие типы средних являются наиболее устойчивыми к выбросам?</strong> [#q-14bee738d69b81739d75fcd0d40d9156]

Для оценки центра устойчивы медиана и усечённое среднее. Межквартильный размах также устойчив, но измеряет разброс, а не среднее.

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

1. <strong>Межквартильный размах (IQR)</strong>&#58; Это разница между третьим
   (75-й процентиль) и первым (25-й процентиль) квартилями. Поскольку он
   использует ранжированные значения, он менее подвержен влиянию выбросов, чем
   среднее значение.

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

1. [Медиана и усечённое среднее: устойчивые оценки центра](https://pozdniakov.github.io/tidy_stats/210-desc_stats.html#sec-median)
   :::
