Слишком многолюдное поведение и Слишком много пустого — оба неприятны.

Добро пожаловать в мир переобучения и недообучения.

Слишком многолюдное поведение = переоснащение.

Слишком много пустоты = недостаточное оснащение.

Возьмем пример.

Процедура

Набор обучающих данных

1. Выберите набор значений x.

x = seq(0,1, by =0.01)

2. Смоделируйте значения y из квадратичной кривой: y = 3 + 3x + 190x² + ошибка

y = 3 + 3*x + 190*x^2 + rnorm(length(x),0,50)

Набор тестовых данных

Моделируйте значения x и y из одной и той же модели из другого домена.

testx = seq(1.1,1.5, by =0.01)
testy = 3 + 3*testx + 190*(testx)^2 + rnorm(length(testx),0,20)

Алгоритмы и предсказание

  1. Простая линейная регрессия
linearmodel = lm(y~x) #model fitting
predict_linear = predict(linearmodel, list(x= testx)) #prediction on test data set

2. Квадратичная регрессия

z = x^2
quadraticmodel<- lm(y~ x + z) #fitting
predict_quadratic = predict(quadraticmodel, list(x = testx, z = testx^2)) #prediction on test data set

3. Сглаживание сплайнов

smoothspline = smooth.spline(x,y,df = 20) #fitting 
predict_spline = predict(smoothspline, testx)$y #prediction on test data set

Сюжет

seq = seq(min(x), max(x), by = 0.001)
predict = predict(quadraticmodel, list(x = seq, z = seq^2))
plot(x,y, xlab = "X", ylab = "Y", main = "Example of Overfitting, Normal Fitting and Underfitting. Follow #whysrijit" )
abline(linearmodel, col = "red")
lines(seq,predict, col = "blue")
lines(smoothspline, col = "green")

Зеленый сглаженный сплайн слишком перегружен и является примером переобучения. Он слишком большой и кажется слишком тесным.

Красная линейная модель слишком малочисленна и является примером недообучения. Он слишком мал и кажется слишком пустым.

Квадратичная синяя модель кажется совершенно правильной, поскольку это модель, из которой она фактически сгенерирована.

Математика

Производительность модели по ее производительности на тестовом наборе данных. Итак, вычисляем тестовую MSE.

Пусть фит будет образцом.

MSE(подходит) = Bias²(подходит) + дисперсия(подходит)

Это также именно та математика, которая стоит за Bias Variance Tradeoff.

Мы выбираем модель с минимальной MSE, а не с минимальной дисперсией или минимальным смещением.

fit= Гладкий сплайн

Bias(fit) = Low
(since it fits really close)
Variance(fit) = Very High 
(since, it is a very sensitive model. A small change in the actual data gives, an entirely different estimate and prediction)
MSE(fit) = High

fit= Линейная модель

Bias(fit) = Very High 
(since it doesn't fit close)
Variance(fit) = Low
(since, it is a very simple model. A small change in the actual data doesn't change the model any significantly)
MSE(fit) = High

fit= Квадратичная модель

Bias(fit) = Okay
Variance(fit) = Okay
MSE(fit) = Okay << High

Расчет MSE

library(MLmetrics)
mse_linear = MSE(predict_linear,testy)
12564.35 (High)

mse_quadratic = MSE(predict_quadratic,testy)
470.70 (Okay)

mse_spline = MSE(predict_spline,testy)
139412.5 (Very High)

Я надеюсь, вы поняли MSE и его связь с недостаточной подгонкой, подгонкой и переобучением моделей.

Спасибо, что зашли.

Если это поможет вам и прояснит ваше понимание переобучения и недообучения модели, поощряйте это небольшое усилие, просто аплодируя моей статье. :D

Подпишитесь на Srijit Mukherjee, чтобы узнать больше о таких захватывающих материалах, и поделитесь ими со своими восторженными сверстниками. Вы можете связаться со мной через Linkedin.

С уважением,
Сриджит.

© Шриджит Мукерджи 2020