loss

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

Синтаксис

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

Описание

L = loss(gprMdl,Xnew,Ynew) возвращает среднюю квадратичную невязку для модели регрессии Гауссова процесса (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 - имя аргумента и 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-на-1 вектор, где n - количество строк в Xnew. По умолчанию вес каждого наблюдения равен 1.

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

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

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

расширить все

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

Примеры

расширить все

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

load('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');

Figure contains an axes. The axes contains 2 objects of type line. These objects represent Data, Predictions.

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

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