Ошибка регрессии
возвращает среднюю квадратичную невязку между предсказаниями L
= loss(tree
,tbl
,ResponseVarName
)tree
к данным в tbl
, по сравнению с истинными ответами tbl.ResponseVarName
.
вычисляет ошибку в предсказании с дополнительными опциями, заданными одним или несколькими L
= loss(___,Name,Value
)Name,Value
аргументы в виде пар, с использованием любого из предыдущих синтаксисов.
tree
- Обученное дерево регрессииRegressionTree
| объекта CompactRegressionTree
объектОбученное дерево регрессии, заданное как RegressionTree
объект, созданный fitrtree
или CompactRegressionTree
объект, созданный compact
.
x
- Значения предиктораПредикторные значения, заданные как матрица значений с плавающей точкой. Каждый столбец x
представляет одну переменную, и каждая строка представляет одно наблюдение.
Типы данных: single
| double
ResponseVarName
- Имя переменной откликаtbl
Имя переменной отклика, заданное как имя переменной в tbl
.
Вы должны задать ResponseVarName
как вектор символов или строковый скаляр. Для примера, если переменная отклика y
хранится как tbl.y
, затем задайте ResponseVarName
как 'y'
. В противном случае программное обеспечение обрабатывает все столбцы tbl
, включая y
, как предикторы при обучении модели.
Типы данных: char
| string
y
- Данные откликаДанные отклика, заданные как числовой вектор-столбец с одинаковым числом строк, как x
. Каждая запись в y
- ответ на данные в соответствующей строке x
.
Типы данных: single
| double
Задайте необязательные разделенные разделенными запятой парами Name,Value
аргументы. Name
- имя аргумента и Value
- соответствующее значение. Name
должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN
.
'LossFun'
- Функция потерь'mse'
(по умолчанию) | указатель на функциюФункция потерь, заданная как разделенная разделенными запятой парами, состоящая из 'LossFun'
и указатель на функцию для потерь, или 'mse'
представление средней квадратной ошибки. Если вы передаете указатель на функцию fun
, loss
вызывает fun
как:
fun(Y,Yfit,W)
Y
- вектор истинных откликов.
Yfit
- вектор предсказанных откликов.
W
- веса наблюдений. Если вы сдаете W
элементы нормированы в сумме к 1
.
Все векторы имеют одинаковое число строк как Y
.
Пример: 'LossFun','mse'
Типы данных: function_handle
| char
| string
'Subtrees'
- Уровень обрезки'all'
Уровень обрезки, заданный как разделенная разделенными запятой парами, состоящая из 'Subtrees'
и вектор неотрицательных целых чисел в порядке возрастания или 'all'
.
Если вы задаете вектор, то все элементы должны быть как минимум 0
и самое большее max(tree.PruneList)
. 0
указывает полное, несрезанное дерево и max(tree.PruneList)
указывает полностью обрезанное дерево (т.е. только корневой узел).
Если вы задаете 'all'
, затем loss
работает со всеми поддеревьями (т.е. со всей последовательностью обрезки). Эта спецификация эквивалентна использованию 0:max(tree.PruneList)
.
loss
черносливы tree
каждому уровню, указанному в Subtrees
, а затем оценивает соответствующие выходные аргументы. Размер Subtrees
определяет размер некоторых выходных аргументов.
Для вызова Subtrees
, свойства PruneList
и PruneAlpha
от tree
должно быть непустым. Другими словами, расти tree
путем установки 'Prune','on'
, или путем обрезки tree
использование prune
.
Пример: 'Subtrees','all'
Типы данных: single
| double
| char
| string
'TreeSize'
- Размер дерева'se'
(по умолчанию) | 'min'
Размер дерева, заданный как разделенная разделенными запятой парами, состоящая из 'TreeSize'
и одно из следующих:
'se'
— loss
возвращает bestlevel
что соответствует наименьшему дереву, средняя квадратичная невязка (MSE) которого находится в пределах одной стандартной ошибки минимального MSE.
'min'
— loss
возвращает bestlevel
что соответствует минимальному дереву MSE.
Пример: 'TreeSize','min'
'Weights'
- Веса наблюденийones(size(X,1),1)
(по умолчанию) | вектор скалярных значений | имя переменной в tbl
Веса наблюдений, заданные как разделенная разделенными запятой парами, состоящая из 'Weights'
и вектор скалярных значений. Программа взвешивает наблюдения в каждой строке x
или tbl
с соответствующим значением в Weights
. Размер Weights
должно равняться количеству строк в x
или tbl
.
Если вы задаете входные данные как таблицу tbl
, затем Weights
может быть именем переменной в tbl
который содержит числовой вектор. В этом случае необходимо задать Weights
как имя переменной. Для примера, если вектор весов W
хранится как tbl.W
, затем задайте Weights
как 'W'
. В противном случае программное обеспечение обрабатывает все столбцы tbl
, включая W
, как предикторы при обучении модели.
Типы данных: single
| double
| char
| string
L
- Ошибка классификацииКлассификационная ошибка, возвращенная в качестве вектора длину Subtrees
. Ошибка для каждого дерева является средней квадратичной невязкой, взвешенной с Weights
. Если вы включаете LossFun
, L
отражает потери, рассчитанные с помощью LossFun
.
se
- Стандартная ошибка потерьСтандартная ошибка потерь, возвращенная в качестве вектора длина Subtrees
.
NLeaf
- Количество листовых узловКоличество листьев (терминальных узлов) в обрезанных поддеревьях, возвращаемое как вектор длину Subtrees
.
bestlevel
- Лучший уровень обрезкиЛучший уровень обрезки, как определено в TreeSize
Пара "имя-значение", возвращенный как скаляр, значение которого зависит от TreeSize
:
TreeSize
= 'se'
— loss
возвращает наивысший уровень обрезки с потерями в пределах одного стандартного отклонения от минимального (L
+ se
, где L
и se
относятся к наименьшему значению в Subtrees
).
TreeSize
= 'min'
— loss
возвращает элемент Subtrees
с наименьшими потерями, обычно наименьший элемент Subtrees
.
Загрузите carsmall
набор данных. Рассмотрим Displacement
, Horsepower
, и Weight
как предикторы отклика MPG
.
load carsmall
X = [Displacement Horsepower Weight];
Вырастите дерево регрессии, используя все наблюдения.
tree = fitrtree(X,MPG);
Оцените MSE в выборке.
L = loss(tree,X,MPG)
L = 4.8952
Загрузите carsmall
набор данных. Рассмотрим Displacement
, Horsepower
, и Weight
как предикторы отклика MPG
.
load carsmall
X = [Displacement Horsepower Weight];
Вырастите дерево регрессии, используя все наблюдения.
Mdl = fitrtree(X,MPG);
Просмотрите дерево регрессии.
view(Mdl,'Mode','graph');
Найдите лучший уровень обрезки, который приводит к оптимальным потерям в выборке.
[L,se,NLeaf,bestLevel] = loss(Mdl,X,MPG,'Subtrees','all'); bestLevel
bestLevel = 1
Лучшим уровнем обрезки является уровень 1.
Обрезать дерево до уровня 1.
pruneMdl = prune(Mdl,'Level',bestLevel); view(pruneMdl,'Mode','graph');
Необрезанные деревья решений, как правило, перегружаются. Один из способов сбалансировать сложность модели и эффективности вне выборки - это обрезать дерево (или ограничить его рост), чтобы эффективность в выборке и вне выборки были удовлетворительными.
Загрузите carsmall
набор данных. Рассмотрим Displacement
, Horsepower
, и Weight
как предикторы отклика MPG
.
load carsmall
X = [Displacement Horsepower Weight];
Y = MPG;
Разделите данные на наборы для обучения (50%) и валидации (50%).
n = size(X,1); rng(1) % For reproducibility idxTrn = false(n,1); idxTrn(randsample(n,round(0.5*n))) = true; % Training set logical indices idxVal = idxTrn == false; % Validation set logical indices
Вырастите дерево регрессии с помощью набора обучающих данных.
Mdl = fitrtree(X(idxTrn,:),Y(idxTrn));
Просмотрите дерево регрессии.
view(Mdl,'Mode','graph');
Дерево регрессии имеет семь уровней обрезки. Уровень 0 является полным, несрезанным деревом (как показано). Уровень 7 является только корневым узлом (то есть без разделений).
Исследуйте обучающую выборку MSE для каждого поддерева (или уровня обрезки), исключая самый высокий уровень.
m = max(Mdl.PruneList) - 1;
trnLoss = resubLoss(Mdl,'SubTrees',0:m)
trnLoss = 7×1
5.9789
6.2768
6.8316
7.5209
8.3951
10.7452
14.8445
MSE для полного, несрезанного дерева составляет около 6 модули.
MSE для дерева, обрезанного до уровня 1, составляет около 6,3 модули.
MSE для дерева, обрезанного до уровня 6 (т.е. пня), составляет около 14,8 модули.
Исследуйте выборку валидации MSE на каждом уровне, исключая самый высокий уровень.
valLoss = loss(Mdl,X(idxVal,:),Y(idxVal),'SubTrees',0:m)
valLoss = 7×1
32.1205
31.5035
32.0541
30.8183
26.3535
30.0137
38.4695
MSE для полного, несрезанного дерева (уровень 0) составляет около 32,1 модули.
MSE для дерева, обрезанного до уровня 4, составляет около 26,4 модули.
MSE для дерева, обрезанного до уровня 5, составляет около 30,0 модули.
MSE для дерева, обрезанного до уровня 6 (т.е. пня), составляет около 38,5 модули.
Чтобы сбалансировать сложность модели и несовпадающую эффективность, рассмотрите обрезку Mdl
на уровень 4.
pruneMdl = prune(Mdl,'Level',4); view(pruneMdl,'Mode','graph')
Средняя квадратная m ошибок f предсказаний (Xn) с вектором веса w является
Указания и ограничения по применению:
Поддерживается только один выход.
Вы можете использовать модели, обученные на памяти или высоких данных с этой функцией.
Для получения дополнительной информации см. Раздел «Длинные массивы»
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.