Класс: 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.
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
Вы щелкнули по ссылке, которая соответствует команде MATLAB:
Выполните эту команду, введя её в командном окне MATLAB.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.