exponenta event banner

oobQuantilePredict

Класс: TreeBagger

Квантильные прогнозы для наблюдений вне пакета из пакета деревьев регрессии

Описание

пример

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

пример

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' и числовой вектор numel(trees) неотрицательные значения. trees - значение Trees аргумент пары имя-значение.

Значение по умолчанию: ones(size(trees)).

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

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

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

Оцененные квантили для внеплановых наблюдений, возвращенные как nоколо-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 набор данных. Рассмотрим модель, которая предсказывает экономию топлива (в МПГ) автомобиля, учитывая его рабочий объем двигателя.

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.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 набор данных. Рассмотрим модель, которая предсказывает экономию топлива автомобиля (в МПГ), учитывая его рабочий объем двигателя.

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 набор данных. Рассмотрим модель, которая предсказывает экономию топлива автомобиля (в МПГ), учитывая его рабочий объем двигателя.

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 не использует квантильную регрессию для внеплановых наблюдений. Вместо этого он назначает quantile(Mdl.Y,tau), где tau - значение Quantile аргумент пары имя-значение.

Ссылки

[1] Мейнсхаузен, Н. «Квантильные регрессионные леса». Журнал исследований машинного обучения, том 7, 2006, стр. 983-999.

[2] Брейман, Л. «Случайные леса». Машинное обучение. Том 45, 2001, стр. 5-32.

Представлен в R2016b