exponenta event banner

потеря

Описание

L = loss(tree,tbl,ResponseVarName) возвращает среднюю квадратичную ошибку между предсказаниями tree к данным в tbl, по сравнению с истинными ответами tbl.ResponseVarName.

L = loss(tree,x,y) возвращает среднюю квадратичную ошибку между предсказаниями tree к данным в x, по сравнению с истинными ответами y.

L = loss(___,Name,Value) вычисляет ошибку в прогнозе с дополнительными опциями, заданными одним или несколькими Name,Value парные аргументы, использующие любой из предыдущих синтаксисов.

[L,se,NLeaf,bestlevel] = loss(___) также возвращает стандартную ошибку потери (se), количество листьев (конечных узлов) в дереве (NLeaf) и оптимальный уровень обрезки для tree (bestlevel).

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

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

Обученное дерево регрессии, указанное как RegressionTree объект, построенный fitrtree или CompactRegressionTree объект, построенный compact.

Предикторные значения, заданные как матрица значений с плавающей запятой. Каждый столбец x представляет одну переменную, а каждая строка представляет одно наблюдение.

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

Имя переменной ответа, указанное как имя переменной в tbl.

Необходимо указать ResponseVarName в виде вектора символов или строкового скаляра. Например, если переменная ответа y хранится как tbl.y, затем укажите ResponseVarName как 'y'. В противном случае программа обрабатывает все столбцы tbl, в том числе y, в качестве предикторов при обучении модели.

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

Данные ответа, указанные как числовой вектор столбца с тем же количеством строк, что и x. Каждая запись в y является ответом на данные в соответствующей строке x.

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

Аргументы пары «имя-значение»

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

Функция потерь, заданная как разделенная запятыми пара, состоящая из 'LossFun' и дескриптор функции для потери, или 'mse' представляет собой среднеквадратичную ошибку. При передаче дескриптора функции fun, loss требования fun как:

fun(Y,Yfit,W)
  • Y - вектор истинных ответов.

  • Yfit - вектор прогнозируемых ответов.

  • W - вес наблюдения. Если вы проходите W, элементы нормализуются для суммирования 1.

Все векторы имеют то же количество строк, что и Y.

Пример: 'LossFun','mse'

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

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

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

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

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

Призвать Subtrees, свойства PruneList и PruneAlpha из tree должен быть непустым. Другими словами, расти tree путем установки 'Prune','on'или путем обрезки tree использование prune.

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

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

Размер дерева, указанный как разделенная запятыми пара, состоящая из 'TreeSize' и одно из следующих:

  • 'se'loss прибыль bestlevel это соответствует наименьшему дереву, среднеквадратичная ошибка (MSE) которого находится в пределах одной стандартной ошибки минимального MSE.

  • 'min'loss прибыль bestlevel соответствует минимальному дереву MSE.

Пример: 'TreeSize','min'

Веса наблюдения, указанные как разделенная запятыми пара, состоящая из 'Weights' и вектор скалярных значений. Программа взвешивает наблюдения в каждой строке x или tbl с соответствующим значением в Weights. Размер Weights должно равняться количеству строк в x или tbl.

Если входные данные указаны как таблица tbl, то Weights может быть именем переменной в tbl содержит числовой вектор. В этом случае необходимо указать Weights как имя переменной. Например, если весовые коэффициенты вектора W хранится как tbl.W, затем укажите Weights как 'W'. В противном случае программа обрабатывает все столбцы tbl, в том числе W, в качестве предикторов при обучении модели.

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

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

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

Ошибка классификации, возвращенная в виде вектора длина Subtrees. Погрешность для каждого дерева - это среднеквадратичная погрешность, взвешенная по Weights. Если включить LossFun, L отражает потери, рассчитанные с помощью LossFun.

Стандартная ошибка потери, возвращаемая в виде вектора длина Subtrees.

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

Лучший уровень отсечения, определенный в TreeSize пара имя-значение, возвращаемая как скаляр, значение которого зависит от 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];

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

tree = fitrtree(X,MPG);

Оценка MSE в выборке.

L = loss(tree,X,MPG)
L = 4.8952

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

load carsmall
X = [Displacement Horsepower Weight];

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

Mdl = fitrtree(X,MPG);

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

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

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

Найдите лучший уровень отсечения, который дает оптимальные потери в выборке.

[L,se,NLeaf,bestLevel] = loss(Mdl,X,MPG,'Subtrees','all');
bestLevel
bestLevel = 1

Лучшим уровнем отсечения является уровень 1.

Обрезать дерево до уровня 1.

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

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

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

Загрузить 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.

Подробнее

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

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

См. также

|