quantileError

Класс: TreeBagger

Потеря квантиля с помощью сумки деревьев регрессии

Описание

пример

err = quantileError(Mdl,X) возвращает половину среднего абсолютного отклонения (MAD) от сравнения истинных откликов в таблице X к предсказанным медианам, возникающим в результате применения мешка регрессионых деревьев Mdl к наблюдениям данных предиктора в X.

  • Mdl должен быть TreeBagger объект модели.

  • Имя переменной отклика в X должно иметь то же имя, что и переменная отклика в таблице, содержащей обучающие данные.

пример

err = quantileError(Mdl,X,ResponseVarName) использует переменные истинного отклика и предиктора, содержащиеся в таблице X. ResponseVarName - имя переменной отклика и Mdl.PredictorNames содержат имена переменных предиктора.

пример

err = quantileError(Mdl,X,Y) использует данные предиктора в таблице или матрице X и данные отклика в векторе Y.

пример

err = quantileError(___,Name,Value) использует любой из предыдущих синтаксисов и дополнительные опции, заданные одним или несколькими Name,Value аргументы в виде пар. Для примера задайте вероятности величины, тип ошибки или какие деревья включить в оценку ошибки регрессии величины.

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

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

Мешок регрессионных деревьев, заданный как TreeBagger объект модели, созданный TreeBagger. Значение Mdl.Method должен быть regression.

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

Каждая строка X соответствует одному наблюдению, и каждый столбец соответствует одной переменной. Если вы задаете Y, затем количество строк в X должно быть равно длине Y.

  • Для числовой матрицы:

    • Переменные, составляющие столбцы X должен иметь тот же порядок, что и переменные предиктора, которые обучали Mdl (хранится в Mdl.PredictorNames).

    • Если вы тренировались Mdl использование таблицы (для примера, Tbl), затем X может быть числовой матрицей, если Tbl содержит все числовые переменные предиктора. Если Tbl содержит неоднородные переменные предиктора (для примера, числовых и категориальных типов данных), затем quantileError выдает ошибку.

    • Задайте Y для истинных ответов.

  • Для таблицы:

    • quantileError не поддерживает многополюсные переменные или массивы ячеек, отличные от массивов ячеек векторов символов.

    • Если вы тренировались Mdl использование таблицы (для примера, Tbl), затем все переменные предиктора в X должны иметь те же имена переменных и типы данных, что и те переменные, которые обучены Mdl (хранится в Mdl.PredictorNames). Однако порядок столбцов X не должен соответствовать порядку столбцов Tbl. Tbl и X может содержать дополнительные переменные (переменные отклика, веса наблюдений и т.д.).

    • Если вы тренировались Mdl используя числовую матрицу, затем имена предикторов в Mdl.PredictorNames и соответствующие имена переменных предиктора в X должно быть то же самое. Чтобы задать имена предикторов во время обучения, смотрите PredictorNames Аргумент пары "имя-значение" из TreeBagger. Все переменные предиктора в X должны быть числовыми векторами. X может содержать дополнительные переменные (переменные отклика, веса наблюдений и т.д.).

    • Если X содержит переменную отклика:

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

      • Можно задать ResponseVarName или Y для истинных ответов.

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

Имя переменной отклика, заданное как вектор символов или строковый скаляр. ResponseVarName должно быть именем переменной отклика в таблице выборочных данных X.

Если таблица X содержит переменную отклика, и она имеет то же имя что и переменная отклика, используемая для обучения Mdl, тогда вы не должны указывать ResponseVarName. quantileError использует эту переменную для истинных откликов по умолчанию.

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

Истинные отклики, заданные как числовой вектор. Количество строк в X должно быть равно длине Y.

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

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

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

Тип ошибки Ensemble, заданный как разделенная разделенными запятой парами, состоящая из 'Mode' и значение в этой таблице. Предположим tau - значение Quantile.

