Переобучение — распространенный и неприятный сценарий в моделировании машинного обучения. Итак, что такое переобучение? Вы не даете своей модели достаточно места для гибкого обучения на данных, которые вы передаете. Другими словами, ваша модель умеет прийти к выводу, даже если этот вывод на самом деле не отражает реальность, лежащую в основе данных.
Модель переобучения становится настолько специализированной в подгонке обучающих данных, что ей трудно адаптироваться к новым, невидимым данным, поскольку она, по сути, 'запомнила' обучающие примеры, а не изучала лежащие в их основе данные. закономерности и связи в данных.
На приведенной выше диаграмме видно, что потери при проверке начинают расти и отклоняться от потерь при обучении, что является явным признаком переобучения. Поэтому очень важно решить проблему переобучения в каждой модели машинного обучения. Как мы можем этого добиться?
1. Сбалансируйте данные: Убедитесь, что модель одинаково изучает различные целевые классы, чтобы модель не подвергалась предвзятому обучению в отношении большинства классов/классов. Этого можно добиться с помощью повторной выборки. Ресамплингданных путем увеличения экземпляров класса меньшинства (избыточная выборка) или уменьшения экземпляров класса большинства (недостаточная выборка). Используйте модуль scikit-learns для изучения дисбаланса(https://imbalanced-learn.org/stable/introduction.html). Обратите внимание, что недостаточная выборка обычно приводит к потеря информации о классе большинства, поэтому предпочтительнее использовать передискретизацию.
2.SMOTE (метод синтетической избыточной выборки меньшинства): Создайте синтетические данные для классов/классов меньшинства, чтобы получить сбалансированные данные. Используйте класс SMOTE из scikit-learn Balance-learn (https://imbalanced-learn.org/stable/references/generated/imblearn.over_sampling.SMOTE.html#smote).
3. Выбор функций. Откажитесь от избыточных функций из набора функций, поскольку это увеличит сложность модели, а также размерность данных. Существует множество методов изучения корреляции числовых и категориальных переменных.
- Коэффициент корреляции Пирсона:Для числовых характеристик корреляцию между переменными можно понять с помощью коэффициентов корреляции Пирсона. Получив корреляционную матрицу, рассмотрим признаки, имеющие высокую корреляцию с целевой переменной. Также проверьте корреляцию между переменными признаков, поскольку сильно коррелированные наборы признаков будут нести аналогичную информацию о цели, и включение обоих приведет к ненужному увеличению размерности.
- Оценка взаимной информации: Эту метрику можно использовать для расчета корреляции между категориальными переменными. Он легко доступен в sklearn.metrics.mutual_info_score — документации scikit-learn 1.3.0.
- V Краммера: Показатель Краммера V можно использовать для проверки корреляции категориальных переменных, которые рассчитываются на основе значения Chi2 двух категориальных переменных. Ниже приведен псевдокод Python для расчета V Краммера всех функций по сравнению с целевым.
import scipy.stats as stats for feature in df.columns: if feature != 'Target': contingency_table = pd.crosstab(df[feature], df['Target']) chi2, _, _, _ = stats.chi2_contingency(contingency_table) print(f"Chi2 = {chi2}") n = np.sum(contingency_table) m=min(contingency_table.shape)-1 v = chi2 / (n * m) cramers_V = np.sqrt(v) print(f" For feature {str(feature)} 'Cramers_V score ' with target variables are \n {cramers_V} \n")
4. Регуляризация: Регуляризацией часто называют методы, используемые для обобщенного обучения моделей, чтобы они не переучивали закономерности в данных, что может привести к переобучению. Обычно используемые регуляризации: L1(Lasso) и L2(Ridge).
- Регуляризация L1 добавляет штраф к функции потерь, пропорциональный коэффициентам моделей. Это приведет к тому, что некоторые коэффициенты станут равными нулю, что добавит некоторую регуляризацию всей модели.
- Регуляризация L2, с другой стороны, добавляет штрафной член, пропорциональный квадрату коэффициентов модели, что предотвращает смещение при увеличении значений коэффициентов. Предположим, что вы используете модель линейной регрессии, рассматривающую MAE (среднюю абсолютную ошибку) в качестве метрики, функция потерь после добавления регуляризации l1 и l2 будет выглядеть, как показано ниже.
Существует множество других методов уменьшения переобучения, таких как 1.Сокращение и методы ансамбля для деревьев решений . 2. Отключение, ранняя остановка для нейронных сетей и многое другое…. Однако правильная настройка гиперпараметров – это самый важный этап на каждом этапе построения модели для достижения оптимальной производительности.