потеря

Ошибка регрессии для Гауссовой модели регрессии процесса

Синтаксис

L = loss(gprMdl,Xnew,Ynew)
L = loss(gprMdl,Xnew,Ynew,Name,Value)

Описание

L = loss(gprMdl,Xnew,Ynew) возвращает среднеквадратическую ошибку для модели Gaussian process regression (GPR) gpr, с помощью предикторов в Xnew и наблюдаемого ответа в Ynew.

L = loss(gprMdl,Xnew,Ynew,Name,Value) возвращает среднеквадратическую ошибку для модели GPR, gpr, с дополнительными опциями, заданными одним или несколькими аргументами пары Name,Value. Например, можно задать пользовательскую функцию потерь или веса наблюдения.

Входные параметры

развернуть все

Гауссова модель регрессии процесса, заданная как (полный) RegressionGP или CompactRegressionGP (компактный) объект.

Новые данные, заданные как table или n-by-d матрица, где m является количеством наблюдений и d, являются количеством переменных прогноза в данных тренировки.

Если бы вы обучили gprMdl на table, то Xnew должен быть table, который содержит все переменные прогноза, используемые, чтобы обучить gprMdl.

Если Xnew является таблицей, то он может также содержать Ynew. И если это делает, затем вы не должны задавать Ynew.

Если бы вы обучили gprMdl на матрице, то Xnew должен быть числовой матрицей со столбцами d и может только содержать значения для переменных прогноза.

Типы данных: single | double | table

Новые наблюдаемые значения ответа, которые соответствуют значениям предиктора в Xnew, заданном как n-by-1 вектор. n является количеством строк в Xnew. Каждая запись в Ynew является наблюдаемым ответом на основе данных о предикторе в соответствующей строке Xnew.

Если Xnew является таблицей, содержащей новые значения ответа, вы не должны задавать Ynew.

Типы данных: single | double

Аргументы в виде пар имя-значение

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Функция потерь, заданная как 'mse' (среднеквадратическая ошибка) или указатель на функцию.

Если вы передаете указатель на функцию скажем fun, loss вызывает его как показано ниже: fun(Y,Ypred,W), где Y, Ypred и W являются числовыми векторами длины n и n, является количеством строк в Xnew. Y является наблюдаемым ответом, Ypred является предсказанным ответом, и W является весами наблюдения.

Пример: 'lossfun',Fct вызывает функцию потерь Fct.

Типы данных: char | string | function_handle

Веса наблюдения, заданные как n-by-1 вектор, где n является количеством строк в Xnew. По умолчанию вес каждого наблюдения равняется 1.

Пример: 'weights',W использует веса наблюдения в векторном W.

Типы данных: double | single

Выходные аргументы

развернуть все

Ошибка регрессии для обученной Гауссовой модели регрессии процесса, gprMdl, возвращенного как скалярное значение.

Примеры

развернуть все

Загрузите выборочные данные.

load(fullfile(matlabroot,'examples','stats','gprdata.mat'))

Данные имеют 8 переменных прогноза и содержат 500 наблюдений в данных тренировки и 100 наблюдений в тестовых данных. Это - моделируемые данные.

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

gprMdl = fitrgp(Xtrain,ytrain,'FitMethod','exact',...
'PredictMethod','exact','KernelFunction','ardsquaredexponential',...
'Standardize',1);

Вычислите ошибку регрессии для тестовых данных.

L = loss(gprMdl,Xtest,ytest)
L = 0.6928

Предскажите ответы для тестовых данных.

ypredtest = predict(gprMdl,Xtest);

Постройте тестовый ответ наряду с прогнозами.

figure;
plot(ytest,'r');
hold on;
plot(ypredtest,'b');
legend('Data','Predictions','Location','Best');

Вручную вычислите потерю регрессии.

L = (ytest - ypredtest)'*(ytest - ypredtest)/length(ytest)
L = 0.6928

Загрузите выборочные данные и хранилище в table.

load fisheriris
tbl = table(meas(:,1),meas(:,2),meas(:,3),meas(:,4),species,...
'VariableNames',{'meas1','meas2','meas3','meas4','species'});

Соответствуйте модели GPR с помощью первого измерения в качестве ответа и других переменных как предикторы.

mdl = fitrgp(tbl,'meas1');

Предскажите ответы с помощью обученной модели.

ypred = predict(mdl,tbl);

Вычислите среднюю абсолютную погрешность.

n = height(tbl);
y = tbl.meas1;
fun = @(y,ypred,w) sum(abs(y-ypred))/n;
L = loss(mdl,tbl,'lossfun',fun)
L = 0.2345

Альтернативы

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

Расширенные возможности

Смотрите также

| | | | |

Введенный в R2015b