Ошибка регрессии
L = loss(tree,tbl,ResponseVarName)
L = loss(tree,x,y)
L = loss(___,Name,Value)
[L,se,NLeaf,bestlevel]
= loss(___)
возвращает среднеквадратическую ошибку между прогнозами 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
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: 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
Эта функция поддерживает длинные массивы для данных, которые не помещаются в память, с ограничением:
Только один вывод поддерживается.
Для получения дополнительной информации смотрите Длинные массивы (MATLAB).
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.