Предсказание выборочных откликов подтреев

В этом примере показано, как предсказать выходные отклики регрессионых деревьев, а затем построить график результатов.

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

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

Разделите данные на наборы для обучения (50%) и валидации (50%).

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 30 objects of type line, text.

Вычислите подобранные значения наблюдений за валидацией для каждого из нескольких поддеревьев.

m = max(Mdl.PruneList);
pruneLevels = 0:2:m; % Pruning levels to consider
z = numel(pruneLevels);
Yfit = predict(Mdl,X(idxVal),'SubTrees',pruneLevels);

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

График Yfit и Y против X.

figure;
sortDat = sortrows([X(idxVal) Y(idxVal) Yfit],1); % Sort all data with respect to X
plot(sortDat(:,1),sortDat(:,2),'*');
hold on;
plot(repmat(sortDat(:,1),1,size(Yfit,2)),sortDat(:,3:end));
lev = cellstr(num2str((pruneLevels)','Level %d MPG'));
legend(['Observed MPG'; lev])
title 'Out-of-Sample Predictions'
xlabel 'Weight (lbs)';
ylabel 'MPG';
h = findobj(gcf);
axis tight;
set(h(4:end),'LineWidth',3) % Widen all lines

Figure contains an axes. The axes with title Out-of-Sample Predictions contains 6 objects of type line. These objects represent Observed MPG, Level 0 MPG, Level 2 MPG, Level 4 MPG, Level 6 MPG, Level 8 MPG.

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

См. также

|

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте