Потеря для перекрестно проверенной секционированной регрессионой модели
возвращает потерю (среднюю квадратичную невязку), полученную перекрестной проверенной регрессионой моделью 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 - средняя ошибка по всем складкам, полученная с использованием только термина точка пересечения (константа). The (J+1) первый элемент 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 - средняя ошибка по всем складкам, полученная с помощью термина точка пересечения (константа) и всех деревьев предикторов на линейный термин. The (J+1) первый элемент 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
Типы данных: logical
'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 числовым вектором-1, содержащим потери для каждой складки, где k количество складок.
Если Mode является 'cumulative' и CVMdl является RegressionPartitionedEnsemble, затем L является min(CVMdl.NumTrainedPerFold)-by-1 числовой вектор-столбец. Каждый элемент j - это средняя потеря по всем складкам, которую функция получает с помощью ансамблей, обученных со слабыми учениками 1:j.
Если Mode является 'cumulative' и CVMdl является RegressionPartitionedGAM, тогда выход значение зависит от IncludeInteractions значение.
Если IncludeInteractions является false, затем L является (1 + min(NumTrainedPerFold.PredictorTrees))-by-1 числовой вектор-столбец. Первый элемент L - средняя потеря по всем складкам, которая получается с использованием только термина точка пересечения (константа). The (j + 1)первый элемент L - средняя потеря, полученная с использованием термина точки пересечения и первого j деревья предикторов на линейный член.
Если IncludeInteractions является true, затем L является (1 + min(NumTrainedPerFold.InteractionTrees))-by-1 числовой вектор-столбец. Первый элемент L - средняя потеря по всем складкам, полученная с помощью термина точка пересечения (константа) и всех деревьев предикторов на линейный термин. The (j + 1)первый элемент L - средняя потеря, полученная с помощью термина точки пересечения, всех деревьев предикторов на линейный термин и первого j деревья взаимодействия на срок взаимодействия.
Если вы хотите вычислить перекрестно проверенную потерю древовидной модели, можно избежать создания RegressionPartitionedModel объект по вызову cvloss. Создание перекрестно проверенного древовидного объекта может сэкономить вам время, если вы планируете рассмотреть его более одного раза.
kfoldPredict | RegressionPartitionedEnsemble | RegressionPartitionedGAM | RegressionPartitionedModel | RegressionPartitionedSVM
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.