loss

Описание

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

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

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

Вызвать Subtrees, свойства PruneList и PruneAlpha из tree mustBeNonempty. Другими словами, вырастите 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. Если вы включаете LossFunL отражает потерю, вычисленную с 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 является только корневым узлом (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 and other objects of type uimenu, uicontrol. The axes contains 15 objects of type line, text.

Больше о

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

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

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

|