Потеря для перекрестно проверенной секционированной регрессионной модели
возвращает потери (среднеквадратичную ошибку), полученные с помощью модели перекрестной регрессии 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 функция. Пример см. в разделе Оптимизация Cross-Validated GAM с использованием байесопта.
Загрузить 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) -й элемент 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) -й элемент 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-на-1 числовым вектором наблюдаемых ответов.
Yfit является n-на-1 числовым вектором прогнозируемых откликов.
W является n-на-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)-й элемент L - средняя потеря, полученная с использованием члена перехвата и первого j деревья предиктора на линейный член.
Если IncludeInteractions является true, то L является (1 + min(NumTrainedPerFold.InteractionTrees))-по-1 числовой вектор столбца. Первый элемент L - средняя потеря по всем складкам, которая получается с использованием члена перехвата (константы) и всех предикторных деревьев на линейный член. (j + 1)-й элемент L - средняя потеря, полученная с использованием члена перехвата, всех деревьев предиктора на линейный член, и первый j деревья взаимодействия по члену взаимодействия.
Если требуется вычислить перекрестно проверенную потерю древовидной модели, можно избежать построения RegressionPartitionedModel объект путем вызова cvloss. Создание объекта дерева с перекрестной проверкой может сэкономить время, если планируется проверить его несколько раз.
kfoldPredict | RegressionPartitionedEnsemble | RegressionPartitionedGAM | RegressionPartitionedModel | RegressionPartitionedSVM
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.