exponenta event banner

CompactClassificationTree

Пакет: classreg.learning.classif

Компактное дерево классификации

Описание

Компактная версия дерева классификации (класса ClassificationTree). Компактная версия не включает данные для обучения дерева классификации. Поэтому нельзя выполнять некоторые задачи с помощью компактного дерева классификации, такие как перекрестная проверка. Используйте компактное дерево классификации для прогнозирования (классификаций) новых данных.

Строительство

ctree = compact(tree) создает компактное дерево решений из полного дерева решений.

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

tree

Дерево решений, созданное с помощью fitctree.

Свойства

CategoricalPredictors

Индексы категориального предиктора, указанные как вектор положительных целых чисел. CategoricalPredictors содержит значения индекса, соответствующие столбцам данных предиктора, которые содержат категориальные предикторы. Если ни один из предикторов не категоричен, то это свойство пустое ([]).

CategoricalSplits

Массив ячеек n-by-2, где n - число категориальных разбиений в tree. Каждая строка в CategoricalSplits дает левое и правое значения для категориального разделения. Для каждого узла ветви с категориальным разделением j на основе категориальной предикторной переменной z, левый нижестоящий элемент выбирается, если z находится в CategoricalSplits(j,1) и правильный ребенок выбирается, если z находится в CategoricalSplits(j,2). Разбиения находятся в том же порядке, что и узлы дерева. Поиск узлов для этих разделений путем выбора 'categorical' вырезы сверху вниз в CutType собственность.

Children

Массив n-by-2, содержащий номера дочерних узлов для каждого узла в tree, где n - количество узлов. Конечные узлы имеют дочерний узел 0.

ClassCount

Массив классов n-by-k для узлов в tree, где n - число узлов, а k - число классов. Для любого номера узла i, класс считает ClassCount(i,:) являются счетчиками наблюдений (из данных, используемых при подгонке дерева) от каждого класса, удовлетворяющих условиям для узла i.

ClassNames

Список элементов в Y с удаленными дубликатами. ClassNames может быть числовым вектором, вектором категориальных переменных, логическим вектором, символьным массивом или массивом ячеек символьных векторов. ClassNames имеет тот же тип данных, что и данные в аргументе Y. (Программа рассматривает строковые массивы как массивы ячеек символьных векторов.)

Если значение свойства имеет хотя бы один размер длины k, то ClassNames указывает порядок элементов вдоль этого размера (например, Cost и Prior).

ClassProbability

Массив вероятностей классов n-by-k для узлов в tree, где n - число узлов, а k - число классов. Для любого номера узла i, вероятности классов ClassProbability(i,:) являются оцененными вероятностями для каждого класса для точки, удовлетворяющей условиям для узла i.

Cost

Квадратная матрица, где Cost(i,j) - стоимость классификации точки по классу j если его истинный класс i (строки соответствуют истинному классу, а столбцы соответствуют прогнозируемому классу). Порядок строк и столбцов Cost соответствует порядку классов в ClassNames. Количество строк и столбцов в Cost - количество уникальных классов в ответе. Это свойство доступно только для чтения.

CutCategories

Массив ячеек n-by-2 категорий, используемых в ветвях в tree, где n - количество узлов. Для каждого узла ветви i на основе категориальной предикторной переменной x, левый нижестоящий элемент выбирается, если x входит в число категорий, перечисленных в CutCategories{i,1}, и правильный ребенок выбирается, если x входит в число перечисленных в CutCategories{i,2}. Оба столбца CutCategories пусты для узлов ветвей на основе непрерывных предикторов и для конечных узлов.

CutPoint содержит точки реза для 'continuous' разрезы, и CutCategories содержит набор категорий.

CutPoint

Вектор n-элементов значений, используемых в качестве точек реза в tree, где n - количество узлов. Для каждого узла ветви i на основе переменной непрерывного предиктора x, левый нижестоящий элемент выбирается, если x<CutPoint(i) и правильный ребенок выбирается, если x>=CutPoint(i). CutPoint является NaN для узлов ветвей на основе категориальных предикторов и для узлов листьев.

