cvloss

Класс: ClassificationTree

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

Синтаксис

E = cvloss(tree)
[E,SE] = cvloss(tree)
[E,SE,Nleaf] = cvloss(tree)
[E,SE,Nleaf,BestLevel] = cvloss(tree)
[___] = cvloss(tree,Name,Value)

Описание

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 должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: 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

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

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

| | |