Интерпретация метрик оценки для несбалансированного набора данных

Вопрос или проблема

В настоящее время я занимаюсь задачей классификации для чрезмерно несбалансированного набора данных. Более конкретно, это набор данных для обнаружения мошенничества с примерно 290 тысячами строк данных, с распределением 99,8% для класса 0 (не мошенничество) и 0,17% для класса 1 (мошенничество).

Я использовал XGBoost, Random Forest и LightGBM в качестве своих предсказательных моделей. Я также пытался запускать модели по-разному, подбирая веса классов и выбирая воссозданный набор данных, чтобы привести его к сбалансированной шкале. Кроме того, я использовал f1-меру, ROC-AUC и кривую Precision-Recall в качестве основных метрик, поскольку другие метрики, похоже, не представляют результаты на несбалансированном наборе данных.

Тем не менее, кажется, что я все же чрезмерно подстраиваюсь под свои обучающие данные. Во всех сценариях f1-скор, ROC-AUC и AP из кривой Precision-Recall для моего обучающего набора либо равны 1,0, либо 0,999, в то время как для тестового набора они примерно составляют 0,85.

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

Я был бы признателен за любой ответ, большое спасибо всем!

Я также сталкиваюсь с аналогичной проблемой в системе обнаружения вторжений. Я нашел следующие рекомендации, которые могут быть полезными:

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

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

– Подбор гиперпараметров: выполните систематический поиск лучших гиперпараметров для ваших моделей, таких как сеточный поиск или случайный поиск, чтобы уменьшить переобучение. Вы можете использовать кросс-валидацию (например, k-fold или стратифицированный k-fold), чтобы убедиться, что поиск является надежным.

– Энсамблевые методы: попробуйте использовать техники бэггинга или бустинга, которые могут помочь уменьшить переобучение, комбинируя предсказания нескольких базовых классификаторов. В вашем случае вы уже используете ансамблевые модели (XGBoost, RandomForest и LightGBM). Тем не менее, вы все же можете попробовать создать ансамбль из этих моделей, чтобы увидеть, улучшит ли это производительность.

– Выбор признаков: определите и исключите несущественные или сильно коррелированные признаки, которые могут вызывать переобучение вашей модели. Техники, такие как рекурсивное устранение признаков, регрессия LASSO или корреляционный анализ, могут помочь вам выбрать самые важные признаки.

– Раннее остановка: реализуйте раннюю остановку в процессе обучения, чтобы предотвратить переобучение моделей. Это можно сделать с помощью встроенной функции ранней остановки в XGBoost и LightGBM. Вам нужно будет установить набор данных для валидации и указать метрику для оценки (например, ‘auc’ или ‘f1’).

– Регуляризация: техники регуляризации, такие как L1 или L2 регуляризация, могут помочь предотвратить переобучение, добавляя штраф к функции потерь. Оба XGBoost и LightGBM поддерживают параметры регуляризации, которые можно настроить в процессе обучения.

– Настройка порога решения: вместо того, чтобы использовать стандартный порог 0,5 для классификации экземпляров, вы можете поэкспериментировать с различными порогами решений, чтобы улучшить баланс между точностью и полнотой.

– Обучение с учетом стоимости: назначьте различные затраты на неправильную классификацию для положительного и отрицательного классов во время обучения. Это может помочь вашей модели лучше предсказывать меньший класс. Большинство алгоритмов на основе деревьев, таких как XGBoost, RandomForest и LightGBM, поддерживают этот подход.

– Попробуйте другие техники перераспределения: поэкспериментируйте с различными техниками перераспределения, такими как SMOTE, ADASYN или случайная переобработка меньшего класса, и случайная понижающая выборка большего класса, чтобы сбалансировать набор данных. Обязательно выполняйте эти операции только на обучающем наборе, а не на наборе валидации/тестирования.

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

Ответ или решение

Интерпретация метрик оценки для несбалансированных данных

