exponenta event banner

Прогнозирование выбывающих ответов поддеревьев

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

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

См. также

|

Связанные темы