Постановка ML-задачи и работа с данными

Exploratory Data Analysis: распределения и аномалии

Содержание курса

4. Выброс: аномалия или редкое событие?

Выброс — это значение, которое сильно отличается от основной массы данных. Но «сильно отличается» — не приговор и не повод немедленно удалять строку. В rossmann_train.csv наглядный пример: Sales имеет медиану около 5 744, а максимум — 41

  1. Это примерно в 7 раз выше медианы. Интуиция подсказывает «выброс», но контекст говорит другое: крупный магазин в праздничный день с акцией вполне может дать такую выручку. Аналогично с Customers: основная масса — 405–837 покупателей в день, но максимум достигает 7
  2. Это реальный трафик, а не ошибка в данных. Выброс влияет на два ключевых параметра:
  • Среднее — смещается в сторону экстремального значения.
  • Дисперсия (std) — увеличивается, создавая ложное впечатление о высокой вариабельности всей выборки. Посмотреть, насколько выброс искажает картину, можно напрямую:

import pandas as pd

df = pd.read_csv('rossmann_train.csv')
df_open = df[df['Open'] == 1]

### Сравниваем std с выбросами и без верхнего хвоста
threshold = df_open['Sales'].quantile(0.99)
df_trimmed = df_open[df_open['Sales'] <= threshold]

print('С выбросами:', df_open['Sales'].agg(['mean', 'std']).round(1))
print('Без верхнего 1%:', df_trimmed['Sales'].agg(['mean', 'std']).round(1))

Здесь мы не удаляем выбросы — мы смотрим, как верхний 1% значений Sales влияет на среднее и стандартное отклонение. Разница в std покажет, насколько хвост «раздувает» оценку разброса. Ключевое разграничение, которое нужно держать в голове: выброс бывает двух природ. Первый — ошибка данных: магазин с Sales = 0 при Open = 1, или отрицательное количество покупателей. Такие строки нужно проверять и, скорее всего, исправлять или исключать. Второй — редкое, но реальное событие: рекордный день продаж, крупный магазин в туристическом районе, праздничный всплеск. Удалить такие строки — значит намеренно обучить модель не видеть пиковые нагрузки. Практически это означает: обнаружение выброса — это начало анализа, а не его конец. Следующий шаг — понять, к какой из двух категорий он относится, и только после этого принимать решение.

Начать заново?

Помощник начнёт новый диалог по этой задаче. Текущая переписка останется в истории до конца срока хранения.

О переписке

Можно приложить до трёх фото PNG, JPEG или WebP по 5 МБ.

Переписка и фото хранятся 90 дней после последнего принятого сообщения. Преподаватель получит доступ к диалогу, когда вы попросите его помочь.

Проверка решения остаётся отдельным действием.