Класс: TreeBagger
Потеря квантиля с помощью мешка деревьев регрессии
err = quantileError(Mdl,X)
err = quantileError(Mdl,X,ResponseVarName)
err = quantileError(Mdl,X,Y)
err = quantileError(___,Name,Value)
возвращает половину среднего абсолютного отклонения (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
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.
режим
Ошибочный тип ансамбля'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.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'
и числовой вектор
неотрицательные значения. numel(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
является
-by-numel(trees)
числовая матрица. 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
является
-by-numel(trees)
числовая матрица. 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.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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.