Работа с классификационными задачами на сильно несбалансированных данных представляет собой сложную задачу, особенно когда одной из классов (например, мошенничество) существенно меньше, чем другого (например, ненадежная классификация). В вашем случае, когда у вас есть 290000 строк данных с распределением 99.8% классов 0 (не мошеннические) и 0.17% классов 1 (мошеннические), важно правильно интерпретировать метрики и выбирать адекватные подходы для оценки и улучшения модели.

1. Проблема переобучения

Судя по вашему описанию, вы сталкиваетесь с классическим проблемой переобучения: высокая точность (f1-score и ROC-AUC) на обучающем наборе данных (показатели около 1.0 или 0.999) указывает на то, что модель может запомнить данные, но не может обобщить их на тестовом наборе (показатели примерно 0.85). Это часто случается при работе с несбалансированными данными, когда модель слишком полагается на доминирующий класс.

2. Значение метрик

При работе с несбалансированными данными, такие метрики как точность (accuracy) могут вводить в заблуждение. Основные метрики, которые вы используете (f1-score, ROC-AUC и AP), действительно лучше отражают производительность в таких сценариях.

  • F1-Score: Это гармоническое среднее между точностью и полнотой. Высокий F1-Score показывает, что модель имеет хорошую точность и высокую полноту, но при этом важно помнить, что он может скрыть проблемы, если модель неправильно классифицирует большинство классов.

  • ROC-AUC: Площадь под кривой ROC измеряет способность модели различать классы. Значение 1.0 означает идеальные предсказания, но если это значение так высоко на обучающем наборе, это может указывать на переобучение.

  • Precision-Recall Curve: Эта метрика особенно полезна при несбалансированных данных, так как фокусируется на производительности для меньшинств. Высокая область под кривой PR (AP) говорит о том, что модель хорошо идентифицирует позитивный класс.

3. Методы борьбы с переобучением

Чтобы справиться с переобучением, рассмотрите следующие подходы:

  • Перекрестная проверка и настройка гиперпараметров: Используйте кросс-валидацию (например, стратифицированную) для повышения надежности вашей модели. Грид- или случайный поиск могут помочь найти оптимальные гиперпараметры для вашей модели.

  • Регуляризация: Примените L1 или L2 регуляризацию, что поможет ограничить модель в выборе слишком сложных решений и улучшить обобщающую способность.

  • Методы ансамблирования: Попробуйте объединить предсказания различных моделей для добавления различных точек зрения и снижения вероятности переобучения. Вы можете создать ансамбль из XGBoost, Random Forest и LightGBM.

  • Раннее остановка: Используйте механизм ранней остановки в процессе обучения, чтобы остановить итерации, когда качество валидации начинает ухудшаться.

  • Настройка порога классификации: Экспериментируйте с различными порогами для классификации, вместо стандартного 0.5, чтобы сбалансировать между точностью и полнотой.

  • Изменение весов классов и учитывание стоимости ошибок: Установите разные стоимости для попадания в позитивный и негативный классы, что позволит модели лучше справляться с недостатком данных.

  • Переработка учебного набора данных: Использование SMOTE или ADASYN для создания дополнительных примеров класса 1 может помочь улучшить производительность модели.

4. Использование матрицы конфузии

Не забывайте использовать матрицу конфузии для более детального анализа производительности модели. Это поможет четко увидеть, какие классы модель классифицирует верно, а какие – нет. Важно оценить, сколько истинно положительных, истинно отрицательных, ложно положительных и ложно отрицательных предсказаний делает модель.

Заключение

Работа с сильно несбалансированными данными требует особого подхода и тщательного выбора метрик. Переобучение является частой проблемой, и для его предотвращения можно использовать разнообразные методы, начиная от настройки гиперпараметров и применения регуляризации до создания ансамблей моделей и изменений в данных. Ваш успех будет зависеть от тщательной настройки модели и понимания используемых метрик.

Оцените материал
Добавить комментарий

Капча загружается...