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

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

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

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. Выбор функций. Откажитесь от избыточных функций из набора функций, поскольку это увеличит сложность модели, а также размерность данных. Существует множество методов изучения корреляции числовых и категориальных переменных.

  1. Коэффициент корреляции Пирсона:Для числовых характеристик корреляцию между переменными можно понять с помощью коэффициентов корреляции Пирсона. Получив корреляционную матрицу, рассмотрим признаки, имеющие высокую корреляцию с целевой переменной. Также проверьте корреляцию между переменными признаков, поскольку сильно коррелированные наборы признаков будут нести аналогичную информацию о цели, и включение обоих приведет к ненужному увеличению размерности.
  2. Оценка взаимной информации: Эту метрику можно использовать для расчета корреляции между категориальными переменными. Он легко доступен в sklearn.metrics.mutual_info_score — документации scikit-learn 1.3.0.
  3. 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).

  1. Регуляризация L1 добавляет штраф к функции потерь, пропорциональный коэффициентам моделей. Это приведет к тому, что некоторые коэффициенты станут равными нулю, что добавит некоторую регуляризацию всей модели.
  2. Регуляризация L2, с другой стороны, добавляет штрафной член, пропорциональный квадрату коэффициентов модели, что предотвращает смещение при увеличении значений коэффициентов. Предположим, что вы используете модель линейной регрессии, рассматривающую MAE (среднюю абсолютную ошибку) в качестве метрики, функция потерь после добавления регуляризации l1 и l2 будет выглядеть, как показано ниже.

Существует множество других методов уменьшения переобучения, таких как 1.Сокращение и методы ансамбля для деревьев решений . 2. Отключение, ранняя остановка для нейронных сетей и многое другое…. Однако правильная настройка гиперпараметров – это самый важный этап на каждом этапе построения модели для достижения оптимальной производительности.