ЗначениеОписание
'cumulative'

err является Mdl.NumTrees-by-numel (tau) числовая матрица совокупных ошибок регрессии квантилей. err (j, k) является tau(k) ошибка регрессии квантиля с использованием учащихся в Mdl.Trees (1: j) только.

'ensemble'

err является 1 на-numel (tau) числовой вектор совокупных ошибок регрессии квантилей для всего ансамбля. err (k) является tau(k) ошибка регрессии ансамбля величины.

'individual'

err является Mdl.NumTrees-by-numel (tau) числовая матрица ошибок регрессии квантиля от отдельных учащихся. err (j, k) является tau(k) ошибка регрессии квантиля с использованием обучающегося в Mdl.Trees (j) только.

Для 'cumulative' и 'individual', если вы включаете меньше деревьев в оценку количества с помощью Trees или UseInstanceForTree, затем количество строк в err уменьшается по сравнению с Mdl.NumTrees.

Пример: 'Mode','cumulative'

Веса наблюдений, заданные как разделенная разделенными запятой парами, состоящая из 'Weights' и числовой вектор положительных значений с длиной, равной size(X,1). quantileError использует Weights вычислить взвешенное среднее значение отклонений при оценке ошибки регрессии квантиля.

По умолчанию, quantileError определяет вес 1 каждому наблюдению, которое приводит к невзвешенному среднему значению отклонений.

Вероятность квантования, заданная как разделенная разделенными запятой парами, состоящая из 'Quantile' и числовой вектор, содержащий значения в интервале [0,1]. Для каждого элемента в Quantile, quantileError возвращает соответствующие ошибки регрессии для всех вероятностей в Quantile.

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

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

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

Для 'all', quantileError использует все деревья ансамбля (то есть индексы 1:Mdl.NumTrees).

Значения, отличные от значения по умолчанию, могут влиять на количество строк в err.

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

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

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

Если вы задаете 'Mode','individual', затем quantileError игнорирует TreeWeights.

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

Индикаторы, определяющие, какие деревья использовать, чтобы делать предсказания для каждого наблюдения, заданные как разделенная разделенными запятой парами, состоящая из 'UseInstanceForTree' и n -by- Mdl.Trees логическая матрица. n - количество наблюдений (строк) в X. Строки UseInstanceForTree соответствуют наблюдениям, а столбцы соответствуют ученикам в Mdl.Trees. 'all' указывает использовать все деревья для всех наблюдений при оценке квантилей.

Если UseInstanceForTree (j, k) = true, затем quantileError использует дерево в Mdl.Trees (k) когда он предсказывает ответ для наблюдения X (j,:).

Можно оценить квантования, используя данные отклика в Mdl.Y непосредственно вместо использования предсказаний из случайного леса путем определения строки, состоящей полностью из false значения. Для примера, чтобы оценить квантиль для наблюдения j используя данные отклика, и чтобы использовать предсказания из случайного леса для всех других наблюдений, задайте эту матрицу:

UseInstanceForTree = true(size(Mdl.X,2),Mdl.NumTrees);
UseInstanceForTree(j,:) = false(1,Mdl.NumTrees);

Значения, отличные от значения по умолчанию, могут влиять на количество строк в err. Кроме того, значение Trees влияет на значение UseInstanceForTree. Предположим, что U - значение UseInstanceForTree. quantileError игнорирует столбцы U соответствует деревьям, не используемым в оценке из спецификации Trees. То есть, quantileError устанавливает значение 'UseInstanceForTree' в U (:, trees), где trees - значение 'Trees'.

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

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

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

Половина ошибки регрессии количества, возвращенная как числовой скаляр или T-by-numel (tau) матрица. tau - значение Quantile.

