cvloss

Класс: ClassificationTree

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

Описание

E = cvloss(tree) возвращает перекрестно проверенную ошибку классификации (потерю) для tree, классификационное дерево. The 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-fold, чтобы найти лучший уровень для обрезки дерева классификации для всех его поддеревьев.

Загрузите 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.

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

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 также не позволяет вам исследовать любую ошибку, кроме ошибки классификации.

См. также

| | |