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

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

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

| | |