Фундаментальной целью машинного обучения является обобщение: возможность делать выводы о невидимых данных из конечных обучающих примеров. Поэтому методы количественной оценки ошибки обобщения имеют решающее значение для оценки эффективности любого подхода к машинному обучению. В обучении с учителем мы делаем предположение, что существует отображение f между признаками и метками. мы можем выразить это как y=f(x). f, показанное здесь красным цветом, — это неизвестная функция, которую вы хотите определить. На самом деле генерация данных всегда сопровождается случайностью или шумом, подобным показанным здесь синим точкам.

Наша цель — определить модель, которая наиболее точно соответствует 𝘧. Мы хотим убедиться, что шум максимально устранен при обучении . должен иметь низкую прогностическую ошибку для неизвестных наборов данных. Любая модель машинного обучения, включая деревья решений, нейронные сети и логистическую регрессию, может использоваться для . Мы должны устранить как можно больше шума модели. В неизвестном наборе данных должна давать низкую ошибку прогнозирования. Когда мы аппроксимируем 𝘧, мы можем столкнуться с двумя трудностями.

  • Переоснащение (x), соответствующее шуму тренировочного набора
  • Подгонка недостаточно гибкая, чтобы аппроксимировать 𝘧.

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

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

В результате ошибка обобщения модели показывает, насколько хорошо она обобщает неизвестные данные. Смещение, дисперсия и неустранимая ошибка — которые являются вкладом шума в ошибку — могут быть использованы для разбиения его на эти три компонента.

Член смещения показывает, в среднем, насколько различны f̂и f. В качестве примера рассмотрим модель с высоким смещением, показанную черным цветом. Эта модель недостаточно адаптируема, чтобы точно походить на настоящую функцию f, показанную красным цветом. Модели с высоким смещением не соответствуют данным.

Термин дисперсии указывает, насколько непостоянна f̂ в различных обучающих наборах. Примите во внимание модель с высокой дисперсией, показанную ниже черным цветом; в этом случае f̂ точно следует точкам обучающих данных, пропуская реальную функцию f, показанную красным. Переоснащение приводит к моделям с высокой дисперсией.

Сложность модели определяет ее гибкость для аппроксимации истинной функции f. Например: увеличение максимальной глубины дерева увеличивает сложность дерева решений.

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

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

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

Таким образом, чтобы понять смещение и дисперсию в модели, нам нужно использовать перекрестную проверку (CV), в частности, K-кратное CV.

Диаграмма здесь иллюстрирует этот метод для K = 10: — Во-первых, обучающая выборка (T) разбивается случайным образом на 10 разделов или сгибов, — Ошибка оценивается 10 раз для 10 сгибов, — Каждый раз для оценки выбирается одна складка после обучения на остальных 9 сгибах. — В конце вы получите список из 10 ошибок. Наконец, CV рассчитывается с использованием среднего значения этих 10 ошибок.

Давайте посмотрим на некоторые примеры. Мы рассмотрим автоматический набор данных, где X и y являются функциями и метками соответственно.

# Import train_test_split from sklearn.model_selection
from sklearn.model_selection import train_test_split
# Set SEED for reproducibility
SEED = 1
# Split the data into 70% train and 30% test
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=SEED)
# Instantiate a DecisionTreeRegressor dt
dt = DecisionTreeRegressor(max_depth=4,min_samples_leaf =0.26, random_state=SEED)
# Compute the array containing the 10-folds CV MSEs
MSE_CV_scores = - cross_val_score(dt, X_train, y_train, cv=10, 
                       scoring='neg_mean_squared_error',
                       n_jobs=-1)
# Compute the 10-folds CV RMSE
RMSE_CV = (MSE_CV_scores.mean())**(1/2)
# Print RMSE_CV
print('CV RMSE: {:.2f}'.format(RMSE_CV))
CV RMSE: 5.14
# Import mean_squared_error from sklearn.metrics as MSE
from sklearn.metrics import mean_squared_error as MSE
# Fit dt to the training set
dt.fit(X_train, y_train)
# Predict the labels of the training set
y_pred_train = dt.predict(X_train)
# Evaluate the training set RMSE of dt
RMSE_train = (MSE(y_train, y_pred_train))**(1/2)
# Print RMSE_train
print('Train RMSE: {:.2f}'.format(RMSE_train))
Train RMSE: 5.15

Тестовый набор не трогали, пока мы не убедились в эффективности нашей модели. Отличный способ оценить производительность модели без изменения тестового набора — использовать CV. 10-кратная ошибка CV, показанная в приведенном выше коде, примерно соответствует ошибке обучения. RMSE обучающего набора (RMSE_train) и RMSE CV (RMSE_CV). Давайте сравним это с переменной с именем baseline_RMSE, которая соответствует среднеквадратической ошибке, полученной деревом регрессии, обученным только с помощью функции disp (это RMSE, полученная деревом регрессии. Здесь baseline_RMSE служит базовым RMSE, выше которого модель считается неподходящей и ниже этого уровня модель считается «достаточно хорошей».

print(RMSE_train,RMSE_CV,baseline_RMSE)
5.15 5.14 5.1
#Our model dt suffers from high bias because RMSE_CVRMSE_train and both scores are greater than baseline_RMSE. dt is indeed underfitting the training set as the model is too constrained to capture the nonlinear dependencies between features and labels.

Таким образом, мы смогли использовать K-кратную перекрестную проверку, чтобы определить, является ли наша модель переоснащением или недообучением.

Источник: DataCamp.com