CutPoint содержит точки реза для 'continuous' разрезы, и CutCategories содержит набор категорий.

CutType

Массив ячеек n-элементов, указывающий тип вырезания в каждом узле в tree, где n - количество узлов. Для каждого узла i, CutType{i} является:

  • 'continuous' - Если вырез определен в форме x < v для переменной x и точка реза v.

  • 'categorical' - Если вырез определяется тем, является ли переменная x принимает значение в наборе категорий.

  • '' - если i является конечным узлом.

CutPoint содержит точки реза для 'continuous' разрезы, и CutCategories содержит набор категорий.

CutPredictor

Массив ячеек n-элементов имен переменных, используемых для ветвления в каждом узле в tree, где n - количество узлов. Эти переменные иногда называются переменными разреза. Для конечных узлов CutPredictor содержит пустой символьный вектор.

CutPoint содержит точки реза для 'continuous' разрезы, и CutCategories содержит набор категорий.

CutPredictorIndex

Массив n-элементов числовых индексов для переменных, используемых для ветвления в каждом узле в tree, где n - количество узлов. Дополнительные сведения см. в разделе CutPredictor.

ExpandedPredictorNames

Расширенные имена предикторов, хранящиеся в виде клеточного массива символьных векторов.

Если модель использует кодировку для категориальных переменных, то ExpandedPredictorNames содержит имена, описывающие развернутые переменные. В противном случае ExpandedPredictorNames является таким же, как PredictorNames.

IsBranchNode

Логический вектор n-элемента, который является true для каждого узла ветви и false для каждого конечного узла tree.

NodeClass

Массив ячеек n-элементов с именами наиболее вероятных классов в каждом узле tree, где n - количество узлов в дереве. Каждый элемент этого массива является символьным вектором, равным одному из имен классов в ClassNames.

NodeError

Вектор n-элементов ошибок узлов в tree, где n - количество узлов. NodeError(i) - вероятность неправильной классификации для узла i.

NodeProbability

Вектор n-элементов вероятностей узлов в tree, где n - количество узлов. Вероятность узла вычисляется как доля наблюдений из исходных данных, которые удовлетворяют условиям для узла. Эта пропорция корректируется для любых предыдущих вероятностей, присвоенных каждому классу.

NodeRisk

Вектор n-элемента риска узлов в дереве, где n - количество узлов. Риск для каждого узла является мерой примеси (индекс Джини или отклонение) для этого узла, взвешенной по вероятности узла. Если дерево выращивается двояко, риск для каждого узла равен нулю.

NodeSize

Вектор n-элементов размеров узлов в tree, где n - количество узлов. Размер узла определяется как количество наблюдений из данных, используемых для создания дерева, удовлетворяющих условиям для узла.

NumNodes

Количество узлов в tree.

Parent

Вектор n-элемента, содержащий номер родительского узла для каждого узла в tree, где n - количество узлов. Родителем корневого узла является 0.

PredictorNames

Массив ячеек имен для переменных предиктора в порядке их появления в X.

Prior

Числовой вектор предшествующих вероятностей для каждого класса. Порядок элементов Prior соответствует порядку классов в ClassNames. Количество элементов Prior - количество уникальных классов в ответе. Это свойство доступно только для чтения.

PruneAlpha

Числовой вектор с одним элементом на уровень отсечения. Если уровень отсечения находится в диапазоне от 0 до M, то PruneAlpha имеет элементы M + 1, отсортированные по возрастанию. PruneAlpha(1) для уровня отсечения 0 (без отсечения), PruneAlpha(2) для отсечения уровня 1 и т.д.

PruneList

Числовой вектор n-элемента с уровнями отсечения в каждом узле tree, где n - количество узлов. Уровни отсечения варьируются от 0 (без отсечения) до M, где M - расстояние между самым глубоким листом и корневым узлом.

