Класс: TreeBagger
Потеря квантиля с помощью сумки деревьев регрессии
возвращает половину среднего абсолютного отклонения (MAD) от сравнения истинных откликов в таблице err = quantileError(Mdl,X)X к предсказанным медианам, возникающим в результате применения мешка регрессионых деревьев Mdl к наблюдениям данных предиктора в X.
Mdl должен быть TreeBagger объект модели.
Имя переменной отклика в X должно иметь то же имя, что и переменная отклика в таблице, содержащей обучающие данные.
использует переменные истинного отклика и предиктора, содержащиеся в таблице err = quantileError(Mdl,X,ResponseVarName)X. ResponseVarName - имя переменной отклика и Mdl.PredictorNames содержат имена переменных предиктора.
использует любой из предыдущих синтаксисов и дополнительные опции, заданные одним или несколькими err = quantileError(___,Name,Value)Name,Value аргументы в виде пар. Для примера задайте вероятности величины, тип ошибки или какие деревья включить в оценку ошибки регрессии величины.
Mdl - Мешок регрессионных деревьевTreeBagger объект модели (по умолчанию)Мешок регрессионных деревьев, заданный как TreeBagger объект модели, созданный TreeBagger. Значение Mdl.Method должен быть regression.
X - Выборочные данныеВыборочные данные, используемых для оценки квантилей, заданная в виде числовой матрицы или таблицы.
Каждая строка 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 - Имя переменной откликаИмя переменной отклика, заданное как вектор символов или строковый скаляр. ResponseVarName должно быть именем переменной отклика в таблице выборочных данных X.
Если таблица X содержит переменную отклика, и она имеет то же имя что и переменная отклика, используемая для обучения Mdl, тогда вы не должны указывать ResponseVarName. quantileError использует эту переменную для истинных откликов по умолчанию.
Типы данных: char | string
Y - Истинные откликиИстинные отклики, заданные как числовой вектор. Количество строк в X должно быть равно длине Y.
Типы данных: double | single
Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.
'Mode' - Тип ошибки ансамбля'ensemble' (по умолчанию) | 'cumulative' | 'individual'Тип ошибки Ensemble, заданный как разделенная разделенными запятой парами, состоящая из 'Mode' и значение в этой таблице. Предположим tau - значение Quantile.
| Значение | Описание |
|---|---|
'cumulative' |
|
'ensemble' |
|
'individual' |
|
Для 'cumulative' и 'individual', если вы включаете меньше деревьев в оценку количества с помощью Trees или UseInstanceForTree, затем количество строк в err уменьшается по сравнению с Mdl.NumTrees.
Пример: 'Mode','cumulative'
'Weights' - Веса наблюденийones(size(X,1),1) (по умолчанию) | числовой вектор положительных значенийВеса наблюдений, заданные как разделенная разделенными запятой парами, состоящая из 'Weights' и числовой вектор положительных значений с длиной, равной size(X,1). quantileError использует Weights вычислить взвешенное среднее значение отклонений при оценке ошибки регрессии квантиля.
По умолчанию, quantileError определяет вес 1 каждому наблюдению, которое приводит к невзвешенному среднему значению отклонений.
'Quantile' - Вероятность квантования0.5 (по умолчанию) | числовой вектор, содержащий значения в [0,1]Вероятность квантования, заданная как разделенная разделенными запятой парами, состоящая из 'Quantile' и числовой вектор, содержащий значения в интервале [0,1]. Для каждого элемента в Quantile, quantileError возвращает соответствующие ошибки регрессии для всех вероятностей в Quantile.
Пример: 'Quantile',[0 0.25 0.5 0.75 1]
Типы данных: single | double
'Trees' - Индексы деревьев для использования при оценке отклика'all' (по умолчанию) | числовой вектор положительных целых чиселИндексы деревьев для использования в оценке отклика, заданные как разделенная разделенными запятой парами, состоящая из 'Trees' и 'all' или числовой вектор положительных целых чисел. Индексы соответствуют камерам Mdl.Trees; каждая камера в ней содержит дерево в ансамбле. Максимальное значение Trees должно быть меньше или равно количеству деревьев в ансамбле (Mdl.NumTrees).
Для 'all', quantileError использует все деревья ансамбля (то есть индексы 1:Mdl.NumTrees).
Значения, отличные от значения по умолчанию, могут влиять на количество строк в err.
Пример: 'Trees',[1 10 Mdl.NumTrees]
Типы данных: char | string | single | double
'TreeWeights' - Веса для атрибуции откликов от отдельных деревьевones(Mdl.NumTrees,1) (по умолчанию) | числовой вектор неотрицательных значенийВеса для атрибута откликов из отдельных деревьев, заданные как разделенная разделенными запятой парами, состоящая из 'TreeWeights' и числовой вектор числа неотрицательные значения. (trees)trees - значение Trees.
Если вы задаете 'Mode','individual', затем quantileError игнорирует TreeWeights.
Типы данных: single | double
'UseInstanceForTree' - Индикаторы, определяющие, какие деревья использовать для предсказаний каждого наблюдения'all' (по умолчанию) | логическую матрицуИндикаторы, определяющие, какие деревья использовать, чтобы делать предсказания для каждого наблюдения, заданные как разделенная разделенными запятой парами, состоящая из '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
err - Половина ошибки регрессии квантиляПоловина ошибки регрессии количества, возвращенная как числовой скаляр или 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')

Тренировок с использованием около 60 деревьев, кажется, достаточно для первых двух квартилей, но третий квартиль требует около 150 деревьев.
quantile regression error модели, указанные наблюдаемые данные предиктора и ответы, являются средневзвешенным абсолютным отклонением (MAD). Если модель недостаточно предсказывает ответ, то веса отклонений τ, вероятность квантования. Если модель перепрогнозирует, то веса отклонений равны 1 - τ.
То есть τ ошибка регрессии квантиля
yj является истинным j отклика, является τ квантилем, который предсказывает модель, и wj является j веса наблюдения.
Чтобы настроить количество деревьев в ансамбле, установите '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.
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.