exponenta event banner

cvloss

Класс: ClassificationTree

Ошибка классификации по перекрестной проверке

Описание

E = cvloss(tree) возвращает кросс-проверенную ошибку классификации (потерю) для tree, дерево классификации. cvloss метод использует стратифицированное разбиение для создания перекрестно проверенных наборов. То есть для каждой складки каждый раздел данных имеет приблизительно те же пропорции классов, что и в данных, используемых для обучения tree.

[E,SE] = cvloss(tree) возвращает стандартную ошибку E.

[E,SE,Nleaf] = cvloss(tree) возвращает количество листьев tree.

[E,SE,Nleaf,BestLevel] = cvloss(tree) возвращает оптимальный уровень отсечения для tree.

[___] = cvloss(tree,Name,Value) cross проверяет с дополнительными опциями, указанными одним или несколькими Name,Value парные аргументы, использующие любой из предыдущих синтаксисов. Можно указать несколько аргументов пары имя-значение в любом порядке как Name1,Value1,…,NameN,ValueN.

Входные аргументы

развернуть все

Обученное дерево классификации, указанное как ClassificationTree объект модели, созданный fitctree.

Аргументы пары «имя-значение»

Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.

Уровень отсечения, заданный как разделенная запятыми пара, состоящая из 'Subtrees' и вектор неотрицательных целых чисел в порядке возрастания или 'all'.

Если задан вектор, то все элементы должны быть по крайней мере 0 и не более max(tree.PruneList). 0 указывает полное, неотрезанное дерево и max(tree.PruneList) указывает полностью отсеченное дерево (т.е. только корневой узел).

При указании 'all', то cvloss оперирует всеми поддеревьями (т.е. всей последовательностью отсечения). Эта спецификация эквивалентна использованию 0:max(tree.PruneList).

cvloss чернослив tree к каждому уровню, указанному в Subtrees, а затем оценивает соответствующие выходные аргументы. Размер Subtrees определяет размер некоторых выходных аргументов.

Призвать Subtrees, свойства PruneList и PruneAlpha из tree должен быть непустым. Другими словами, расти tree путем установки 'Prune','on'или путем обрезки tree использование prune.

Пример: 'Subtrees','all'

Типы данных: single | double | char | string

Размер дерева, указанный как одно из следующих значений:

  • 'se'cvloss использует наименьшее дерево, стоимость которого находится в пределах одной стандартной ошибки минимальной стоимости.

  • 'min'cvloss использует дерево минимальных затрат.

Пример: 'TreeSize','min'

Количество выборок перекрестной проверки, указанное как положительное целое значение больше 1.

Пример: 'KFold',8

Выходные аргументы

развернуть все

Ошибка классификации перекрестной проверки (потеря), возвращаемая как вектор или скаляр в зависимости от настройки Subtrees пара имя-значение.

Стандартная ошибка E, возвращается как вектор или скаляр в зависимости от установки Subtrees пара имя-значение.

Количество конечных узлов в tree, возвращается как вектор или скаляр в зависимости от установки Subtrees пара имя-значение. Конечные узлы - это терминальные узлы, которые дают классификации, а не разделения.

Наилучший уровень отсечения, возвращаемый как скалярное значение. По умолчанию скаляр, представляющий наибольший уровень отсечения, достигающий значения E в SE минимальной ошибки. Если установить TreeSize кому 'min', BestLevel - наименьшее значение в Subtrees.

Примеры

развернуть все

Вычислите ошибку перекрестной проверки для дерева классификации по умолчанию.

Загрузить ionosphere набор данных.

load ionosphere

Создайте дерево классификации, используя весь набор данных.

Mdl = fitctree(X,Y);

Вычислите ошибку перекрестной проверки.

rng(1); % For reproducibility
E = cvloss(Mdl)
E = 0.1168

E является 10-кратной ошибкой неправильной классификации.

Примените k-кратную перекрестную проверку, чтобы найти лучший уровень для удаления дерева классификации для всех его поддеревьев.

Загрузить ionosphere набор данных.

load ionosphere

Создайте дерево классификации, используя весь набор данных. Просмотр результирующего дерева.

Mdl = fitctree(X,Y);
view(Mdl,'Mode','graph')

Figure Classification tree viewer contains an axes and other objects of type uimenu, uicontrol. The axes contains 60 objects of type line, text.

Вычислите пятикратную ошибку перекрестной проверки для каждого поддерева, за исключением самого высокого уровня отсечения. Укажите, чтобы вернуть наилучший уровень отсечения для всех поддеревьев.

rng(1); % For reproducibility
m = max(Mdl.PruneList) - 1
m = 7
[E,~,~,bestLevel] = cvloss(Mdl,'SubTrees',0:m,'KFold',5)
E = 8×1

    0.1282
    0.1254
    0.1225
    0.1282
    0.1282
    0.1197
    0.0997
    0.1738

bestLevel = 6

Из 7 уровни обрезки, лучший уровень обрезки 6.

Обрезать дерево до наилучшего уровня. Просмотр результирующего дерева.

MdlPrune = prune(Mdl,'Level',bestLevel);
view(MdlPrune,'Mode','graph')

Figure Classification tree viewer contains an axes and other objects of type uimenu, uicontrol. The axes contains 12 objects of type line, text.

Альтернативы

Можно создать модель дерева с перекрестной проверкой с помощью crossvalи звоните kfoldLoss вместо cvloss. Если вы собираетесь исследовать перекрестно проверенное дерево более одного раза, то альтернатива может сэкономить время.

Однако, в отличие от cvloss, kfoldLoss не возвращается SE,Nleaf, или BestLevel. kfoldLoss также не позволяет проверить ошибку, отличную от ошибки классификации.

См. также

| | |