ResponseName

Символьный вектор, описывающий переменную ответа Y.

ScoreTransform

Дескриптор функции для преобразования баллов или символьного вектора, представляющего встроенную функцию преобразования. 'none' означает отсутствие трансформации; эквивалентно, 'none' средства @(x)x. Список встроенных функций преобразования и синтаксис пользовательских функций преобразования см. в разделе fitctree.

Добавить или изменить ScoreTransform функция, использующая точечную нотацию:

ctree.ScoreTransform = 'function'
or
ctree.ScoreTransform = @function

SurrogateCutCategories

Массив ячеек n-элементов категорий, используемых для суррогатных разбиений в tree, где n - количество узлов в tree. Для каждого узла k, SurrogateCutCategories{k} является массивом ячеек. Длина SurrogateCutCategories{k} равно количеству суррогатных предикторов, найденных в этом узле. Каждый элемент SurrogateCutCategories{k} является либо пустым символьным вектором для непрерывного суррогатного предиктора, либо является массивом двухэлементных ячеек с категориями для категориального суррогатного предиктора. Первый элемент этого двухэлементного массива ячеек перечисляет категории, назначенные левому потомку этим суррогатным разделением, а второй элемент этого двухэлементного массива ячеек перечисляет категории, назначенные правому потомку этим суррогатным разделением. Порядок суррогатных разделенных переменных в каждом узле соответствует порядку переменных в SurrogateCutVar. Переменная оптимального разделения в этом узле не отображается. Для узлов без ответвления (листа), SurrogateCutCategories содержит пустую ячейку.

SurrogateCutFlip

Массив ячеек n-элементов числовых назначений вырезов, используемых для суррогатных разбиений в tree, где n - количество узлов в tree. Для каждого узла k, SurrSurrogateCutFlip{k} - числовой вектор. Длина SurrogateCutFlip{k} равно количеству суррогатных предикторов, найденных в этом узле. Каждый элемент SurrogateCutFlip{k} является нулем для категориального суррогатного предиктора или числовым присвоением разреза для непрерывного суррогатного предиктора. Числовое назначение реза может быть равно -1 или + 1. Для каждого суррогатного разделения с числовым разрезом C, основанным на переменной непрерывного предиктора Z, выбирается левый потомок, если Z < C и назначение разреза для этого суррогатного разделения равно + 1, или если Z≥C и назначение разреза для этого суррогатного разделения равно -1. Аналогично, правильный нижестоящий элемент выбирается, если Z≥C и назначение вырезания для этого суррогатного разделения равно + 1, или если Z < C и назначение вырезания для этого суррогатного разделения равно -1. Порядок суррогатных разделенных переменных в каждом узле соответствует порядку переменных вSurrogateCutPredictor. Переменная оптимального разделения в этом узле не отображается. Для узлов без ответвления (листа), SurrogateCutFlip содержит пустой массив.

SurrogateCutPoint

Массив ячеек n-элементов числовых значений, используемых для суррогатных разбиений в tree, где n - количество узлов в tree. Для каждого узла k, SurrogateCutPoint{k} - числовой вектор. Длина SurrogateCutPoint{k} равно количеству суррогатных предикторов, найденных в этом узле. Каждый элемент SurrogateCutPoint{k} является либо NaN для категориального суррогатного предиктора или числового разреза для непрерывного суррогатного предиктора. Для каждого суррогатного разделения с числовым разрезом C на основе непрерывной прогнозирующей переменной Z выбирается левый нижестоящий элемент, если Z < C иSurrogateCutFlip для этого суррогатного разделения + 1, или если Z≥C иSurrogateCutFlip для этого суррогатного разделения -1. Аналогично, правильный ребенок выбирается, если Z≥C и SurrogateCutFlip для этого суррогатного разделения + 1, или если Z < C иSurrogateCutFlip для этого суррогатного разделения -1. Порядок суррогатных разделенных переменных в каждом узле соответствует порядку переменных, возвращаемых SurrogateCutPredictor. Переменная оптимального разделения в этом узле не отображается. Для узлов без ответвления (листа), SurrogateCutPoint содержит пустую ячейку.

