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' означает среднюю квадратичную невязку.

Вы можете записать свою собственную функцию потерь в синтаксис, описанный в Loss Functions.

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

Name,Value аргументы, связанные с обрезкой поддеревьев:

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

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

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

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

Для вызова Subtrees, свойства PruneList и PruneAlpha от tree должно быть непустым. Другими словами, расти 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 and other objects of type uimenu, uicontrol. The axes contains 27 objects of type line, text.

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

Исследуйте обучающую выборку 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 (т.е. пня), составляет около 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 (т.е. пня), составляет около 38,5 модули.

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

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

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

Подробнее о

расширить все

См. также

| |