Интерпретация кривой валидации

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

Я читал о функции validation_curve из scikit learn. Когда я запускаю эту функцию, она занимает слишком много времени. Поэтому я вместо этого строю графики результатов из grid search, что, кажется, намного быстрее. Однако, когда я строю график с помощью кода с: https://matthewbilyeu.com/blog/2019-02-05/validation-curve-plot-from-gridsearchcv-results.

Я получаю:

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

Почему линии так близко друг к другу? Разве я не должен получить кривую вместо этого? Более общим вопросом является, как мне определить, переобучается ли моя модель или недообучается? Как я могу изобразить области переобучения/недообучения на моем графике.

редактировать: я пытаюсь предсказать, будет ли клиент по кредиту по-прежнему в убытке или нет, так что 1 за да, 0 за нет. Данные являются финансовыми. Также данные, которые я использовал, содержат около 100k образцов.

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

Похоже, в вашем наборе данных очень мало случаев невыполнения кредитов, поэтому xgboost учится предсказывать 0 для всех входных данных независимо от выбранных гиперпараметров. Попробуйте отобрать данные так, чтобы классы были более сбалансированы (например, >10% ваших точек данных являются невыполнениями) и посмотрите, что произойдет.

Другие варианты работы с сильно несбалансированными классами можно найти здесь: https://www.analyticsvidhya.com/blog/2017/03/imbalanced-data-classification/

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

Интерпретация валидационной кривой в контексте задачи прогнозирования дефолтов по займам

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

Понимание валидационной кривой

Валидационная кривая показывает, как изменяется производительность модели (например, точность, F1-мера и т.д.) на обучающей и валидационной выборках в зависимости от одного из гиперпараметров модели. Если вы наблюдаете, что линии на графике очень близки друг к другу и не образуют характерной кривой, это может говорить о ряде проблем:

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

  2. Проблемы с моделью: Как упоминалось в обсуждении, если модель предсказывает один класс (например, отсутствие дефолта) более чем на 90% случаев, это может указывать на то, что модель не способна эффективно различать классы, что может быть следствием несбалансированности классов. Вам стоит рассмотреть методы обработки несбалансированных данных, такие как oversampling для меньшего класса или использование алгоритмов, специфичных для работы с несбалансированными данными.

Переобучение и недообучение

Чтобы определить, находится ли ваша модель в состоянии переобучения или недообучения, необходимо внимательно проанализировать различия между графиками точности обучения и валидации:

  1. Недообучение: Проявляется, когда обе линии (обучения и валидации) имеют низкие значения. Это означает, что модель не может захватить основные закономерности в данных.

  2. Переобучение: Если линия обучающей выборки значительно выше линии валидационной, это свидетельствует о том, что модель изучила специфические особенности обучающих данных, что негативно сказалось на её способности обобщать на новых данных.

Визуализация областей переобучения и недообучения

Чтобы отобразить области, отвечающие за переобучение и недообучение на графике, вы можете добавить горизонтальные линии, обозначающие пороговые значения для точности, которые определяют эти состояния. В диапазоне от 0 до 1, например, вы можете выбрать 0.75 как границу для хорошей производительности. Таким образом, когда обе линии находятся ниже этого значения, это указывает на недообучение, а когда линия обучения значительно выше линии валидации, это указывает на переобучение.

Рекомендации по улучшению модели

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

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

  • Выбор модели: Попробуйте различные алгоритмы, такие как логистическая регрессия, чемпионы для классификации, через ансамбли методов (например, Random Forest или Gradient Boosting), которые могут лучше справляться с несбалансированными данными и более приоритетны для определённых классов.

  • Тщательный анализ метрик: Включите такие метрики, как AUC-ROC или PR AUC для более точной оценки производительности на несбалансированных наборах данных.

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

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

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