kfoldLoss

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

Описание

пример

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 - имя аргумента и 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