T зависит от значений Mode, Trees, UseInstanceForTree, и Quantile. Предположим, что вы задаете 'Trees', trees и вы используете значение по умолчанию 'UseInstanceForTree'.

  • Для 'Mode','cumulative', err является числителем (trees)-by-numel (tau) числовая матрица. err (j, k) является tau(k) кумулятивная ошибка регрессии квантиля с использованием учащихся в Mdl.Trees (trees(1: j)).

  • Для 'Mode','ensemble', err является 1-by-numel (tau) числовой вектор. err (k) является tau(k) кумулятивная ошибка регрессии квантиля с использованием учащихся в Mdl.Trees (trees).

  • Для 'Mode','individual', err является числителем (trees)-by-numel (tau) числовая матрица. err (j, k) является tau(k) ошибка регрессии квантиля с использованием обучающегося в Mdl.Trees (trees(j)).

Примеры

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

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

load carsmall
Cylinders = categorical(Cylinders);
X = table(Displacement,Weight,Cylinders,MPG);

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

rng(1); % For reproducibility
Mdl = TreeBagger(100,X,'MPG','Method','regression');

Mdl является TreeBagger ансамбль.

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

err = quantileError(Mdl,X)
err = 1.2339

Потому что X - таблица, содержащая ответ и соразмерные имена переменных, вы не должны указывать имя или данные переменной ответа. Однако можно задать ответ с помощью этого синтаксиса.

err = quantileError(Mdl,X,'MPG')
err = 1.2339

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

load carsmall
X = table(Displacement,Weight,Cylinders,MPG);

Случайным образом разделите данные на два набора: 75% обучение и 25% проверка. Извлеките индексы подмножества.

rng(1); % For reproducibility 
cvp = cvpartition(size(X,1),'Holdout',0.25);
idxTrn = training(cvp);
idxTest = test(cvp);

Обучите ансамбль мешанных регрессионных деревьев с помощью набора обучающих данных. Укажите 250 слабых учащихся.

Mdl = TreeBagger(250,X(idxTrn,:),'MPG','Method','regression');

Оцените совокупные ошибки регрессии квантиля 0,25, 0,5 и 0,75 для тестового набора. Передайте данные предиктора в виде числовой матрицы, а данные отклика в виде вектора.

err = quantileError(Mdl,X{idxTest,1:3},MPG(idxTest),'Quantile',[0.25 0.5 0.75],...
    'Mode','cumulative');

err является 250 на 3 матрицей совокупных ошибок регрессии квантиля. Столбцы соответствуют квантильным вероятностям, а строки соответствуют деревьям в ансамбле. Ошибки совокупны, поэтому они включают агрегированные предсказания из предыдущих деревьев. Хотя, Mdl был обучен с помощью таблицы, если все переменные предиктора в таблице числовые, то можно вместо этого задать матрицу данных предиктора.

Постройте график совокупных ошибок квантиля на том же графике.

figure;
plot(err);
legend('0.25 quantile error','0.5 quantile error','0.75 quantile error');
ylabel('Quantile error');
xlabel('Tree index');
title('Cumulative Quantile Regression Error')

Figure contains an axes. The axes with title Cumulative Quantile Regression Error contains 3 objects of type line. These objects represent 0.25 quantile error, 0.5 quantile error, 0.75 quantile error.

Тренировок с использованием около 60 деревьев, кажется, достаточно для первых двух квартилей, но третий квартиль требует около 150 деревьев.

Подробнее о

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

Совет

  • Чтобы настроить количество деревьев в ансамбле, установите 'Mode','cumulative' и постройте график ошибок регрессии квантиля относительно древовидных индексов. Максимальное количество необходимых деревьев является древовидным индексом, где ошибка регрессии квантиля выглядит выключенной.

  • Чтобы исследовать эффективность модели, когда обучающая выборка небольшая, используйте oobQuantileError вместо этого.

Ссылки

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

[2] Meinshausen, N. «Quantle Regression Forests». Journal of Машинное Обучение Research, Vol. 7, 2006, pp. 983-999.

Введенный в R2016b