Введение

В постоянно развивающейся сфере машинного обучения и статистического моделирования широко распространенной задачей является достижение тонкого баланса между предвзятостью и дисперсией. Эти два компонента являются основными источниками ошибок, которые могут помешать точной экстраполяции алгоритмов обучения с учителем за пределы их обучающих наборов данных.
Рассмотрим финансовое учреждение, пытающееся предсказать риск дефолта по кредиту на основе характеристик клиента. Модель с высокой степенью смещения может чрезмерно упростить шаблоны, учитывая только несколько факторов, таких как доход заявителя. Это чрезмерное упрощение может привести к недообучению, когда модель не может уловить критические закономерности в данных и, следовательно, не может точно предсказать. И наоборот, модель с высокой дисперсией может стать чрезмерно сложной, включая даже незначительные детали, что приведет к переоснащению. Модель отлично работает на обучающих данных, но дает сбои, когда сталкивается с новыми, невидимыми данными.
Это повседневные проявления компромисса смещения и дисперсии в отраслевых приложениях машинного обучения. Однако остается вопрос: всегда ли нам суждено лавировать между предвзятостью и дисперсией при разработке моделей машинного обучения? Или есть способы избежать или хотя бы смягчить эту кажущуюся неизбежность? В этой статье используется тематическое исследование Python, чтобы глубже погрузиться в это интригующее явление, сосредоточив внимание на практическом применении в финансовом секторе. Понимание смещения и дисперсии
Смещение — это ошибка из-за ошибочных предположений в алгоритме обучения. Большое смещение может привести к тому, что алгоритм упустит релевантные отношения между функциями и целевыми выходными данными (недообучение). Дисперсия, с другой стороны, — это ошибка чувствительности к небольшим колебаниям обучающей выборки. Высокая дисперсия может привести к тому, что алгоритм будет моделировать случайный шум в обучающих данных, а не ожидаемые результаты (переобучение).

Компромисс

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

Практический пример Python

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

import numpy as np
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import mean_squared_error, accuracy_score
from sklearn.preprocessing import PolynomialFeatures
from sklearn.pipeline import make_pipeline


# Set random seed for reproducibility
np.random.seed(0)

# Generate synthetic data
n_samples = 1000
X = np.random.normal(size=(n_samples, 3))  # income, credit_score, loan_amount
true_fun = lambda X: np.round(1 / (1 + np.exp(-(X[:, 0] - X[:, 1] + 2 * X[:, 2]))))  # true function
y = true_fun(X) + np.random.binomial(1, 0.1, n_samples)  # add some noise

# Split data into training and test sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)

Теперь мы создадим три модели: модель с высокой степенью смещения, учитывающую только доход, более сбалансированную модель, учитывающую доход и кредитный рейтинг, и модель с высокой дисперсией, учитывающую условия взаимодействия до 3-й степени:

# High bias model (Income only)
model1 = LogisticRegression()
model1.fit(X_train[:, 0].reshape(-1, 1), y_train)

# More balanced model (Income and Credit Score)
model2 = LogisticRegression()
model2.fit(X_train[:, :2], y_train)

# High variance model (Interaction terms up to 3rd degree)
model3 = make_pipeline(PolynomialFeatures(3), LogisticRegression())
model3.fit(X_train, y_train)

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

# Evaluate models
models = [model1, model2, model3]
names = ['High Bias', 'Balanced', 'High Variance']

for model, name in zip(models, names):
    if name == 'High Bias':
        train_preds = model.predict(X_train[:, 0].reshape(-1, 1))
        test_preds = model.predict(X_test[:, 0].reshape(-1, 1))
    elif name == 'Balanced':
        train_preds = model.predict(X_train[:, :2])
        test_preds = model.predict(X_test[:, :2])
    else:
        train_preds = model.predict(X_train)
        test_preds = model.predict(X_test)
    
    print(f"{name} Model: Train MSE = {mean_squared_error(y_train, train_preds):.2f}, Test MSE = {mean_squared_error(y_test, test_preds):.2f}")
    print(f"{name} Model: Train Accuracy = {accuracy_score(y_train, train_preds):.2f}, Test Accuracy = {accuracy_score(y_test, test_preds):.2f}\n")
High Bias Model: Train MSE = 0.45, Test MSE = 0.51
High Bias Model: Train Accuracy = 0.61, Test Accuracy = 0.55

