Потеря регрессии для наблюдений, не используемых в обучении
L = kfoldLoss(CVMdl)
L = kfoldLoss(CVMdl,Name,Value)
Описание
возвращает перекрестную подтвержденную среднеквадратическую ошибку (MSE), полученную перекрестным подтвержденным, моделью L
= kfoldLoss(CVMdl
)CVMdl
линейной регрессии. Таким образом, для каждого сгиба kfoldLoss
оценивает потерю регрессии для наблюдений, что это протягивает, когда это обучает использование всех других наблюдений.
L
содержит потерю регрессии для каждой силы регуляризации в моделях линейной регрессии, которые составляют CVMdl
.
дополнительные опции использования заданы одним или несколькими аргументами пары L
= kfoldLoss(CVMdl
,Name,Value
)Name,Value
. Например, укажите который сгибы использовать для вычисления потерь или задать функцию потерь регрессии.
CVMdl
— Перекрестный подтвержденный, модель линейной регрессииRegressionPartitionedLinear
Перекрестный подтвержденный, модель линейной регрессии, заданная как объект модели RegressionPartitionedLinear
. Можно создать модель RegressionPartitionedLinear
с помощью fitrlinear
и задав любой тот перекрестной проверки, аргументов пары "имя-значение", например, CrossVal
.
Чтобы получить оценки, kfoldLoss применяется, те же данные раньше перекрестный подтверждали модель линейной регрессии (X
и Y
).
Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми.
Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение.
Name
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.
'Folds'
— Сверните индексы, чтобы использовать для прогноза ответа1:CVMdl.KFold
(значение по умолчанию) | числовой вектор положительных целых чиселСверните индексы, чтобы использовать для прогноза ответа, заданного как пара, разделенная запятой, состоящая из 'Folds'
и числовой вектор положительных целых чисел. Элементы Folds
должны колебаться от 1
до CVMdl.KFold
.
Пример: 'Folds',[1 4 10]
Типы данных: single | double
'LossFun'
— Функция потерь'mse'
(значение по умолчанию) | 'epsiloninsensitive'
| указатель на функциюФункция потерь, заданная как пара, разделенная запятой, состоящая из 'LossFun'
и встроенного имени функции потерь или указателя на функцию.
В следующей таблице перечислены доступные функции потерь. Задайте тот с помощью его соответствующего вектора символов или представьте скаляр в виде строки. Кроме того, в таблице,
β является вектором коэффициентов p.
x является наблюдением от переменных прогноза p.
b является скалярным смещением.
Значение | Описание |
---|---|
'epsiloninsensitive' | Нечувствительная к эпсилону потеря: |
'mse' | MSE: |
'epsiloninsensitive'
подходит для учеников SVM только.
Задайте свою собственную функцию с помощью обозначения указателя на функцию.
Позвольте n
быть количеством наблюдений в X
. Ваша функция должна иметь эту подпись
lossvalue = lossfun
(Y,Yhat,W)
Выходным аргументом lossvalue
является скаляр.
Вы выбираете имя функции (lossfun
).
Y
является n
- размерный вектор наблюдаемых ответов. kfoldLoss
передает входной параметр Y
в для Y
.
Yhat
является n
- размерный вектор предсказанных ответов, который подобен выводу predict
.
W
является n
-by-1 числовой вектор весов наблюдения.
Задайте свою функцию с помощью
.'LossFun',@lossfun
Типы данных: char
| string
| function_handle
режим
Уровень агрегации потерь'average'
(значение по умолчанию) | 'individual'
Уровень агрегации потерь, заданный как пара, разделенная запятой, состоящая из 'Mode'
и 'average'
или 'individual'
.
Значение | Описание |
---|---|
'average' | Возвращает потери, усредненные по всем сгибам |
'individual' | Возвращает потери для каждого сгиба |
Пример: 'Mode','individual'
L
Перекрестные подтвержденные потери регрессииПерекрестные подтвержденные потери регрессии, возвращенные в виде числа, вектора или матрицы. Интерпретация L
зависит от LossFun
.
Позволенный R
быть количеством сильных мест регуляризации является перекрестными подтвержденными моделями (сохраненный в numel(CVMdl.Trained{1}.Lambda)
) и F
быть количеством сгибов (сохраненный в CVMdl.KFold
).
Если Mode
является 'average'
, то L
является 1 R
вектором.
является средней потерей регрессии по всем сгибам перекрестной подтвержденной модели, которая использует силу регуляризации L(j)
j
.
В противном случае L
является F
-by-R
матрица.
является потерей регрессии для сгиба L(i,j)
i
перекрестной подтвержденной модели, которая использует силу регуляризации j
.
Чтобы оценить L
, kfoldLoss
использует данные, которые создали CVMdl
(см. X
и Y
).
Моделируйте 10 000 наблюдений из этой модели
10000 1000 разреженная матрица с 10%-ми ненулевыми стандартными нормальными элементами.
e является случайной нормальной ошибкой со средним значением 0 и стандартным отклонением 0.3.
rng(1) % For reproducibility
n = 1e4;
d = 1e3;
nz = 0.1;
X = sprandn(n,d,nz);
Y = X(:,100) + 2*X(:,200) + 0.3*randn(n,1);
Перекрестный подтвердите модель линейной регрессии, использующую учеников SVM.
rng(1); % For reproducibility CVMdl = fitrlinear(X,Y,'CrossVal','on');
CVMdl
является моделью RegressionPartitionedLinear
. По умолчанию программное обеспечение реализует 10-кратную перекрестную проверку. Можно изменить количество сгибов с помощью аргумента пары "имя-значение" 'KFold'
.
Оцените среднее значение демонстрационного тестом MSEs.
mse = kfoldLoss(CVMdl)
mse = 0.1735
Также можно получить MSEs на сгиб путем определения пары "имя-значение" 'Mode','individual'
в kfoldLoss
.
Моделируйте данные как в Оценочной Среднеквадратической ошибке k-сгиба.
rng(1) % For reproducibility n = 1e4; d = 1e3; nz = 0.1; X = sprandn(n,d,nz); Y = X(:,100) + 2*X(:,200) + 0.3*randn(n,1); X = X'; % Put observations in columns for faster training
Перекрестный подтвердите модель линейной регрессии использование 10-кратной перекрестной проверки. Оптимизируйте использование целевой функции SpaRSA.
CVMdl = fitrlinear(X,Y,'CrossVal','on','ObservationsIn','columns',... 'Solver','sparsa');
CVMdl
является моделью RegressionPartitionedLinear
. Это содержит свойство Trained
, которое является массивом ячеек 10 на 1, содержащим модели RegressionLinear
, что программное обеспечение обучило использование набора обучающих данных.
Создайте анонимную функцию, которая измеряет утрату Хубера ( = 1), то есть,
где
невязка для наблюдения j. Пользовательские функции потерь должны быть написаны в конкретной форме. Для правил о записи пользовательской функции потерь смотрите аргумент пары "имя-значение" 'LossFun'
.
huberloss = @(Y,Yhat,W)sum(W.*((0.5*(abs(Y-Yhat)<=1).*(Y-Yhat).^2) + ...
((abs(Y-Yhat)>1).*abs(Y-Yhat)-0.5)))/sum(W);
Оцените среднее значение утрата Хубера по сгибам. Кроме того, получите утрату Хубера для каждого сгиба.
mseAve = kfoldLoss(CVMdl,'LossFun',huberloss)
mseAve = -0.4447
mseFold = kfoldLoss(CVMdl,'LossFun',huberloss,'Mode','individual')
mseFold = 10×1
-0.4454
-0.4473
-0.4452
-0.4469
-0.4434
-0.4427
-0.4471
-0.4430
-0.4438
-0.4426
Чтобы определить хорошую силу штрафа лассо для модели линейной регрессии, которая использует наименьшие квадраты, реализуйте 5-кратную перекрестную проверку.
Моделируйте 10 000 наблюдений из этой модели
10000 1000 разреженная матрица с 10%-ми ненулевыми стандартными нормальными элементами.
e является случайной нормальной ошибкой со средним значением 0 и стандартным отклонением 0.3.
rng(1) % For reproducibility
n = 1e4;
d = 1e3;
nz = 0.1;
X = sprandn(n,d,nz);
Y = X(:,100) + 2*X(:,200) + 0.3*randn(n,1);
Создайте набор 15 логарифмически распределенных сильных мест регуляризации от через .
Lambda = logspace(-5,-1,15);
Перекрестный подтвердите модели. Чтобы увеличить скорость выполнения, транспонируйте данные о предикторе и укажите, что наблюдения находятся в столбцах. Оптимизируйте использование целевой функции SpaRSA.
X = X'; CVMdl = fitrlinear(X,Y,'ObservationsIn','columns','KFold',5,'Lambda',Lambda,... 'Learner','leastsquares','Solver','sparsa','Regularization','lasso'); numCLModels = numel(CVMdl.Trained)
numCLModels = 5
CVMdl
является моделью RegressionPartitionedLinear
. Поскольку fitrlinear
реализует 5-кратную перекрестную проверку, CVMdl
содержит 5 моделей RegressionLinear
, которые программное обеспечение обучает на каждом сгибе.
Отобразите первую обученную модель линейной регрессии.
Mdl1 = CVMdl.Trained{1}
Mdl1 = RegressionLinear ResponseName: 'Y' ResponseTransform: 'none' Beta: [1000x15 double] Bias: [1x15 double] Lambda: [1x15 double] Learner: 'leastsquares' Properties, Methods
Mdl1
является объектом модели RegressionLinear
. fitrlinear
создал Mdl1
по образованию на первых четырех сгибах. Поскольку Lambda
является последовательностью сильных мест регуляризации, можно думать о Mdl1
как о 15 моделях, один для каждой силы регуляризации в Lambda
.
Оцените перекрестный подтвержденный MSE.
mse = kfoldLoss(CVMdl);
Более высокие значения Lambda
приводят к разреженности переменной прогноза, которая является хорошим качеством модели регрессии. Для каждой силы регуляризации обучите модель линейной регрессии использование целого набора данных и тех же опций как тогда, когда вы перекрестный подтвержденный модели. Определите количество ненулевых коэффициентов на модель.
Mdl = fitrlinear(X,Y,'ObservationsIn','columns','Lambda',Lambda,... 'Learner','leastsquares','Solver','sparsa','Regularization','lasso'); numNZCoeff = sum(Mdl.Beta~=0);
В той же фигуре постройте перекрестный подтвержденный MSE и частоту ненулевых коэффициентов для каждой силы регуляризации. Постройте все переменные на логарифмической шкале.
figure [h,hL1,hL2] = plotyy(log10(Lambda),log10(mse),... log10(Lambda),log10(numNZCoeff)); hL1.Marker = 'o'; hL2.Marker = 'o'; ylabel(h(1),'log_{10} MSE') ylabel(h(2),'log_{10} nonzero-coefficient frequency') xlabel('log_{10} Lambda') hold off
Выберите индекс силы регуляризации, которая балансирует разреженность переменной прогноза и низкий MSE (например, Lambda(10)
).
idxFinal = 10;
Извлеките модель с соответствием минимальному MSE.
MdlFinal = selectModels(Mdl,idxFinal)
MdlFinal = RegressionLinear ResponseName: 'Y' ResponseTransform: 'none' Beta: [1000x1 double] Bias: -0.0050 Lambda: 0.0037 Learner: 'leastsquares' Properties, Methods
idxNZCoeff = find(MdlFinal.Beta~=0)
idxNZCoeff = 2×1
100
200
EstCoeff = Mdl.Beta(idxNZCoeff)
EstCoeff = 2×1
1.0051
1.9965
MdlFinal
является моделью RegressionLinear
с одной силой регуляризации. Ненулевой содействующий EstCoeff
близко к коэффициентам, которые моделировали данные.
RegressionLinear
| RegressionPartitionedLinear
| kfoldPredict
| loss
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.