kfoldLoss

Потеря регрессии для перекрестной подтвержденной модели регрессии ядра

Синтаксис

L = kfoldLoss(CVMdl)
L = kfoldLoss(CVMdl,Name,Value)

Описание

пример

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

L = kfoldLoss(CVMdl,Name,Value) возвращает среднеквадратическую ошибку (MSE) с дополнительными опциями, заданными одним или несколькими аргументами пары "имя-значение". Например, можно задать функцию потерь регрессии или который сворачивается, чтобы использовать для вычисления потерь.

Примеры

свернуть все

Моделируйте выборочные данные:

rng(0,'twister'); % For reproducibility
n = 1000;
x = linspace(-10,10,n)';
y = 1 + x*2e-2 + sin(x)./x + 0.2*randn(n,1);

Перекрестный подтвердите модель регрессии ядра.

CVMdl = fitrkernel(x,y,'Kfold',5);

fitrkernel реализует 5-кратную перекрестную проверку. CVMdl является моделью RegressionPartitionedKernel. Это содержит свойство Trained, которое является массивом ячеек 5 на 1, содержащим 5 моделей RegressionKernel, что программное обеспечение обучило использование набора обучающих данных.

Вычислите нечувствительную к эпсилону потерю для каждого сгиба для наблюдений, что fitrkernel не использовал в обучении сгибы.

L = kfoldLoss(CVMdl,'LossFun','epsiloninsensitive','Mode','individual')
L = 5×1

    0.2812
    0.3223
    0.3073
    0.3117
    0.2576

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

свернуть все

Перекрестная подтвержденная модель регрессии ядра, заданная как объект модели RegressionPartitionedKernel. Можно создать модель RegressionPartitionedKernel с помощью fitrkernel и задав любой из аргументов пары "имя-значение" перекрестной проверки, например, CrossVal.

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

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: 'LossFun','epsiloninsensitive','Mode','individual' задает kfoldLoss, чтобы возвратить нечувствительную к эпсилону потерю для каждого сгиба.

Сверните индексы, чтобы использовать для прогноза ответа, заданного как пара, разделенная запятой, состоящая из 'Folds' и числовой вектор положительных целых чисел. Элементы Folds должны колебаться от 1 до CVMdl.KFold.

Пример: 'Folds',[1 4 10]

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

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

  • В следующей таблице перечислены доступные функции потерь. Задайте тот с помощью его соответствующего вектора символов или представьте скаляр в виде строки. Кроме того, в таблице, f(x)=xβ+b.

    • β является вектором коэффициентов p.

    • x является наблюдением от переменных прогноза p.

    • b является скалярным смещением.

    ЗначениеОписание
    'epsiloninsensitive'Нечувствительная к эпсилону потеря: [y,f(x)]=max [0,|yf(x)|ε]
    'mse'MSE: [y,f(x)]=[yf(x)]2

    'epsiloninsensitive' подходит для учеников SVM только.

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

    Примите, что n является количеством наблюдений в X. Ваша функция должна иметь эту подпись

    lossvalue = lossfun(Y,Yhat,W)
    где:

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

    • Вы задаете имя функции (lossfun).

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

    • Yhat является n - размерный вектор предсказанных ответов, который подобен выводу predict.

    • W является n-by-1 числовой вектор весов наблюдения.

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

Уровень агрегации потерь, заданный как пара, разделенная запятой, состоящая из 'Mode' и 'average' или 'individual'.

ЗначениеОписание
'average'Возвращает потери, усредненные по всем сгибам
'individual'Возвращает потери для каждого сгиба

Пример: 'Mode','individual'

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

свернуть все

Перекрестные подтвержденные потери регрессии, возвращенные в виде числа или вектора. Интерпретация L зависит от LossFun.

  • Если Mode является 'average', то L является скаляром.

  • В противном случае L является k-by-1 вектор, где k является количеством сгибов. L(j) является средней потерей регрессии по сгибу j.

Чтобы оценить L, kfoldLoss использует данные, которые создали CVMdl.

Введенный в R2018b