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) крест подтверждает с дополнительными опциями, заданными одним или несколькими Name,Value парные аргументы. Можно задать несколько аргументов пары "имя-значение" в любом порядке как Name1,Value1,…,NameN,ValueN.

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

развернуть все

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

Аргументы name-value

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

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

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

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

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

Вызвать Subtrees, свойства PruneList и PruneAlpha из tree mustBeNonempty. Другими словами, вырастите 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 object and other objects of type uimenu, uicontrol. The axes object 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 object and other objects of type uimenu, uicontrol. The axes object contains 12 objects of type line, text.

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

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

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

Расширенные возможности

Смотрите также

| | |