SurrogateCutType

Массив ячеек n-элементов, указывающий типы суррогатных разбиений на каждом узле в tree, где n - количество узлов в tree. Для каждого узла k, SurrogateCutType{k} является массивом ячеек с типами суррогатных разделенных переменных в этом узле. Переменные сортируются по прогностической мере ассоциации с оптимальным предиктором в порядке убывания, и включаются только переменные с положительной прогностической мерой. Порядок суррогатных разделенных переменных в каждом узле соответствует порядку переменных в SurrogateCutPredictor. Переменная оптимального разделения в этом узле не отображается. Для узлов без ответвления (листа), SurrogateCutType содержит пустую ячейку. Суррогатный тип разделения может быть 'continuous' если вырез определен в форме Z<V для переменной Z и точка реза V или 'categorical' если вырез определяется тем, определяется ли Z принимает значение в наборе категорий.

SurrogateCutPredictor

Массив ячеек n-элементов имен переменных, используемых для суррогатных разбиений в каждом узле в tree, где n - количество узлов в tree. Каждый элемент SurrogateCutPredictor - массив ячеек с именами суррогатных разделенных переменных в этом узле. Переменные сортируются по прогностической мере ассоциации с оптимальным предиктором в порядке убывания, и включаются только переменные с положительной прогностической мерой. Переменная оптимального разделения в этом узле не отображается. Для узлов без ответвления (листа), SurrogateCutPredictor содержит пустую ячейку.

SurrogatePredictorAssociation

Массив ячеек n-элементов прогностических показателей ассоциации для суррогатных расщеплений в tree, где n - количество узлов в tree. Для каждого узла k, SurrogatePredictorAssociation{k} - числовой вектор. Длина SurrogatePredictorAssociation{k} равно количеству суррогатных предикторов, найденных в этом узле. Каждый элемент SurrogatePredictorAssociation{k} дает прогностическую меру связи между оптимальным разделением и этим суррогатным разделением. Порядок суррогатных разделенных переменных в каждом узле - это порядок переменных в SurrogateCutPredictor. Переменная оптимального разделения в этом узле не отображается. Для узлов без ответвления (листа), SurrogatePredictorAssociation содержит пустую ячейку.

Функции объекта

compareHoldoutСравнение точности двух классификационных моделей с использованием новых данных
edgeКрай классификации
limeЛокальные интерпретируемые модели-агностические объяснения (LIME)
lossОшибка классификации
marginПоля классификации
partialDependenceВычислить частичную зависимость
plotPartialDependenceСоздание графиков частичной зависимости (PDP) и индивидуального условного ожидания (ICE)
predictПрогнозирование меток с помощью дерева классификации
predictorImportanceОценки важности предиктора для дерева классификации
shapleyЗначения Шапли
surrogateAssociationСредняя прогностическая мера ассоциации для суррогатных расщеплений в дереве классификации
updateОбновление параметров модели для создания кода
viewПросмотр дерева классификации

Копирование семантики

Значение. Сведения о том, как классы значений влияют на операции копирования, см. в разделе Копирование объектов.

Примеры

свернуть все

Создайте компактное дерево классификации для данных радужки Фишера.

load fisheriris
tree = fitctree(meas,species);
ctree = compact(tree);

Сравните размер результирующего дерева с размером исходного дерева.

t = whos('tree'); % t.bytes = size of tree in bytes
c = whos('ctree'); % c.bytes = size of ctree in bytes
[c.bytes t.bytes]
ans = 1×2

        5097       11762

Компактное дерево меньше исходного.

Подробнее

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

Расширенные возможности

.
Представлен в R2011a