Balanced Model: Train MSE = 0.39, Test MSE = 0.40
Balanced Model: Train Accuracy = 0.65, Test Accuracy = 0.65

High Variance Model: Train MSE = 0.08, Test MSE = 0.06
High Variance Model: Train Accuracy = 0.92, Test Accuracy = 0.94

На первом графике под названием «Среднеквадратичная ошибка» показана среднеквадратическая ошибка (MSE) для каждой из наших моделей как в обучающей, так и в тестовой выборке. Среднеквадратическая ошибка — это мера того, насколько хорошо модель соответствует данным, причем чем меньше значение, тем лучше.

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

Теперь давайте проанализируем графики:

  1. Среднеквадратическая ошибка (MSE)
    Модель с высоким смещением имеет MSE 0,45 для обучающего набора и 0,51 для тестового набора, что указывает на значительное количество ошибок и невозможность сопоставления данных. именно так. Сбалансированная модель уменьшает ошибку до 0,39 на тренировочном наборе и до 0,40 на тестовом наборе, что показывает улучшение в более точном подборе данных и хорошем обобщении. Модель высокой дисперсии демонстрирует существенное снижение MSE 0,08 на обучающем наборе и еще более низкое значение 0,06 на тестовом наборе, что указывает на очень точное соответствие данным.
  2. Точность
    Модель с высоким смещением имеет точность 0,61 на тренировочном наборе и 0,55 на тестовом наборе, что говорит о том, что она изо всех сил пытается делать точные прогнозы и хорошо обобщать. Точность сбалансированной модели повышается до 0,65 как на тренировочном, так и на тестовом наборах, что является положительным признаком, поскольку показывает, что модель хорошо обобщает и не дает переобучения. Модель высокой дисперсии достигает точности 0,92 на тренировочном наборе и 0,94 на тестовом наборе, что является выдающимися значениями. Однако более высокая точность на тестовом наборе по сравнению с тренировочным набором может быть индикатором небольшого переобучения.

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

Модель с высокой степенью смещения

Модель с высоким смещением чрезмерно упрощает проблему, поскольку для прогнозирования дефолта по кредиту учитывается только доход. Это чрезмерное упрощение приводит к высокой частоте ошибок как в обучающем, так и в тестовом наборах (среднеквадратичная ошибка, или MSE, 0,45 и 0,51 соответственно). Точность также относительно низкая: 0,61 на тренировочном наборе и 0,55 на тестовом наборе. Эта модель работает плохо, потому что она имеет предвзятое представление о проблеме и не может уловить важные закономерности в данных.

Сбалансированная модель

Сбалансированная модель работает лучше, если учитывать как доход, так и кредитный рейтинг. Он имеет более низкую частоту ошибок (MSE 0,39 при обучении и 0,40 при тестировании) и более высокую точность (0,65 в обоих наборах) по сравнению с моделью с высоким смещением. Это связано с тем, что он фиксирует более релевантные закономерности в данных, учитывая дополнительную функцию.

Модель высокой дисперсии

Модель с высокой дисперсией лучше всего работает как с обучающими, так и с тестовыми наборами данных, имея самую низкую частоту ошибок (MSE 0,08 и 0,06) и самую высокую точность (0,92 и 0,94). Эта модель является более сложной, учитывая условия взаимодействия до 3-й степени, и она способна фиксировать более тонкие закономерности в данных. Однако здесь есть поучительная история. Хотя эта модель лучше всего работает с заданными данными, ее высокая сложность делает ее восприимчивой к переоснащению. Переобучение происходит, когда модель изучает шум вместе с сигналом в обучающих данных, что снижает ее способность обобщать новые, невидимые данные.

Расшифровка танго смещения-вариации

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

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

Шаг за пределы компромисса

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

Проще говоря, в то время как предвзятость и дисперсия традиционно представляют собой компромисс, инновационные методы могут помочь нам преодолеть или даже обойти это ограничение. Следовательно, ответом на вопрос «Всегда ли есть компромисс между предвзятостью и дисперсией?» является громкое «Не обязательно». Благодаря тщательному управлению нашими моделями, использованию расширенных методов и точной настройки гиперпараметров, мы можем эффективно укротить предвзятость и дисперсию, создавая модели, которые точно обобщают невидимые данные.