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

Дерево регрессии имеет семь уровней сокращения. Уровень 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')

Больше о

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

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

| |