Продолжение предыдущего поста

Ну, постонали и хватит (примерно так я говорю команде каждый понедельник). Надо что-то делать. А что? Ниже варианты.

1. Взвешивание классов (Class Weighting). Штрафуем себя за ошибки в классе-меньшинстве, поощряя более точное предсказание. Создаем себе встречу в outlook-е с темой «обед», ругаем за неявку, наказываем отсутствием десерта

2. Увеличение (Oversampling) и уменьшение (Undersampling) выборки. Достигаем баланса между классами путем изменения количества примеров в каждом классе.

2.1. Oversampling - добавляем примеров-позитивов: записываемся на танцы, в бассейн, вытаскиваем себя с удаленки на прогулку. Или дублируем существующие крошки - букируем «обед» в календаре чаще чем раз в неделю. Можно даже прибегнуть к синтетике: импульсивно лежим на диване 15 минут прямо посреди рабочего дня (адаптивная генерация ADASYN - Adaptive Synthetic Sampling, уделяет больше внимания классам, которые более затруднительны для классификации, генерируя для них больше синтетических примеров) или смотрим на других, «нормальных» людей и делаем как они (SMOTE - Synthetic Minority Over-sampling, анализирует ближайших соседей класса-меньшинства)

2.2. Undersampling - уменьшение количества примеров в классе-большинстве, чтобы сделать его менее доминирующим. Отказываемся от токсичных совещаний, делегируем, позволяем себе чаще рыдать, гуглим что такое «отпуск»

3. Ансамблирование моделей (Ensemble Techniques). Идея в том, чтобы объединить несколько моделей и сделать предсказание на основе голосования (в случае классификации) или среднего (в случае регрессии). Тут поможет разное: можно привлечь друзей, родственников и даже соседей, а вдруг поможет

Как выбрать «свой» вариант? А можно не выбирать, а адаптировать их все под себя.

Оценить, насколько сильно несбалансированы классы, а может все неплохо и бороться не надо. К тому же, не у всех такой радикальный психотерапевт.

Определить подходящие метрики. Чего хочется? Хорошо выделять эндорфины? Меньше ошибаться в стрессинах? А может, искать баланс, например, в F1, roc_auc или gini?

Рассматривать отдельно разные промежутки данных и своей жизни. Может, сегодня тяжело, но это просто конец недели/года/проекта? Оценить поможет кросс-валидация и стратификация - делим данные на фолды, сохраняя в них истинный баланс классов.

Если ничего не помогает, применяем более продвинутые подходы. Контекстные методы адаптации алгоритмов. Ну то есть приходим к психотерапевту с заготовленным запросом. Контекстные методы, как и терапевт, учитывают особенности данных и решают проблему дисбаланса на уровне алгоритма:

— Cost-sensitive learning: назначает разные веса различным классам в зависимости от их важности. Например, можно сказать тревожнику, что он умрет молодым, тем самым увеличив вес отдыха - и модель будет думать об этом каждый божий день

— Cascade-классификация: задействовать несколько классификаторов, каждый из которых обучается на своем уровне сложности данных. Если объект не может быть классифицирован на этапе самоанализа, пример передается психотерапевту. Ну а там читай предыдущий пункт

Вот как-то так. Ну и, как обычно пишут в тизерах к фильмам, сюжет этого поста основан на реальной истории, но имена героев изменены. Просьба не воспринимать буквально.

Высоких вам метрик, баланса классов и добрых психотерапевтов 🤍

#dsphilosophy

Продолжение предыдущего поста
Ну, постонали и хватит (примерно так я говорю команде каждый понедельник). Надо что-то делать. А что? Ниже варианты.
1. Взвешивание классов (Class Weighting) | Сетка — социальная сеть от hh.ru Продолжение предыдущего поста
Ну, постонали и хватит (примерно так я говорю команде каждый понедельник). Надо что-то делать. А что? Ниже варианты.
1. Взвешивание классов (Class Weighting) | Сетка — социальная сеть от hh.ru