Класс: 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'
Ошибочный тип ансамбля, заданный как разделенная запятой пара, состоящая из '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,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
).
\forall
, quantileError
использование все деревья в ансамбле (то есть, индексы 1:Mdl.NumTrees
).
Значения кроме значения по умолчанию могут влиять на количество строк в err
.
Пример: 'Trees',[1 10 Mdl.NumTrees]
Типы данных: char |
string
| single
| double
'TreeWeights'
— Веса, чтобы приписать ответам от отдельных деревьевones(Mdl.NumTrees,1)
(значение по умолчанию) | числовой вектор неотрицательных значенийВеса, чтобы приписать ответам от отдельных деревьев, заданных как разделенная запятой пара, состоящая из 'TreeWeights'
и числовой вектор numel (
неотрицательные значения. trees
)trees
значение Trees
.
Если вы задаете 'Mode','individual'
, затем quantileError
игнорирует TreeWeights
.
Типы данных: single
| double
'UseInstanceForTree'
— Индикаторы, задающие, который деревья использовать, чтобы сделать прогнозы для каждого наблюдения'all'
(значение по умолчанию) | логическая матрицаИндикаторы, задающие, который деревья использовать, чтобы сделать прогнозы для каждого наблюдения, заданного как разделенная запятой пара, состоящая из 'UseInstanceForTree'
и n-by-Mdl.Trees
логическая матрица. n является количеством наблюдений (строки) в X
. Строки UseInstanceForTree
соответствуйте наблюдениям, и столбцы соответствуют ученикам в Mdl.Trees
все
указывает, чтобы использовать все деревья во всех наблюдениях при оценке квантилей.
Если UseInstanceForTree (
= j
K
)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
err
— Половина ошибки регрессии квантиляПоловина ошибки регрессии квантиля, возвращенной в виде числа или T
- numel (
матрица. tau
)tau
значение Quantile
.
T
зависит от значений Mode
, Trees
, UseInstanceForTree
, и Quantile
. Предположим, что вы задаете 'Деревья',
и вы используете значение по умолчанию trees
'UseInstanceForTree'
.
Для 'Mode','cumulative'
, err
numel (
- trees
)numel (
числовая матрица. tau
)допустите ошибку (
j
K
)
совокупная ошибка регрессии квантиля ученики в tau
K
)Mdl. Деревья (
.trees
(1:j
))
Для 'Mode','ensemble'
, err
1
- numel (
числовой вектор. tau
)допустите ошибку (
k
)
совокупная ошибка регрессии квантиля ученики в tau
K
)Mdl. Деревья (
.trees
)
Для 'Mode','individual'
, err
numel (
- trees
)numel (
числовая матрица. tau
)допустите ошибку (
j
K
)
ошибка регрессии квантиля ученик в tau
K
)Mdl. Деревья (
.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.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 деревьев.
quantile regression error модели, данной наблюдаемые данные о предикторе и ответы, является взвешенным средним абсолютное отклонение (MAD). Если модель под - предсказывает ответ, то весами отклонения является τ, вероятность квантиля. Если модель завышает, то веса отклонения равняются 1 – τ.
Таким образом, ошибка регрессии квантиля τ
yj является истинным ответом j, квантиль τ, который предсказывает модель, и wj является весом наблюдения j.
Чтобы настроить количество деревьев в ансамбле, установите 'Mode','cumulative'
и постройте ошибки регрессии квантиля относительно древовидных индексов. Максимальное количество необходимых деревьев является древовидным индексом, где ошибка регрессии квантиля, кажется, выравнивается.
Чтобы исследовать производительность модели, когда учебная выборка будет мала, используйте oobQuantileError
вместо этого.
[1] Бреимен, L. Случайные Леса. Машинное обучение 45, стр 5–32, 2001.
[2] Meinshausen, N. “Леса Регрессии квантиля”. Журнал Исследования Машинного обучения, Издания 7, 2006, стр 983–999.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.