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 не должен соответствовать порядку следования столбцов Tbltbl и 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.

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

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

err Mdl.NumTrees- numel (tau) числовая матрица совокупных ошибок регрессии квантиля. допустите ошибку (jK) tauK) ошибка регрессии квантиля ученики в Mdl. Деревья (1:j) только.

'ensemble'

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

'individual'

err Mdl.NumTrees- numel (tau) числовая матрица ошибок регрессии квантиля от отдельных учеников. допустите ошибку (jK) tauK) ошибка регрессии квантиля ученик в Mdl. Деревья (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).

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

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

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

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

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

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

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

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

Если UseInstanceForTree (jK) = true, затем quantileError использует дерево в Mdl. Деревья (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- numel (tau) матрица. tau значение Quantile.

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

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

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

  • Для 'Mode','individual', err numel (trees)- numel (tau) числовая матрица. допустите ошибку (jK) tauK) ошибка регрессии квантиля ученик в Mdl. Деревья (treesJ)).

Примеры

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

Загрузите 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.2586

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

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

Загрузите 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')

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

Больше о

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

Советы

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

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

Ссылки

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

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

Смотрите также

| | |

Введенный в R2017b