oobQuantilePredict

Класс: TreeBagger

Предсказания квантиля для наблюдений из сумки от мешка деревьев регрессии

Описание

пример

YFit = oobQuantilePredict(Mdl) возвращает вектор из медиан предсказанных ответов при всех наблюдениях из сумки в Mdl.X, данные о предикторе и использование Mdl, который является мешком деревьев регрессии. Mdl должен быть TreeBagger объект модели и Mdl.OOBIndices mustBeNonempty.

пример

YFit = oobQuantilePredict(Mdl,Name,Value) дополнительные опции использования заданы одним или несколькими Name,Value парные аргументы. Например, задайте вероятности квантиля или деревья, чтобы включать для оценки квантиля.

пример

[YFit,YW] = oobQuantilePredict(___) также возвращает разреженную матрицу весов ответа с помощью любого из предыдущих синтаксисов.

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

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

Мешок деревьев регрессии в виде TreeBagger объект модели создается TreeBagger.

  • Значение Mdl.Method должен быть regression.

  • Когда вы обучаете Mdl использование TreeBagger, необходимо задать пару "имя-значение" 'OOBPrediction','on'. Следовательно, TreeBagger сохраняет требуемую матрицу индекса наблюдения из сумки в Mdl.OOBIndices.

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

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

Вероятность квантиля в виде разделенной запятой пары, состоящей из 'Quantile' и числовой вектор, содержащий значения в интервале [0,1]. Для каждого наблюдения (строка) в Mdl.X, oobQuantilePredict оценки соответствующие квантили для всех вероятностей в Quantile.

Пример: 'Quantile',[0 0.25 0.5 0.75 1]

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

Индексы деревьев, чтобы использовать в ответ оценку в виде разделенной запятой пары, состоящей из 'Trees' и 'all' или числовой вектор из положительных целых чисел. Индексы соответствуют ячейкам Mdl.Trees; каждая ячейка там содержит дерево в ансамбле. Максимальное значение Trees должно быть меньше чем или равно количеству деревьев в ансамбле (Mdl.NumTrees).

\forall, oobQuantilePredict использует индексы 1:Mdl.NumTrees.

Пример: 'Trees',[1 10 Mdl.NumTrees]

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

Веса, чтобы приписать ответам от отдельных деревьев в виде разделенной запятой пары, состоящей из 'TreeWeights' и числовой вектор из numel (trees) неотрицательные значения. trees значение Trees аргумент пары "имя-значение".

Значением по умолчанию являются единицы (размер (trees)).

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

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

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

Предполагаемые квантили для наблюдений из сумки, возвращенных как n- numel (tau) числовая матрица. n количество наблюдений в обучающих данных (numel(Mdl.Y)) и tau значение Quantile аргумент пары "имя-значение". Таким образом, YFit (jK) предполагаемое 100*tauK) процентиль распределения ответа, учитывая X (j,:) и использование Mdl.

Веса ответа, возвращенные как n-by-n разреженная матрица. n является количеством ответов в обучающих данных (numel(Mdl.Y)). YW (: J) задает веса ответа для наблюдения в Mdl. X (j,:).

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

Примеры

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

Загрузите carsmall набор данных. Рассмотрите модель, которая предсказывает экономию топлива (в MPG) автомобиля, учитывая его объем двигателя.

load carsmall

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

rng(1); % For reproducibility
Mdl = TreeBagger(100,Displacement,MPG,'Method','regression',...
    'OOBPrediction','on');

Mdl TreeBagger ансамбль.

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

oobMedianMPG = oobQuantilePredict(Mdl);

oobMedianMPG n- 1 числовой вектор из медиан, соответствующих условному распределению ответа, учитывая отсортированные наблюдения в Mdl.XN количество наблюдений, size(Mdl.X,1).

Сортировка наблюдений в порядке возрастания. Постройте наблюдения и предполагаемые медианы на той же фигуре. Сравните средние и средние ответы из сумки.

[sX,idx] = sort(Mdl.X);
oobMeanMPG = oobPredict(Mdl);

figure;
plot(Displacement,MPG,'k.');
hold on
plot(sX,oobMedianMPG(idx));
plot(sX,oobMeanMPG(idx),'r--');
ylabel('Fuel economy');
xlabel('Engine displacement');
legend('Data','Out-of-bag median','Out-of-bag mean');
hold off;

Figure contains an axes. The axes contains 3 objects of type line. These objects represent Data, Out-of-bag median, Out-of-bag mean.

Загрузите carsmall набор данных. Рассмотрите модель, которая предсказывает экономию топлива автомобиля (в MPG), учитывая его объем двигателя.

load carsmall

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

rng(1); % For reproducibility
Mdl = TreeBagger(100,Displacement,MPG,'Method','regression',...
    'OOBPrediction','on');

Выполните регрессию квантиля, чтобы предсказать процентили на 97,5% и на 2,5% из сумки.

