exponenta event banner

потеря

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

Синтаксис

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-за-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-by-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