resubLoss

Класс: RegressionTree

Ошибка регрессии перезаменой

Синтаксис

L = resubLoss(tree)
L = resubLoss(tree,Name,Value)
L = resubLoss(tree,'Subtrees',subtreevector)
[L,se] = resubLoss(tree,'Subtrees',subtreevector)
[L,se,NLeaf] = resubLoss(tree,'Subtrees',subtreevector)
[L,se,NLeaf,bestlevel] = resubLoss(tree,'Subtrees',subtreevector)
[L,...] = resubLoss(tree,'Subtrees',subtreevector,Name,Value)

Описание

L = resubLoss(tree) возвращает потерю перезамены, означая потерю, вычисленную для данных это fitrtree используемый, чтобы создать tree.

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

L = resubLoss(tree,'Subtrees',subtreevector) возвращает вектор из среднеквадратических ошибок для деревьев в последовательности сокращения subtreevector.

[L,se] = resubLoss(tree,'Subtrees',subtreevector) возвращает вектор из стандартных погрешностей ошибок классификации.

[L,se,NLeaf] = resubLoss(tree,'Subtrees',subtreevector) возвращает вектор из количеств вершин в деревьях последовательности сокращения.

[L,se,NLeaf,bestlevel] = resubLoss(tree,'Subtrees',subtreevector) возвращает лучший уровень сокращения, как задано в TreeSize пара "имя-значение". По умолчанию, bestlevel уровень сокращения, который дает потерю в одном стандартном отклонении минимальной потери.

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

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

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

Дерево регрессии (RegressionTree объект модели) созданное использование fitrtree.

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

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

Функция потерь в виде указателя на функцию или 'mse' значение среднеквадратической ошибки.

Можно написать собственную функцию потерь в синтаксисе, описанном в Функциях потерь.

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

Name,Value аргументы сопоставили с сокращением поддеревьев:

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

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

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

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

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

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

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

Древовидный размер в виде одного из следующего:

  • 'se'loss возвращает самый высокий уровень сокращения с потерей в одном стандартном отклонении минимума (L + se, где L и se относитесь к наименьшему значению в Subtrees).

  • 'min'loss возвращает элемент Subtrees с самой маленькой потерей, обычно самый маленький элемент Subtrees.

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

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

Потеря регрессии (среднеквадратическая ошибка), вектор длина Subtrees. Значение ошибки зависит от значений в Weights и LossFun.

Стандартная погрешность потери, вектор длина Subtrees.

Количество листов (терминальные узлы) в сокращенных поддеревьях, вектор длина Subtrees.

Скаляр, значение которого зависит от TreeSize:

  • TreeSize = 'se'loss возвращает самый высокий уровень сокращения с потерей в одном стандартном отклонении минимума (L + se, где L и se относитесь к наименьшему значению в Subtrees).

  • TreeSize = 'min'loss возвращает элемент Subtrees с самой маленькой потерей, обычно самый маленький элемент Subtrees.

Примеры

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

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

load carsmall
X = [Displacement Horsepower Weight];

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

Mdl = fitrtree(X,MPG);

Вычислите перезамену MSE.

resubLoss(Mdl)
ans = 4.8952

Несокращенные деревья решений имеют тенденцию сверхсоответствовать. Один способ сбалансировать сложность модели и эффективность из выборки состоит в том, чтобы сократить дерево (или ограничить его рост) так, чтобы эффективность из выборки и в выборке была удовлетворительной.

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

load carsmall
X = [Displacement Horsepower Weight];
Y = MPG;

Разделите данные в обучение (50%) и валидацию (50%-е) наборы.

n = size(X,1);
rng(1) % For reproducibility
idxTrn = false(n,1);
idxTrn(randsample(n,round(0.5*n))) = true; % Training set logical indices 
idxVal = idxTrn == false;                  % Validation set logical indices

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

Mdl = fitrtree(X(idxTrn,:),Y(idxTrn));

Просмотрите дерево регрессии.

view(Mdl,'Mode','graph');

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

Дерево регрессии имеет семь уровней сокращения. Уровень 0 является полным, несокращенным деревом (как отображено). Уровень 7 является только корневым узлом (i.e., никакие разделения).

Исследуйте обучающую выборку MSE на каждое поддерево (или уровень сокращения), исключая высший уровень.

m = max(Mdl.PruneList) - 1;
trnLoss = resubLoss(Mdl,'SubTrees',0:m)
trnLoss = 7×1

    5.9789
    6.2768
    6.8316
    7.5209
    8.3951
   10.7452
   14.8445

  • MSE для полного, несокращенного дерева является приблизительно 6 модулями.

  • MSE для дерева, сокращенного к уровню 1, является приблизительно 6,3 модулями.

  • MSE для дерева, сокращенного к уровню 6 (i.e., пень), приблизительно 14,8 модулей.

Исследуйте выборку валидации MSE на каждом уровне, исключая высший уровень.

valLoss = loss(Mdl,X(idxVal,:),Y(idxVal),'SubTrees',0:m)
valLoss = 7×1

   32.1205
   31.5035
   32.0541
   30.8183
   26.3535
   30.0137
   38.4695

  • MSE для полного, несокращенного дерева (уровень 0) является приблизительно 32,1 модулями.

  • MSE для дерева, сокращенного к уровню 4, является приблизительно 26,4 модулями.

  • MSE для дерева, сокращенного к уровню 5, является приблизительно 30,0 модулями.

  • MSE для дерева, сокращенного к уровню 6 (i.e., пень), приблизительно 38,5 модулей.

Чтобы сбалансировать сложность модели и эффективность из выборки, считайте сокращение Mdl к уровню 4.

pruneMdl = prune(Mdl,'Level',4);
view(pruneMdl,'Mode','graph')

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

Больше о

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

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

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

| |