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) крест подтверждает с дополнительными опциями, заданными одним или несколькими 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 mustBeNonempty. Другими словами, вырастите tree установкой 'Prune','on', или путем сокращения tree использование prune.

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

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

Древовидный размер, заданный как разделенная запятой пара, состоящая из 'TreeSize' и одно из следующих значений:

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

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

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

Количество выборок перекрестной проверки, заданных как разделенная запятой пара, состоящая из KFold и положительного целочисленного значения, больше, чем 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.1111

E 10-кратная misclassification ошибка.

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

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

load ionosphere

Вырастите дерево классификации использование целого набора данных. Просмотрите получившееся дерево.

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

Вычислите 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.1368
    0.1339
    0.1311
    0.1339
    0.1339
    0.1254
    0.0997
    0.1738

bestLevel = 6

Из 7 сокращая уровни, лучшим уровнем сокращения является 6.

Сократите дерево к лучшему уровню. Просмотрите получившееся дерево.

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

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

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

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

Смотрите также

| | |