Несбалансированные данные
Стратегии при дисбалансе классов: ресемплинг, SMOTE, веса классов, выбор порога, выбор между классификацией и поиском аномалий и калибровка после ресемплинга.
8 вопросов
JuniorТеорияОчень частоПри дисбалансе классов 1:1000 почему accuracy обманчива и что менять?
При дисбалансе классов 1:1000 почему accuracy обманчива и что менять?
Модель, которая всегда предсказывает мажоритарный класс, при 1:1000 даёт 99.9% accuracy и не ловит ни одного положительного, то есть accuracy измеряет только негативы. Менять нужно три вещи — метрику (PR-AUC, recall), функцию потерь (веса классов) и порог решения.
Типичные ошибки
- ✗Показывать accuracy как главную метрику на задаче 1:1000
- ✗Считать, что высокая accuracy означает обнаружение миноритарного класса
- ✗Менять только метрику, не трогая функцию потерь и порог
Уточняющие вопросы
- →Почему PR-AUC реагирует на редкие положительные, а ROC-AUC остаётся оптимистичной?
- →Что лучше по умолчанию при дисбалансе — веса классов или ресемплинг?
JuniorТеорияЧастоКак выбирают порог классификации и почему 0.5 — произвольное значение?
Как выбирают порог классификации и почему 0.5 — произвольное значение?
0.5 — это лишь значение по умолчанию в библиотеке; оно оптимально только для калиброванной модели при равной цене ошибок. Порог подбирают на валидации из того, чем вы реально располагаете — точки на PR-кривой, матрицы стоимости ошибок или дневной ёмкости команды проверки.
Типичные ошибки
- ✗Считать 0.5 оптимумом, а не значением по умолчанию в библиотеке
- ✗Подбирать порог на тесте, а не на валидационной выборке
- ✗Выбирать порог без опоры на стоимость ошибок или ёмкость проверки
Уточняющие вопросы
- →Как некалиброванный скор меняет то, какой порог следует выбрать?
- →Как перевести дневную ёмкость команды проверки в значение порога?
MiddleТеорияЧастоЧем различаются по эффекту oversampling, undersampling и веса классов?
Чем различаются по эффекту oversampling, undersampling и веса классов?
Все три сдвигают границу к мажоритарному классу: recall растёт, precision падает. Oversampling дублирует миноритарные строки и может переобучиться, undersampling выбрасывает данные, веса классов перевзвешивают потери. Все три завышают предсказанные вероятности, поэтому скоры требуют калибровки.
Типичные ошибки
- ✗Считать, что веса классов и oversampling не портят предсказанные вероятности
- ✗Считать undersampling бесплатным, раз мажоритарные строки выглядят избыточными
- ✗Отдавать скоры после ресемплинга как вероятности без калибровки
Уточняющие вопросы
- →Когда undersampling предпочтительнее весов классов на очень большом датасете?
- →Как калибровать модель, обученную с весами классов?
MiddleДебаггингЧастоПосле добавления SMOTE вырос CV-скор, а качество в проде не изменилось
После добавления SMOTE вырос CV-скор, а качество в проде не изменилось
Ресемплинг сделан до разбиения: синтетические точки из обучающих строк попали в валидационный фолд, поэтому CV оценивает почти копии виденного и завышает результат. Ресемплить надо внутри каждого фолда, только на обучающей части — через pipeline, переобучаемый на каждом фолде.
Открыть задачу →Типичные ошибки
- ✗Вызывать
fit_resampleна всём датасете до разбиения на train и валидацию - ✗Считать, что синтетические строки не могут утечь, раз это новые объекты
- ✗Ресемплить валидационный или тестовый фолд под баланс обучающей части
Уточняющие вопросы
- →Какой класс библиотеки
imbalanced-learnдержит ресемплер внутри фолда? - →Избежали бы вы этой утечки полностью, взяв веса классов вместо SMOTE?
MiddleТеорияЧастоКак техника oversampling'а SMOTE строит точки и когда она вредит?
Как техника oversampling'а SMOTE строит точки и когда она вредит?
SMOTE ставит синтетическую точку между миноритарным объектом и одним из его k ближайших миноритарных соседей. Он ломается, когда соседи не похожи: в высокой размерности расстояния выравниваются, у категориальных признаков нет середины, а шумная граница затекает в мажоритарный класс.
Типичные ошибки
- ✗Думать, что SMOTE дублирует строки, а не интерполирует между соседями
- ✗Применять SMOTE как есть к one-hot и категориальным признакам высокой мощности
- ✗Считать, что SMOTE помогает и там, где высокая размерность выравнивает расстояния
Уточняющие вопросы
- →Как категориальный вариант
SMOTE-NCработает с нечисловыми признаками? - →Почему SMOTE может усиливать шум в разметке у границы классов?
MiddleДизайнИногдаПлатёжная платформа детектит угоны аккаунтов. В размеченной истории примерно 1 положительный на 10000 сессий — около 400 подтверждённых случаев на 4 млн сессий, — а метки приходят с задержкой в недели и создаются ручным разбором. Новые схемы атак появляются почти каждый месяц. Нужно решить, оставить задачу как обучение с учителем на бинарную классификацию или переформулировать её как поиск аномалий относительно нормального поведения. Скажите, что на самом деле решает выбор, что каждая постановка требует от данных и как вы будете проверять решение.
Платёжная платформа детектит угоны аккаунтов. В размеченной истории примерно 1 положительный на 10000 сессий — около 400 подтверждённых случаев на 4 млн сессий, — а метки приходят с задержкой в недели и создаются ручным разбором. Новые схемы атак появляются почти каждый месяц. Нужно решить, оставить задачу как обучение с учителем на бинарную классификацию или переформулировать её как поиск аномалий относительно нормального поведения. Скажите, что на самом деле решает выбор, что каждая постановка требует от данных и как вы будете проверять решение.
Решает число меток и их устойчивость, а не соотношение классов. 400 положительных хватает для модели с учителем, поэтому классификацию оставляют, пока атаки повторяются. К аномалиям переходят, когда меток мало, они запаздывают или покрывают лишь известные атаки; обе постановки сравнивают на одной размеченной выборке.
Типичные ошибки
- ✗Решать по одному лишь соотношению классов, а не по количеству меток
- ✗Считать, что поиску аномалий метки не нужны даже для проверки качества
- ✗Не учитывать, что запаздывающие метки описывают только уже известные атаки
Уточняющие вопросы
- →Что метод без учителя
Isolation Forestпредполагает о нормальных данных? - →Как сравнить скор аномальности и скор модели с учителем по одной метрике?
MiddleТеорияИногдаКак калибровать вероятности после ресемплинга и сдвигается ли порог?
Как калибровать вероятности после ресемплинга и сдвигается ли порог?
Ресемплинг поднимает априор положительного класса, поэтому скоры завышают вероятность. Либо применяют поправку на априор к истинной базовой частоте, либо обучают Platt scaling или изотоническую регрессию на холдауте с реальным соотношением. Порог выбирают заново — он на новой шкале.
Типичные ошибки
- ✗Считать, что ресемплинг меняет только ранжирование, а вероятности остаются корректными
- ✗Обучать калибратор на ресемплированной выборке вместо холдаута с реальным соотношением
- ✗Оставлять прежний порог после того, как шкала скоров изменилась
Уточняющие вопросы
- →Когда непараметрический метод
isotonic regressionпереобучается на малом холдауте? - →Искажают ли веса классов предсказанные вероятности так же, как ресемплинг?
SeniorДизайнИногдаПроизводитель медицинских приборов просит детектировать редкий отказ. За два года телеметрии есть 300 подтверждённых положительных случаев против примерно 2 млн исправных прибор-дней; каждая новая метка стоит инженеру полдня разбора, а оставшийся бюджет разметки — 200 случаев. Отказы группируются по модели прибора и версии прошивки, и отчёт будет читать регулятор. Спроектируйте подход к разметке и моделированию — как вы тратите оставшийся бюджет, опираетесь ли на transfer learning, слабую разметку или модель поиска аномалий, и на чём проверяете качество, чтобы приведённой цифре можно было верить.
Производитель медицинских приборов просит детектировать редкий отказ. За два года телеметрии есть 300 подтверждённых положительных случаев против примерно 2 млн исправных прибор-дней; каждая новая метка стоит инженеру полдня разбора, а оставшийся бюджет разметки — 200 случаев. Отказы группируются по модели прибора и версии прошивки, и отчёт будет читать регулятор. Спроектируйте подход к разметке и моделированию — как вы тратите оставшийся бюджет, опираетесь ли на transfer learning, слабую разметку или модель поиска аномалий, и на чём проверяете качество, чтобы приведённой цифре можно было верить.
Оставшиеся метки тратят через active learning на неуверенных случаях, а не случайной выборкой, и дополняют слабой разметкой из сервисных заявок. Обучают transfer-модель или сильно регуляризованную модель, а поиск аномалий её дополняет. Проверяют на холдауте с реальным соотношением и группировкой по прибору и прошивке, показывая PR-AUC.
Типичные ошибки
- ✗Тратить скудный бюджет разметки на равномерно случайную выборку
- ✗Разбивать случайно по прибор-дням, из-за чего один прибор утекает между частями
- ✗Показывать ROC-AUC, которая остаётся оптимистичной при такой редкости положительных
Уточняющие вопросы
- →Как стратегия разметки
active learningвыбирает, какие случаи размечать? - →Почему разбиение должно группироваться по прибору, а не по отдельному прибор-дню?