exponenta event banner

resubLoss

Класс: Дерево правил

Регрессионная ошибка при повторном замещении

Синтаксис

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) указывает полностью отсеченное дерево (т.е. только корневой узел).

При указании '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.

Подробнее

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

См. также

| |