exponenta event banner

cvloss

Класс: Дерево правил

Ошибка регрессии при перекрестной проверке

Синтаксис

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-кратную перекрестную проверку, чтобы найти лучший уровень для отсечения дерева регрессии для всех его поддеревьев.

Загрузить 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.

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

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.

См. также

| | |