loss

Ошибка регрессии для модели регрессии машины опорных векторов

Синтаксис

L = loss(mdl,tbl,ResponseVarName)
L = loss(mdl,tbl,Y)
L = loss(mdl,X,Y)
L = loss(___,Name,Value)

Описание

L = loss(mdl,tbl,ResponseVarName) возвращает потерю для предсказаний модели регрессии машины опорных векторов (SVM), mdl, на основе данных предиктора в таблице tbl и истинные значения отклика в tbl.ResponseVarName.

L = loss(mdl,tbl,Y) возвращает потерю для предсказаний модели регрессии машины опорных векторов (SVM), mdl, на основе данных предиктора в таблице X и истинные значения отклика в векторе Y.

L = loss(mdl,X,Y) возвращает потерю для предсказаний модели регрессии машины опорных векторов (SVM), mdl, на основе данных предиктора в X и истинные ответы в Y.

L = loss(___,Name,Value) возвращает потерю с дополнительными опциями, заданными одним или несколькими Name,Value аргументы в виде пар, с использованием любого из предыдущих синтаксисов. Для примера можно задать функцию потерь или веса наблюдений.

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

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

SVM регрессионая модель, заданная как RegressionSVM модель или CompactRegressionSVM модель, возвращенная fitrsvm или compact, соответственно.

Выборочные данные, заданный как таблица. Каждая строка tbl соответствует одному наблюдению, и каждый столбец соответствует одной переменной предиктора. Опционально tbl может содержать дополнительные столбцы для переменной отклика и весов наблюдений. tbl должны содержать все предикторы, используемые для обучения mdl. Многополюсные переменные и массивы ячеек, отличные от массивов ячеек векторов символов, не разрешены.

Если вы тренировались mdl использование выборочных данных, содержащихся в table, тогда входные данные для этого метода также должны быть в таблице.

Типы данных: table

Имя переменной отклика, заданное как имя переменной в tbl. Переменная отклика должна быть числовым вектором.

Вы должны задать ResponseVarName как вектор символов или строковый скаляр. Для примера, если переменная отклика Y хранится как tbl.Y, затем задайте ResponseVarName как 'Y'. В противном случае программное обеспечение обрабатывает все столбцы tbl, включая Y, как предикторы при обучении модели.

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

Данные предиктора, заданные как числовая матрица или таблица. Каждая строка X соответствует одному наблюдению (также известному как образец или пример), и каждый столбец соответствует одной переменной (также известной как функция).

Если вы тренировались mdl используя матрицу значений предиктора, затем X должна быть числовой матрицей с p столбцами. p - количество предикторов, используемых для обучения mdl.

Длина Y и количество строк X должно быть равным.

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

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

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

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

Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

Функция потерь, заданная как разделенная разделенными запятой парами, состоящая из 'LossFun' и 'mse', 'epsiloninsensitive', или указатель на функцию.

  • В следующей таблице перечислены доступные функции потерь.

  • Задайте свою собственную функцию, используя обозначение указателя на функцию.

    Ваша функция должна иметь подпись lossvalue = lossfun(Y,Yfit,W), где:

    • Выходной аргумент lossvalue является скалярным значением.

    • Вы выбираете имя функции (lossfun).

    • Y является n числовым вектором наблюдаемых значений отклика -by-1.

    • Yfit - n-на-1 числовой вектор предсказанных значений отклика, вычисленный с использованием соответствующих значений предиктора в X (подобно выходным данным predict).

    • W является n -by-1 числовым вектором весов наблюдений. Если вы сдаете Wпрограммное обеспечение нормирует их до суммы 1.

    Задайте свою функцию используя 'LossFun',@lossfun.

Пример: 'LossFun','epsiloninsensitive'

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

Веса наблюдений, заданные как разделенная разделенными запятой парами, состоящая из 'Weights' и числовой вектор. Weights должна быть такой же длины, как и количество строк в X. Программа взвешивает наблюдения в каждой строке X использование соответствующего значения веса в Weights.

Веса нормированы до суммы 1.

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

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

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

Регрессионные потери, возвращенные как скалярное значение.

Примеры

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

В этом примере показано, как обучить регрессионую модель SVM, а затем вычислить среднюю квадратную ошибку реституции и нечувствительную к эпсилону ошибку.

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

load carsmall
rng default  % for reproducibility

Задайте Horsepower и Weight как переменные предиктора (X), и MPG как переменная отклика (Y).

X = [Horsepower,Weight];
Y = MPG;

Обучите линейную регрессионую модель SVM. Стандартизируйте данные.

mdl = fitrsvm(X,Y,'Standardize',true);

mdl является RegressionSVM модель.

Определите, насколько хорошо обученная модель обобщается до новых значений предиктора, оценив среднюю квадратную ошибку тестовой выборки и нечувствительную к эпсилону ошибку.

lossMSE = loss(mdl,X,Y)
lossEI = loss(mdl,X,Y,'LossFun','epsiloninsensitive')
lossMSE =

   17.0256


lossEI =

    2.2506

Подробнее о

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

Совет

  • Если mdl является перекрестно проверенным RegressionPartitionedSVM модель, использование kfoldLoss вместо loss для вычисления ошибки регрессии.

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

Введенный в R2015b