Потеря для перекрестной подтвержденной разделенной модели регрессии
возвращает потерю (среднеквадратическая ошибка), полученная перекрестной подтвержденной моделью L
= kfoldLoss(CVMdl
)CVMdl
регрессии. Для каждого сгиба,
kfoldLoss
вычисляет потерю для наблюдений сгиба валидации с помощью модели, обученной на наблюдениях учебного сгиба. CVMdl.X
и CVMdl.Y
содержите оба набора наблюдений.
возвращает потерю с дополнительными опциями, заданными одними или несколькими аргументами name-value. Например, можно задать пользовательскую функцию потерь.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
аргументы name-value при помощи аргумента значения имени OptimizeHyperparameters. Для примера смотрите, Оптимизируют GAM Используя OptimizeHyperparameters.
Загрузите 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
объектная функция.
Обучите модель регрессии использование функции, перечисленной в следующей таблице, и задайте одни из аргументов name-value перекрестной проверки для функции.
Модель регрессии | Функция |
---|---|
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
. Создание перекрестного подтвержденного древовидного объекта может сэкономить вам время, если вы планируете исследовать его несколько раз.
Указания и ограничения по применению:
Эта функция полностью поддерживает массивы графического процессора для объектов модели дерева регрессии, снабженных fitrtree
.
Для получения дополнительной информации смотрите функции MATLAB Запуска на графическом процессоре (Parallel Computing Toolbox).
kfoldPredict
| RegressionPartitionedModel
| RegressionPartitionedEnsemble
| RegressionPartitionedSVM
| RegressionPartitionedGAM
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.