cvloss

Класс: RegressionTree

Ошибка регрессии путем перекрестной валидации

Синтаксис

E = cvloss(tree)
[E,SE] = cvloss(tree)
[E,SE,Nleaf] = cvloss(tree)
[E,SE,Nleaf,BestLevel] = cvloss(tree)
[E,...] = cvloss(tree,Name,Value)

Описание

E = cvloss(tree) возвращает перекрестно проверенную ошибку регрессии (потерю) для tree, дерево регрессии.

[E,SE] = cvloss(tree) возвращает стандартную ошибку E.

[E,SE,Nleaf] = cvloss(tree) возвращает количество листьев (терминальных узлов) в tree.

[E,SE,Nleaf,BestLevel] = cvloss(tree) возвращает оптимальный уровень обрезки для tree.

[E,...] = cvloss(tree,Name,Value) cross проверяет с дополнительными опциями, заданными одним или несколькими Name,Value аргументы в виде пар. Можно задать несколько аргументы пары "имя-значение" в любом порядке как Name1,Value1,…,NameN,ValueN.

Входные параметры

расширить все

Обученное дерево регрессии, заданное как RegressionTree объект, созданный с использованием fitrtree.

Аргументы в виде пар имя-значение

Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

Уровень обрезки, заданный как разделенная разделенными запятой парами, состоящая из 'Subtrees' и вектор неотрицательных целых чисел в порядке возрастания или 'all'.

Если вы задаете вектор, то все элементы должны быть как минимум 0 и самое большее max(tree.PruneList). 0 указывает полное, несрезанное дерево и max(tree.PruneList) указывает полностью обрезанное дерево (т.е. только корневой узел).

Если вы задаете 'all', затем cvloss работает со всеми поддеревьями (т.е. со всей последовательностью обрезки). Эта спецификация эквивалентна использованию 0:max(tree.PruneList).

cvloss черносливы tree каждому уровню, указанному в Subtrees, а затем оценивает соответствующие выходные аргументы. Размер Subtrees определяет размер некоторых выходных аргументов.

Для вызова Subtrees, свойства PruneList и PruneAlpha от tree должно быть непустым. Другими словами, расти tree путем установки 'Prune','on', или путем обрезки tree использование prune.

Пример: 'Subtrees','all'

Типы данных: single | double | char | string

Размер дерева, заданный как разделенная разделенными запятой парами, состоящая из 'TreeSize' и одно из следующих:

  • 'se'cvloss использует самое маленькое дерево, стоимость которого находится в пределах одной стандартной ошибки минимальной стоимости.

  • 'min'cvloss использует дерево минимальных затрат.

Количество складок для использования в перекрестном проверенном дереве, заданное как разделенная разделенными запятой парами, состоящая из 'KFold' и положительное целое значение, больше 1.

Пример: 'KFold',8

Выходные аргументы

расширить все

Перекрестная валидация, средняя квадратичная невязка (потеря), возвращается как вектор или скаляр в зависимости от настройки Subtrees Пара "имя-значение".

Стандартная ошибка E, возвращается как вектор или скаляр в зависимости от настройки Subtrees Пара "имя-значение".

Количество листовых узлов в tree, возвращается как вектор или скаляр в зависимости от настройки Subtrees Пара "имя-значение". Листовые узлы являются терминальными узлами, которые дают отклики, а не расщепления.

Лучший уровень обрезки, как определено в TreeSize Пара "имя-значение", возвращенный как скаляр, значение которого зависит от TreeSize:

  • Если TreeSize является 'se', затем BestLevel - самый большой уровень обрезки, который достигает значения E в пределах SE минимальной ошибки.

  • Если TreeSize является 'min', затем BestLevel - наименьшее значение в Subtrees.

Примеры

расширить все

Вычислите ошибку перекрестной проверки для дерева регрессии по умолчанию.

Загрузите carsmall набор данных. Рассмотрим Displacement, Horsepower, и Weight как предикторы отклика MPG.

load carsmall
X = [Displacement Horsepower Weight];

Вырастите дерево регрессии, используя весь набор данных.

Mdl = fitrtree(X,MPG);

Вычислите ошибку перекрестной проверки.

rng(1); % For reproducibility
E = cvloss(Mdl)
E = 27.6976

E является 10-кратным взвешенным, средним MSE (взвешенным по количеству тестовых наблюдений в складках).

Примените перекрестную валидацию k-fold, чтобы найти лучший уровень для обрезки дерева регрессии для всех его поддеревьев.

Загрузите carsmall набор данных. Рассмотрим Displacement, Horsepower, и Weight как предикторы отклика MPG.

load carsmall
X = [Displacement Horsepower Weight];

Вырастите дерево регрессии, используя весь набор данных. Просмотрите получившееся дерево.

Mdl = fitrtree(X,MPG);
view(Mdl,'Mode','graph')

Figure Regression tree viewer contains an axes and other objects of type uimenu, uicontrol. The axes contains 60 objects of type line, text.

Вычислите 5-кратную ошибку перекрестной проверки для каждого поддерева, за исключением первых двух самых низких и самых высоких уровней обрезки. Задайте, чтобы вернуть лучший уровень обрезки по всем поддеревьям.

rng(1); % For reproducibility
m = max(Mdl.PruneList) - 1
m = 15
[~,~,~,bestLevel] = cvloss(Mdl,'SubTrees',2:m,'KFold',5)
bestLevel = 14

Из 15 уровни обрезки, лучший уровень обрезки 14.

Обрезать дерево до наилучшего уровня. Просмотрите получившееся дерево.

MdlPrune = prune(Mdl,'Level',bestLevel);
view(MdlPrune,'Mode','graph')

Figure Regression tree viewer contains an axes and other objects of type uimenu, uicontrol. The axes contains 12 objects of type line, text.

Альтернативы

Можно создать перекрестно проверенную древовидную модель с crossval, и звоните kfoldLoss вместо cvloss. Если вы собираетесь изучить перекрестное дерево более одного раза, то альтернатива может сэкономить время.

Однако в отличие от cvloss, kfoldLoss не возвращается SE, Nleaf, или BestLevel.

См. также

| | |