resubPredict

Класс: RegressionTree

Предскажите ответ перезамены дерева

Синтаксис

Yfit = resubPredict(tree)
[Yfit,node] = resubPredict(tree)
[Yfit,node] = resubPredict(tree,Name,Value)

Описание

Yfit = resubPredict(tree) возвращает ответы, tree предсказывает для данных tree.X. Yfit является прогнозами tree на данных, что fitrtree раньше создавал tree.

[Yfit,node] = resubPredict(tree) возвращает количества узла tree для данных, которыми повторно заменяют.

[Yfit,node] = resubPredict(tree,Name,Value) предсказывает с дополнительными опциями, заданными одним или несколькими аргументами пары Name,Value.

Входные параметры

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

tree

Дерево регрессии, созданное с помощью fitrtree.

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

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

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

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

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

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

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

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

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

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

Yfit

Ответ tree предсказывает для данных тренировки.

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

Если Subtrees содержит m> записи 1, label имеет столбцы m, каждый из которых представляет прогнозы соответствующего поддерева.

node

Числа узла tree, куда tree отправляет каждую строку данных.

Если аргумент значения имени Subtrees является скаляром или отсутствует, node является числовым вектор-столбцом со строками n, одинаковое число строк как tree.X.

Если Subtrees содержит m> записи 1, node является n-by-m матрица. Каждый столбец представляет прогнозы узла соответствующего поддерева.

Примеры

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

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

load carsmall
X = [Displacement Horsepower Weight];

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

Mdl = fitrtree(X,MPG);

Вычислите перезамену MSE.

Yfit = resubPredict(Mdl);
mean((Yfit - Mdl.Y).^2)
ans = 4.8952

Можно получить тот же результат с помощью resubLoss.

resubLoss(Mdl)
ans = 4.8952

Загрузите набор данных carsmall. Считайте Weight как предиктор ответа MPG.

load carsmall
idxNaN = isnan(MPG + Weight);
X = Weight(~idxNaN);
Y = MPG(~idxNaN);
n = numel(X);

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

Mdl = fitrtree(X,Y);

Вычислите адаптированные значения перезамены для поддеревьев на нескольких уровнях сокращения.

m = max(Mdl.PruneList);
pruneLevels = 1:4:m; % Pruning levels to consider
z = numel(pruneLevels);
Yfit = resubPredict(Mdl,'SubTrees',pruneLevels);

Yfit является z n матрицей приспособленных значений, в которых строки соответствуют наблюдениям, и столбцы соответствуют поддереву.

Постройте несколько столбцов Yfit и Y против X.

figure;
sortDat = sortrows([X Y Yfit],1); % Sort all data with respect to X
plot(repmat(sortDat(:,1),1,size(Yfit,2) + 1),sortDat(:,2:end))...
    % Vectorize for efficiency
lev = cellstr(num2str((pruneLevels)','Level %d MPG'));
legend(['Observed MPG'; lev])
title 'In-Sample Fitted Responses'
xlabel 'Weight (lbs)';
ylabel 'MPG';
h = findobj(gcf);
set(h(4:end),'LineWidth',3) % Widen all lines

Значения Yfit для более низких уровней сокращения имеют тенденцию следовать за данными более тесно, чем более высокие уровни. Выше сокращающие уровни имеют тенденцию быть плоскими для больших интервалов X.

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

| |