Я изучаю эффект от размера учебного образца при выполнении регрессии гребня (регуляризованной). Я получаю этот очень странный график, когда я рисую ошибку теста по сравнению с размером набора поезда: .Регрессия гребня: ошибка теста увеличивается вверх по мере увеличения учебного образца (от переопределенного до переопределенного)
Следующий код генерирует набор тренировок и набор тестов и выполняет регрессию гребня для низкого значения параметра регуляризации.
Ошибка и ее стандартное отклонение строятся относительно размера набора тренировок.
Обратите внимание, что размер генерируемых данных 10.
%settings
samplerange = 8:12;
maxiter = 100;
test = 300;
dimension = 10;
gamma = 10^-5;
rng(2);
figure(1);
error = zeros(maxiter,1);
for samples=samplerange
for iter=1:maxiter
% training data
a = randn(dimension,1);
xtrain = randn(samples,dimension);
ytrain = xtrain*a + randn(samples,1);
% test data
xtest = randn(test,dimension);
ytest = xtest*a + randn(test,1);
% ridge regression
afit = (xtrain'*xtrain+gamma*length(ytrain)*eye(dimension)) \ xtrain'*ytrain;
% test error
error(iter) = (ytest-xtest*afit)'*(ytest-xtest*afit)/length(ytest);
end
hold on;
errorbar(samples, mean(error), std(error), '.');
hold off;
end
mean(error)
я получаю следующие значения ошибок:
14.0982
28.1679
201.4467
75.4921
16.2038
и последующее стандартное отклонение:
39.3148
126.0627
756.4289
568.7223
65.9008
Почему это идет вверх тогда вниз? Значение усредняется более чем на 100 итераций, поэтому это не случайно.
Я считаю, что это что-то делать с тем фактом, что размерность данных равна 10. Это может быть Вычислительной поскольку ошибка теста должна снижение курса, как обучающий набор становится все больше ...
Если какой-либо вы можете пролить свет на то, что происходит, я был бы благодарен!
Ссылка на данный файл сделана. https://imgur.com/mgm8zMe Он представляет собой пробную ошибку (со стандартным отклонением) по сравнению с количеством образцов в наборе поездов. Почему дисперсия идет вверх и вниз? –