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

Вычислите 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')

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

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

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

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

| | |