exponenta event banner

потеря

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

Синтаксис

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-на-1 числовым вектором наблюдаемых значений отклика.

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

    • W является n-на-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