oobQuantPredInts = oobQuantilePredict(Mdl,'Quantile',[0.025,0.975]);

oobQuantPredInts n- 2 числовых матрицы интервалов предсказания, соответствующих наблюдениям из сумки в Mdl.XN количество наблюдений, size(Mdl.X,1). Первый столбец содержит процентили на 2,5%, и второй столбец содержит процентили на 97,5%.

Постройте наблюдения и предполагаемые медианы на той же фигуре. Сравните интервалы предсказания процентили и 95% интервалов предсказания, приняв условное распределение MPG является Гауссовым.

[oobMeanMPG,oobSTEMeanMPG] = oobPredict(Mdl);
STDNPredInts = oobMeanMPG + [-1 1]*norminv(0.975).*oobSTEMeanMPG;
[sX,idx] = sort(Mdl.X);

figure;
h1 = plot(Displacement,MPG,'k.');
hold on
h2 = plot(sX,oobQuantPredInts(idx,:),'b');
h3 = plot(sX,STDNPredInts(idx,:),'r--');
ylabel('Fuel economy');
xlabel('Engine displacement');
legend([h1,h2(1),h3(1)],{'Data','95% percentile prediction intervals',...
    '95% Gaussian prediction intervals'});
hold off;

Figure contains an axes. The axes contains 5 objects of type line. These objects represent Data, 95% percentile prediction intervals, 95% Gaussian prediction intervals.

Загрузите carsmall набор данных. Рассмотрите модель, которая предсказывает экономию топлива автомобиля (в MPG), учитывая его объем двигателя.

load carsmall

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

rng(1); % For reproducibility
Mdl = TreeBagger(100,Displacement,MPG,'Method','regression',...
    'OOBPrediction','on');

Оцените веса ответа из сумки.

[~,YW] = oobQuantilePredict(Mdl);

YW n на n разреженная матрица, содержащая веса ответа. n количество учебных наблюдений, numel(Y). Веса ответа для наблюдения в Mdl.X(j,:) находятся в YW(:,j). Веса ответа независимы от любых заданных вероятностей квантиля.

Оцените условную кумулятивную функцию распределения из сумки (ccdf) ответов:

  1. Сортировка ответов является порядком по возрастанию и затем сортировкой весов ответа с помощью индексов, вызванных путем сортировки ответов.

  2. Вычисление совокупных сумм по каждому столбцу отсортированных весов ответа.

[sortY,sortIdx] = sort(Mdl.Y);
cpdf = full(YW(sortIdx,:));
ccdf = cumsum(cpdf);

ccdf(:,j) эмпирический ccdf из сумки ответа, заданное наблюдение j.

Выберите случайную выборку четырех учебных наблюдений. Постройте обучающую выборку и идентифицируйте выбранные наблюдения.

[randX,idx] = datasample(Mdl.X,4);
figure;
plot(Mdl.X,Mdl.Y,'o');
hold on
plot(randX,Mdl.Y(idx),'*','MarkerSize',10);
text(randX-10,Mdl.Y(idx)+1.5,{'obs. 1' 'obs. 2' 'obs. 3' 'obs. 4'});
legend('Training Data','Chosen Observations');
xlabel('Engine displacement')
ylabel('Fuel economy')
hold off

Figure contains an axes. The axes contains 6 objects of type line, text. These objects represent Training Data, Chosen Observations.

Постройте ccdf из сумки для четырех выбранных ответов на том же рисунке.

figure;
plot(sortY,ccdf(:,idx));
legend('ccdf given obs. 1','ccdf given obs. 2',...
    'ccdf given obs. 3','ccdf given obs. 4',...
    'Location','SouthEast')
title('Out-of-Bag Conditional Cumulative Distribution Functions')
xlabel('Fuel economy')
ylabel('Empirical CDF')

Figure contains an axes. The axes with title Out-of-Bag Conditional Cumulative Distribution Functions contains 4 objects of type line. These objects represent ccdf given obs. 1, ccdf given obs. 2, ccdf given obs. 3, ccdf given obs. 4.

Больше о

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

Алгоритмы

oobQuantilePredict оценки квантили из сумки путем применения quantilePredict ко всем наблюдениям в обучающих данных (Mdl.X). Для каждого наблюдения метод использует только деревья, для которых наблюдение из сумки.

Для наблюдений, которые в сумке для всех деревьев в ансамбле, oobQuantilePredict присваивает демонстрационный квантиль данных об ответе. Другими словами, oobQuantilePredict не использует регрессию квантиля для наблюдений из сумки. Вместо этого это присваивает квантиль (Mdl. Y, tau), где tau значение Quantile аргумент пары "имя-значение".

Ссылки

[1] Meinshausen, N. “Леса Регрессии квантиля”. Журнал Исследования Машинного обучения, Издания 7, 2006, стр 983–999.

[2] Бреимен, L. “Случайные Леса”. Машинное обучение. Издание 45, 2001, стр 5–32.

Введенный в R2017b