oobQuantilePredict

Класс: TreeBagger

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

Описание

пример

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

пример

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).

Для 'all', oobQuantilePredict использует индексы 1:Mdl.NumTrees.

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

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

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

По умолчанию это таковые (size (trees)).

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

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

расширить все

Предполагаемые величины для наблюдений вне мешка, возвращенные как n-by-numel (tau) числовая матрица. n количество наблюдений в обучающих данных (numel(Mdl.Y)) и tau - значение Quantile аргумент пары "имя-значение". То есть YFit (j, k) - предполагаемый 100 * tau(k) процентиль распределения отклика, заданного 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-by-1 числовой вектор медиан, соответствующий условному распределению отклика, учитывая отсортированные наблюдения в Mdl.X. n количество наблюдений, 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');

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

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

oobQuantPredInts является n-на-2 числовая матрица интервалов предсказания, соответствующих внешним наблюдениям в Mdl.X. n количество наблюдений, 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) является ли эмпирический out-of-bag 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. «Quantle Regression Forests». Journal of Машинное Обучение Research, Vol. 7, 2006, pp. 983-999.

[2] Breiman, L. «Random Forests». Машинное обучение. Том 45, 2001, стр. 5-32.

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