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

Если вы задаете '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');

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

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

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

Сократите дерево к уровню 1.

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

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

Загрузите 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 является только корневым узлом (т.е. никакие разделения).

Исследуйте обучающую выборку 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')

Больше о

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

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

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

|