потеря

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

Синтаксис

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 должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

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

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

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

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

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

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

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

    • Yfit является n-by-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