Несоответствие между предсказаниями кросс-валидации и предсказаниями для unseen данных.

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

У меня возникла проблема с несбалансированным набором данных. Набор данных содержит 20% целей и 80% нецелевых. Я ожидаю, что матрица ошибок будет выглядеть так, когда я передам невидимые данные обученной модели.

[[1200   0  ]
 [0      240]]

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

[[1133   67]
 [ 227   13]]

Кривая обучения и валидации модели CNN выглядит следующим образом.

введите описание изображения здесь

Есть ли мысли, почему так мало целей классифицируется, несмотря на то что обучение и валидация идут довольно хорошо? Я что-то упускаю? Я пытался изменить параметры модели CNN (размер ядра, дропауты, количество слоев CNN, раннюю остановку и т.д.). Однако значительных изменений я не вижу.

Я прочитал следующий пост на “stack exchange” о утечке данных. Однако (надеюсь), это не должно быть актуально для моего кода.
Почему k-fold перекрестная валидация (CV) переобучается? Или почему возникает расхождение между CV и тестовым набором?

Мне удалось выявить проблему в моем коде. Это была “утечка данных”.

Моя предыдущая последовательность предварительной обработки данных была следующей:

  1. Загрузить данные
  2. Аугментировать данные
  3. Сбалансировать данные
  4. Перетасовать данные
  5. Разделить данные на “Обучение” и “Валидацию”
  6. Сатурировать выбросы “Обучения” на постоянное значение
  7. Сатурировать выбросы “Валидации” на постоянное значение
  8. Нормализовать данные в диапазоне от 0 до 1
  9. Передать данные “Обучения” и “Валидации” модели
  10. Построить график обучения и валидации

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

  1. Загрузить данные
  2. Разделить данные на “Обучение” и “Валидацию”
  3. Аугментировать данные “Обучения”
  4. Сбалансировать данные “Обучения”
  5. Перетасовать данные “Обучения”
  6. Перетасовать данные “Валидации”
  7. Сатурировать выбросы “Обучения” на постоянное значение
  8. Сатурировать выбросы “Валидации” на постоянное значение
  9. Нормализовать данные “Обучения” в диапазоне от 0 до 1
  10. Нормализовать данные “Валидации” в диапазоне от 0 до 1
  11. Передать данные “Обучения” и “Валидации” модели
  12. Построить график обучения и валидации

Теперь график дает мне гораздо более реалистичную картину точности и потерь в CNN. Смотрите ниже. Похоже, что после 100 итераций точность остается постоянной (около 70%), а потери взлетают. Я не знаю, как исправить взорвавшиеся потери. Однако по крайней мере сейчас я не получаю ложную картину.

введите описание изображения здесь

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

Причины несоответствия между кросс-валидацией и предсказаниями на невидимых данных

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

Проблема с несбалансированными данными

Вы отмечаете, что ваш набор данных состоит на 20% из мишенных экземпляров и на 80% из немишенных. Это неравномерное распределение классов может влиять на производительность модели. Модели склонны классифицировать больше экземпляров в более представительный класс — в вашем случае, немишенные классы, что приводит к высокой точности, но низкой оценке для мишенных классов.

Ваши начальные результаты показывают, что модель классифицирует всего 13 мишенных экземпляров правильно при наличии 240. Это вызывает вопросы относительно способности модели обобщать данные на новом наборе.

Проблема утечки данных

Утечка данных – это распространённая причина несоответствий между кросс-валидацией и предсказаниями. В вашем изначальном подходе к предварительной обработке вы выполняли балансировку и нормализацию данных на всех данных до разделения их на обучающие и валидационные наборы. Это может привести к утечке информации, поскольку информация о валидационном наборе может помешать модели изучить зависимости только на обучающих данных.

После изменения порядка обработки данных, как вы описали, вы смогли устранить эту проблему, что дало более реалистичную картину точности и потерь.

Модель и переобучение

Теперь, когда вы устранили утечку данных, вы упомянули, что график обучения показывает, что точность остаётся стабильной на уровне около 70%, но потери растут. Это может свидетельствовать о нескольких проблемах:

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

  2. Выпадение: Возможно, ваши параметры стоит пересмотреть; например, процент дропаутов может быть слишком высоким, что приводит к недообучению модели.

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

  4. Переобучение замедлений: Модель может быть подвержена переобучению на тренировочных данных, поэтому мониторинг валидационной точности и ранний останов при необходимости может помочь предотвратить это.

  5. Гиперпараметрическая настройка: Настройка гиперпараметров (например, скорость обучения, количество эпох, размер пакета) критически важна. Используйте более сложные методы для настройки, такие как перебор по сетке или случайный поиск.

  6. Анализ ошибок: Проведите тщательный анализ ошибок. Разберитесь, какие мишенные экземпляры классифицируются неправильно и почему. Это может дать вам идеи о том, как скорректировать модель или изменить обработку данных.

Заключение

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

Эти шаги не только улучшат вашу модель, но и помогут вам более уверенно принимать бизнес-решения, основываясь на надёжности ваших предсказаний.

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

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