Как рассчитать компромисс между смещением и дисперсией с помощью Python
Производительность модели машинного обучения можно охарактеризовать с точки зрения предвзятости и дисперсии модели.
Модель с высоким смещением делает сильные предположения о форме неизвестной базовой функции, которая сопоставляет входные данные с выходными в наборе данных, например линейная регрессия. Модель с высокой дисперсией сильно зависит от особенностей набора обучающих данных, например от необрезанных деревьев решений. Нам нужны модели с низким смещением и низкой дисперсией, хотя между этими двумя проблемами часто существует компромисс.
Компромисс смещения и дисперсии является полезной концепцией для выбора и настройки моделей, хотя, как правило, его нельзя вычислить напрямую, поскольку он требует полного знания проблемной области, которого у нас нет. Тем не менее, в некоторых случаях мы можем оценить ошибку модели и разделить ее на компоненты смещения и дисперсии, что может дать представление о поведении данной модели.
В этом уроке вы узнаете, как рассчитать смещение и дисперсию для модели машинного обучения.
После завершения этого урока вы будете знать:
- Ошибка модели состоит из дисперсии модели, систематической ошибки модели и неуменьшаемой ошибки.
- Мы ищем модели с низким смещением и дисперсией, хотя обычно уменьшение одной приводит к увеличению другой.
- Как разложить среднеквадратическую ошибку на смещение модели и дисперсию.
Начните свой проект с моей новой книги «Освоение машинного обучения с помощью Python», включающей пошаговые руководства и файлы исходного кода Python для все примеры.
Давайте начнем.
Обзор руководства
Этот урок разделен на три части; они есть:
- Смещение, дисперсия и неустранимая ошибка
- Компромисс смещения и дисперсии
- Вычислите смещение и дисперсию
Смещение, дисперсия и неустранимая ошибка
Рассмотрим модель машинного обучения, которая делает прогнозы для задач прогнозного моделирования, таких как регрессия или классификация.
Производительность модели при выполнении задачи можно описать с точки зрения ошибки прогнозирования на всех примерах, которые не использовались для обучения модели. Мы будем называть это ошибкой модели.
- Ошибка (модель)
Ошибку модели можно разложить на три источника ошибок: дисперсия модели, смещение модели и дисперсия неуменьшаемой ошибки . в данных.
- Ошибка (модель)=дисперсия (модель) + смещение (модель) + дисперсия (неустранимая ошибка)
Давайте подробнее рассмотрим каждый из этих трех терминов.
Предвзятость модели
Смещение — это мера того, насколько точно модель может отразить функцию отображения между входными и выходными данными.
Он отражает жесткость модели: силу предположения модели о функциональной форме отображения между входными и выходными данными.
Это отражает, насколько близка функциональная форма модели к истинной взаимосвязи между предикторами и результатом.
- Страница 97, Прикладное прогнозное моделирование, 2013.
Модель с высоким смещением полезна, когда оно соответствует истинной, но неизвестной основной функции отображения для задачи прогнозного моделирования. Тем не менее, модель с большим смещением будет совершенно бесполезна, если функциональная форма задачи не соответствует предположениям модели, например. предполагая линейную связь для данных с высокой нелинейной связью.
- Низкая погрешность: Слабые предположения относительно функциональной формы отображения входных данных на выходные данные.
- Высокая погрешность: сильные предположения относительно функциональной формы сопоставления входных данных с выходными данными.
Предвзятость всегда положительная.
Модельное отклонение
Дисперсия модели — это величина изменения производительности модели, когда она адаптируется к различным обучающим данным.
Он отражает влияние особенностей данных на модель.
Отклонение относится к величине, на которую [модель] изменилась бы, если бы мы оценили ее, используя другой набор обучающих данных.
- Страница 34, Введение в статистическое обучение с приложениями на R, 2014.
Модель с высокой дисперсией сильно изменится при небольших изменениях в наборе обучающих данных. И наоборот, модель с низкой дисперсией мало изменится при небольших или даже больших изменениях в наборе обучающих данных.
- Низкая дисперсия: небольшие изменения в модели с изменениями в наборе обучающих данных.
- Высокая дисперсия: большие изменения в модели с изменениями в наборе обучающих данных.
Дисперсия всегда положительна.
Неустранимая ошибка
В целом погрешность модели состоит из уменьшаемой и неустранимой ошибок.
- Ошибка модели=уменьшаемая ошибка + неустранимая ошибка
Уменьшаемая ошибка — это элемент, который мы можем улучшить. Это величина, которую мы уменьшаем, когда модель обучается на обучающем наборе данных, и стараемся максимально приблизить это число к нулю.
Неустранимая ошибка — это ошибка, которую мы не можем устранить с помощью нашей модели или любой другой модели.
Ошибка вызвана элементами, находящимися вне нашего контроля, такими как статистический шум в наблюдениях.
… обычно называется «неустранимым шумом» и не может быть устранена путем моделирования.
- Страница 97, Прикладное прогнозное моделирование, 2013.
Таким образом, хотя мы можем свести уменьшаемую ошибку до очень маленького значения, близкого к нулю или даже к нулю в некоторых случаях, у нас также будет некоторая неуменьшаемая ошибка. Он определяет нижнюю границу производительности при решении задачи.
Важно помнить, что неуменьшаемая ошибка всегда будет обеспечивать верхнюю границу точности нашего прогноза для Y. На практике эта граница почти всегда неизвестна.
- Страница 19, Введение в статистическое обучение с приложениями на R, 2014.
Это напоминание о том, что ни одна модель не идеальна.
Компромисс смещения и дисперсии
Смещение и дисперсия производительности модели взаимосвязаны.
В идеале мы бы предпочли модель с низким смещением и низкой дисперсией, хотя на практике это очень сложно. Фактически, это можно назвать целью прикладного машинного обучения для решения конкретной задачи прогнозного моделирования.
Уменьшения систематической ошибки можно легко добиться за счет увеличения дисперсии. И наоборот, уменьшения дисперсии можно легко добиться за счет увеличения систематической ошибки.
Это называется компромиссом, потому что легко получить метод с чрезвычайно низкой погрешностью, но высокой дисперсией […] или метод с очень низкой дисперсией, но высокой погрешностью…
- Страница 36, Введение в статистическое обучение с приложениями на R, 2014.
Эту взаимосвязь обычно называют компромиссом смещения и дисперсии. Это концептуальная основа для размышлений о том, как выбирать модели и конфигурацию модели.
Мы можем выбрать модель на основе ее предвзятости или дисперсии. Простые модели, такие как линейная регрессия и логистическая регрессия, обычно имеют высокую погрешность и низкую дисперсию. Сложные модели, такие как случайный лес, обычно имеют низкую систематическую ошибку, но высокую дисперсию.
Мы также можем выбирать конфигурации модели, основываясь на их влиянии на смещение и дисперсию модели. Гиперпараметр k в k-ближайших соседях контролирует компромисс между смещением и дисперсией. Малые значения, такие как k=1, приводят к низкой систематической ошибке и высокой дисперсии, тогда как большие значения k, такие как k=21, приводят к высокой систематической ошибке и низкой дисперсии.
Высокая погрешность не всегда плоха, равно как и высокая дисперсия, но она может привести к плохим результатам.
Нам часто приходится тестировать набор различных моделей и конфигураций моделей, чтобы определить, что лучше всего работает для данного набора данных. Модель с большим смещением может оказаться слишком жесткой и не соответствовать задаче. И наоборот, большая дисперсия может переопределить проблему.
Мы можем принять решение увеличить смещение или дисперсию, если это уменьшит общую оценку ошибки модели.
Вычислите смещение и дисперсию
Мне постоянно задают этот вопрос:
Как я могу рассчитать компромисс между смещением и дисперсией для моего алгоритма в моем наборе данных?
Технически мы не можем выполнить этот расчет.
Мы не можем рассчитать фактическое смещение и дисперсию для задачи прогнозного моделирования.
Это связано с тем, что мы не знаем истинную функцию отображения для задачи прогнозного моделирования.
Вместо этого мы используем смещение, дисперсию, неуменьшаемую ошибку и компромисс между смещением и дисперсией в качестве инструментов, помогающих выбирать модели, настраивать модели и интерпретировать результаты.
В реальной ситуации, когда f не наблюдается, обычно невозможно явно вычислить тестовую MSE, смещение или дисперсию для статистического метода обучения. Тем не менее, всегда следует помнить о компромиссе между смещением и дисперсией.
- Страница 36, Введение в статистическое обучение с приложениями на R, 2014.
Несмотря на то, что компромисс между смещением и дисперсией является концептуальным инструментом, в некоторых случаях мы можем его оценить.
Библиотека mlxtend от Себастьяна Рашки предоставляет функцию смещения_variance_decomp(), которая может оценивать смещение и дисперсию модели по нескольким выборкам начальной загрузки.
Сначала вам необходимо установить библиотеку mlxtend; например:
sudo pip install mlxtend
В приведенном ниже примере набор данных о жилье в Бостоне загружается напрямую через URL-адрес, разбивается на обучающий и тестовый наборы, затем оценивается среднеквадратическая ошибка (MSE) для линейной регрессии, а также смещение и дисперсия ошибки модели по 200 бутстреп-выборкам.
# estimate the bias and variance for a regression model
from pandas import read_csv
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from mlxtend.evaluate import bias_variance_decomp
# load dataset
url = 'https://raw.githubusercontent.com/jbrownlee/Datasets/master/housing.csv'
dataframe = read_csv(url, header=None)
# separate into inputs and outputs
data = dataframe.values
X, y = data[:, :-1], data[:, -1]
# split the data
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=1)
# define the model
model = LinearRegression()
# estimate bias and variance
mse, bias, var = bias_variance_decomp(model, X_train, y_train, X_test, y_test, loss='mse', num_rounds=200, random_seed=1)
# summarize results
print('MSE: %.3f' % mse)
print('Bias: %.3f' % bias)
print('Variance: %.3f' % var)
При выполнении примера выводится предполагаемая ошибка, а также предполагаемое смещение и дисперсия ошибки модели.
Примечание. Ваши результаты могут отличаться в зависимости от стохастической природы алгоритма или процедуры оценки или различий в числовой точности. Попробуйте запустить пример несколько раз и сравнить средний результат.
В этом случае мы видим, что модель имеет высокую предвзятость и низкую дисперсию. Этого и следовало ожидать, учитывая, что мы используем модель линейной регрессии. Мы также можем видеть, что сумма предполагаемого среднего значения и дисперсии равна предполагаемой ошибке модели, например. 20,726 + 1,761=22,487.
MSE: 22.487
Bias: 20.726
Variance: 1.761
Дальнейшее чтение
В этом разделе представлены дополнительные ресурсы по этой теме, если вы хотите углубиться в нее.
Учебники
- Нежное введение в компромисс между смещением и дисперсией в машинном обучении
Книги
- Введение в статистическое обучение с приложениями на R, 2014.
- Прикладное прогнозное моделирование, 2013.
Статьи
- Компромисс смещения и дисперсии, Википедия.
- Библиотека MLxtend.
- Разложение смещения-дисперсии, MLxtend.
Краткое содержание
В этом уроке вы узнали, как рассчитать смещение и дисперсию для модели машинного обучения.
В частности, вы узнали:
- Ошибка модели состоит из дисперсии модели, систематической ошибки модели и неуменьшаемой ошибки.
- Мы ищем модели с низким смещением и дисперсией, хотя обычно уменьшение одной приводит к увеличению другой.
- Как разложить среднеквадратическую ошибку на смещение модели и дисперсию.
У вас есть вопросы?
Задавайте свои вопросы в комментариях ниже, и я постараюсь ответить.