Потеря для перекрестной подтвержденной разделенной модели регрессии
возвращает потерю (среднеквадратическая ошибка), полученная перекрестной подтвержденной моделью L
= kfoldLoss(CVMdl
)CVMdl
регрессии. Для каждого сгиба,
kfoldLoss
вычисляет потерю для наблюдений сгиба валидации с помощью модели, обученной на наблюдениях учебного сгиба. CVMdl.X
и CVMdl.Y
содержите оба набора наблюдений.
возвращает потерю с дополнительными опциями, заданными одним или несколькими аргументами значения имени. Например, можно задать пользовательскую функцию потерь.L
= kfoldLoss(CVMdl
,Name,Value
)
Найдите потерю перекрестной проверки для ансамбля регрессии carsmall
данные.
Загрузите carsmall
набор данных и избранное смещение, лошадиная сила и вес транспортного средства как предикторы.
load carsmall
X = [Displacement Horsepower Weight];
Обучите ансамбль деревьев регрессии.
rens = fitrensemble(X,MPG);
Создайте перекрестный подтвержденный ансамбль из rens
и найдите потерю перекрестной проверки k-сгиба.
rng(10,'twister') % For reproducibility cvrens = crossval(rens); L = kfoldLoss(cvrens)
L = 28.7114
Среднеквадратическая ошибка (MSE) является мерой качества модели. Исследуйте MSE на каждый сгиб перекрестной подтвержденной модели регрессии.
Загрузите carsmall
набор данных. Задайте предиктор X
и данные об ответе Y
.
load carsmall
X = [Cylinders Displacement Horsepower Weight];
Y = MPG;
Обучите перекрестную подтвержденную модель дерева регрессии. По умолчанию программное обеспечение реализует 10-кратную перекрестную проверку.
rng('default') % For reproducibility CVMdl = fitrtree(X,Y,'CrossVal','on');
Вычислите MSE для каждого сгиба. Визуализируйте распределение значений потерь при помощи диаграммы. Заметьте, что ни одно из значений не выброс.
losses = kfoldLoss(CVMdl,'Mode','individual')
losses = 10×1
42.5072
20.3995
22.3737
34.4255
40.8005
60.2755
19.5562
9.2060
29.0788
16.3386
boxchart(losses)
kfoldLoss
Обучите перекрестную подтвержденную обобщенную аддитивную модель (GAM) с 10 сгибами. Затем используйте kfoldLoss
вычислить совокупную потерю регрессии перекрестной проверки (среднеквадратические ошибки). Используйте ошибки определить оптимальное количество деревьев на предиктор (линейный член для предиктора) и оптимальное количество деревьев в период взаимодействия.
В качестве альтернативы можно найти оптимальные значения fitrgam
аргументы значения имени при помощи bayesopt
функция. Для примера смотрите, Оптимизируют перекрестный Подтвержденный GAM Используя bayesopt.
Загрузите patients
набор данных.
load patients
Составьте таблицу, которая содержит переменные предикторы (Age
, Diastolic
, Smoker
, Weight
, Gender
, и SelfAssessedHealthStatus
) и переменная отклика (Systolic
).
tbl = table(Age,Diastolic,Smoker,Weight,Gender,SelfAssessedHealthStatus,Systolic);
Создайте перекрестный подтвержденный GAM при помощи опции перекрестной проверки по умолчанию. Задайте 'CrossVal'
аргумент значения имени как 'on'
. Кроме того, задайте, чтобы включать 5 периодов взаимодействия.
rng('default') % For reproducibility CVMdl = fitrgam(tbl,'Systolic','CrossVal','on','Interactions',5);
Если вы задаете 'Mode'
как 'cumulative'
для kfoldLoss
, затем функция возвращает совокупные ошибки, которые являются средними погрешностями через все сгибы, полученные с помощью того же количества деревьев для каждого сгиба. Отобразите количество деревьев для каждого сгиба.
CVMdl.NumTrainedPerFold
ans = struct with fields:
PredictorTrees: [300 300 300 300 300 300 300 300 300 300]
InteractionTrees: [76 100 100 100 100 42 100 100 59 100]
kfoldLoss
может вычислить совокупные ошибки до 300 деревьев предиктора и 42 дерева взаимодействия.
Постройте совокупное, перекрестное подтвержденное 10-кратное, среднеквадратические ошибки. Задайте 'IncludeInteractions'
как false
исключить периоды взаимодействия из расчета.
L_noInteractions = kfoldLoss(CVMdl,'Mode','cumulative','IncludeInteractions',false); figure plot(0:min(CVMdl.NumTrainedPerFold.PredictorTrees),L_noInteractions)
Первый элемент L_noInteractions
средняя погрешность по всем сгибам, полученным с помощью только точку пересечения (постоянный) термин. (J+1
) элемент th L_noInteractions
полученное использование средней погрешности термина точки пересечения и первого J
деревья предиктора на линейный член. Графический вывод совокупной потери позволяет вам контролировать, как ошибка изменяется как количество деревьев предиктора в увеличениях GAM.
Найдите минимальную ошибку, и количество деревьев предиктора раньше достигало минимальной ошибки.
[M,I] = min(L_noInteractions)
M = 28.0506
I = 6
GAM достигает минимальной ошибки, когда это включает 5 деревьев предиктора.
Вычислите совокупную среднеквадратическую ошибку, использующую и линейные термины и периоды взаимодействия.
L = kfoldLoss(CVMdl,'Mode','cumulative'); figure plot(0:min(CVMdl.NumTrainedPerFold.InteractionTrees),L)
Первый элемент L
средняя погрешность по всем сгибам, полученным с помощью точки пересечения (постоянный) термин и все деревья предиктора на линейный член. (J+1
) элемент th L
полученное использование средней погрешности термина точки пересечения, всех деревьев предиктора на линейный член и первого J
деревья взаимодействия в период взаимодействия. График показывает, что ошибка увеличивается, когда периоды взаимодействия добавляются.
Если вы удовлетворены ошибкой, когда количество деревьев предиктора равняется 5, можно создать прогнозную модель по образованию одномерный GAM снова и определение 'NumTreesPerPredictor',5
без перекрестной проверки.
CVMdl
— Перекрестная подтвержденная разделенная модель регрессииRegressionPartitionedModel
возразите | RegressionPartitionedEnsemble
возразите | RegressionPartitionedGAM
возразите | RegressionPartitionedSVM
объектПерекрестная подтвержденная разделенная модель регрессии в виде RegressionPartitionedModel
, RegressionPartitionedEnsemble
, RegressionPartitionedGAM
, или RegressionPartitionedSVM
объект. Можно создать двумя способами:
Передайте обученную модель регрессии, перечисленную в следующей таблице к crossval
объектная функция.
Обучите модель регрессии использование функции, перечисленной в следующей таблице, и задайте один из аргументов значения имени перекрестной проверки для функции.
Модель регрессии | Функция |
---|---|
RegressionEnsemble | fitrensemble |
RegressionGAM | fitrgam |
RegressionGP | fitrgp |
RegressionNeuralNetwork | fitrnet |
RegressionSVM | fitrsvm |
RegressionTree | fitrtree |
Задайте дополнительные разделенные запятой пары Name,Value
аргументы. Name
имя аргумента и Value
соответствующее значение. Name
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN
.
kfoldLoss(CVMdl,'Folds',[1 2 3 5])
задает, чтобы использовать первые, вторые, третьи, и пятые сгибы, чтобы вычислить среднеквадратическую ошибку, но исключить четвертый сгиб.'Folds'
— Сверните индексы, чтобы использовать1:CVMdl.KFold
(значение по умолчанию) | положительный целочисленный векторСверните индексы, чтобы использовать в виде положительного целочисленного вектора. Элементы Folds
должен быть в диапазоне от 1
к CVMdl.KFold
.
Программное обеспечение использует только сгибы, заданные в Folds
.
Пример: 'Folds',[1 4 10]
Типы данных: single
| double
'IncludeInteractions'
— Отметьте, чтобы включать периоды взаимодействияtrue
| false
Отметьте, чтобы включать периоды взаимодействия модели в виде true
или false
. Этот аргумент допустим только для обобщенной аддитивной модели (GAM). Таким образом, можно задать этот аргумент только когда CVMdl
RegressionPartitionedGAM
.
Значением по умолчанию является true
если модели в CVMdl
(CVMdl.Trained
) содержите периоды взаимодействия. Значением должен быть false
если модели не содержат периоды взаимодействия.
Пример: 'IncludeInteractions',false
Типы данных: логический
'LossFun'
— Функция потерь'mse'
(значение по умолчанию) | указатель на функциюФункция потерь в виде 'mse'
или указатель на функцию.
Задайте встроенную функцию 'mse'
. В этом случае функция потерь является среднеквадратической ошибкой.
Задайте свою собственную функцию с помощью обозначения указателя на функцию.
Примите, что n является количеством наблюдений в обучающих данных (CVMdl.NumObservations
). Ваша функция должна иметь подпись lossvalue =
, где:lossfun
(Y, Yfit, W)
Выходной аргумент lossvalue
скаляр.
Вы задаете имя функции (lossfun
).
Y
n-by-1 числовой вектор из наблюдаемых ответов.
Yfit
n-by-1 числовой вектор из предсказанных ответов.
W
n-by-1 числовой вектор из весов наблюдения.
Задайте свое использование функции 'LossFun', @
.lossfun
Типы данных: char |
string
| function_handle
'Mode'
— Уровень агрегации для выхода'average'
(значение по умолчанию) | 'individual'
| 'cumulative'
Уровень агрегации для выхода в виде 'average'
, 'individual'
, или 'cumulative'
.
Значение | Описание |
---|---|
'average' | Выход является скалярным средним значением по всем сгибам. |
'individual' | Выход является вектором из длины k, содержащий одно значение на сгиб, где k является количеством сгибов. |
'cumulative' | Примечание Если вы хотите задать это значение,
|
Пример: 'Mode','individual'
L
— ПотеряПотеря, возвращенная в виде числа или числового вектор-столбца.
По умолчанию потеря является среднеквадратической ошибкой между наблюдениями сгиба валидации и предсказаниями, сделанными с моделью регрессии, обученной на наблюдениях учебного сгиба.
Если Mode
'average'
, затем L
средняя потеря по всем сгибам.
Если Mode
'individual'
, затем L
k-by-1 числовой вектор-столбец, содержащий потерю для каждого сгиба, где k является количеством сгибов.
Если Mode
'cumulative'
и CVMdl
RegressionPartitionedEnsemble
, затем L
min(CVMdl.NumTrainedPerFold)
- 1 числовой вектор-столбец. Каждый элемент j
средняя потеря по всем сгибам, что функция получает ансамбли использования, обученные со слабыми учениками 1:j
.
Если Mode
'cumulative'
и CVMdl
RegressionPartitionedGAM
, затем выходное значение зависит от IncludeInteractions
значение.
Если IncludeInteractions
false
, затем L
(1 + min(NumTrainedPerFold.PredictorTrees))
- 1 числовой вектор-столбец. Первый элемент L
средняя потеря по всем сгибам, которая получена с помощью только точку пересечения (постоянный) термин. (j + 1)
элемент th L
полученное использование средней потери термина точки пересечения и первого j
деревья предиктора на линейный член.
Если IncludeInteractions
true
, затем L
(1 + min(NumTrainedPerFold.InteractionTrees))
- 1 числовой вектор-столбец. Первый элемент L
средняя потеря по всем сгибам, которая получена с помощью точки пересечения (постоянный) термин и все деревья предиктора на линейный член. (j + 1)
элемент th L
полученное использование средней потери термина точки пересечения, всех деревьев предиктора на линейный член и первого j
деревья взаимодействия в период взаимодействия.
Если вы хотите вычислить перекрестную подтвержденную потерю древовидной модели, можно постараться не создавать RegressionPartitionedModel
объект путем вызова cvloss
. Создание перекрестного подтвержденного древовидного объекта может сэкономить вам время, если вы планируете исследовать его несколько раз.
kfoldPredict
| RegressionPartitionedEnsemble
| RegressionPartitionedGAM
| RegressionPartitionedModel
| RegressionPartitionedSVM
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.