Предскажите метки с помощью дерева классификации
label = predict(Mdl,X)
label = predict(Mdl,X,Name,Value)
[label,score,node,cnum]
= predict(___)
дополнительные опции использования заданы одним или несколькими аргументами пары label
= predict(Mdl
,X
,Name,Value
)Name,Value
. Например, можно задать, чтобы сократить Mdl
к конкретному уровню прежде, чем предсказать метки.
[
использование любой входной параметр в предыдущих синтаксисах и дополнительно возвращается:label
,score
,node
,cnum
]
= predict(___)
Матрица очков классификации (score
), указывающий на вероятность, что метка прибывает из конкретного класса. Для деревьев классификации очки являются апостериорными вероятностями. Для каждого наблюдения в X
предсказанная метка класса соответствует ожидаемой стоимости misclassification минимума среди всех классов.
Вектор предсказанных чисел узла для классификации (node
).
Вектор предсказанного классификационного индекса для классификации (cnum
).
Mdl
— Обученное дерево классификацииClassificationTree
| объект модели CompactClassificationTree
Обученное дерево классификации, заданное как ClassificationTree
или объект модели CompactClassificationTree
. Таким образом, Mdl
является обученной моделью классификации, возвращенной fitctree
или compact
.
X
Данные о предикторе, которые будут классифицированыДанные о предикторе, которые будут классифицированы, заданные как числовая матрица или таблица.
Каждая строка X
соответствует одному наблюдению, и каждый столбец соответствует одной переменной.
Для числовой матрицы:
Переменные, составляющие столбцы X
, должны иметь тот же порядок как переменные прогноза, которые обучили Mdl
.
Если вы обучили Mdl
с помощью таблицы (например, Tbl
), то X
может быть числовой матрицей, если Tbl
содержит все числовые переменные прогноза. Чтобы обработать числовые предикторы в Tbl
как категориальные во время обучения, идентифицируйте категориальные предикторы с помощью аргумента пары "имя-значение" CategoricalPredictors
fitctree
. Если Tbl
содержит неоднородные переменные прогноза (например, типы числовых и категориальных данных), и X
является числовой матрицей, то predict
выдает ошибку.
Для таблицы:
predict
не поддерживает многостолбцовые переменные и массивы ячеек кроме массивов ячеек из символьных векторов.
Если бы вы обучили Mdl
с помощью таблицы (например, Tbl
), то все переменные прогноза в X
должны иметь те же имена переменных и типы данных как те, которые обучили Mdl
(сохраненный в Mdl.PredictorNames
). Однако порядок следования столбцов X
не должен соответствовать порядку следования столбцов Tbl
. Tbl
и X
могут содержать дополнительные переменные (переменные отклика, веса наблюдения, и т.д.), но predict
игнорирует их.
Если бы вы обучили Mdl
с помощью числовой матрицы, то имена предиктора в Mdl.PredictorNames
и соответствующие имена переменной прогноза в X
должны быть тем же самым. Чтобы задать имена предиктора во время обучения, смотрите аргумент пары "имя-значение" PredictorNames
fitctree
. Все переменные прогноза в X
должны быть числовыми векторами. X
может содержать дополнительные переменные (переменные отклика, веса наблюдения, и т.д.), но predict
игнорирует их.
Типы данных: table
| double
| single
Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми.
Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение.
Name
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.
'Subtrees'
— Сокращение уровня'all'
Сокращение уровня, заданного как пара, разделенная запятой, состоящая из 'Subtrees'
и вектор неотрицательных целых чисел в порядке возрастания или 'all'
.
Если вы задаете вектор, то всеми элементами должен быть, по крайней мере, 0
и в большей части max(Mdl.PruneList)
. 0
указывает на полное, несокращенное дерево, и max(Mdl.PruneList)
указывает на полностью сокращенное дерево (т.е. только корневой узел).
Если вы задаете 'all'
, то predict
работает со всеми поддеревьями (т.е. целая последовательность сокращения). Эта спецификация эквивалентна использованию 0:max(Mdl.PruneList)
.
predict
сокращает Mdl
к каждому уровню, обозначенному в Subtrees
, и затем оценивает соответствующие выходные аргументы. Размер Subtrees
определяет размер некоторых выходных аргументов.
Чтобы вызвать Subtrees
, свойства PruneList
и PruneAlpha
Mdl
должны быть непустыми. Другими словами, вырастите Mdl
установкой 'Prune','on'
, или путем сокращения Mdl
с помощью prune
.
Пример: 'Subtrees','all'
Типы данных: single
| double
| char
| string
метка
Предсказанные метки классаПредсказанные метки класса, возвращенные как вектор или массив. Каждая запись label
соответствует классу с минимальной ожидаемой стоимостью для соответствующей строки X
.
Предположим, что Subtrees
является числовым вектором, содержащим элементы T
(для 'all'
, смотрите Subtrees
), и X
имеет строки N
.
Если типом данных ответа является char
и:
T
= 1, затем label
является символьной матрицей, содержащей строки N
. Каждая строка содержит предсказанную метку, произведенную поддеревом Subtrees
.
T
> 1, затем label
является N
-by-T
массив ячеек.
В противном случае label
является N
-by-T
массив, имеющий совпадающий тип данных как ответ. (Программное обеспечение обрабатывает строковые массивы как массивы ячеек из символьных векторов.)
В последних двух случаях столбец j
label
содержит вектор предсказанных меток, произведенных поддеревом
.Subtrees(j)
score
— Апостериорные вероятностиАпостериорные вероятности, возвращенные как числовая матрица размера N
-by-K
, где N
является количеством наблюдений (строки) в X
и K
, являются количеством классов (в Mdl.ClassNames
). score(i,j)
является апостериорной вероятностью, что строка i
X
имеет класс j
.
Если Subtrees
имеет элементы T
, и X
имеет строки N
, то score
является N
-by-K-by-
T
массив, и node
и cnum
является N
-by-T
матрицы.
cnum
— Классификационные индексыКлассификационные индексы, соответствующие предсказанному labels
, возвращенному как числовой вектор. Каждая запись cnum
соответствует предсказанному классификационному индексу для соответствующей строки X
.
Исследуйте прогнозы на несколько строк в наборе данных, упущенном из обучения.
Загрузите ирисовый набор данных Фишера.
load fisheriris
Разделите данные в обучение (50%) и валидацию (50%-е) наборы.
n = size(meas,1); rng(1) % For reproducibility idxTrn = false(n,1); idxTrn(randsample(n,round(0.5*n))) = true; % Training set logical indices idxVal = idxTrn == false; % Validation set logical indices
Вырастите дерево классификации использование набора обучающих данных.
Mdl = fitctree(meas(idxTrn,:),species(idxTrn));
Предскажите метки для данных о валидации. Считайте количество неправильно классифицированных наблюдений.
label = predict(Mdl,meas(idxVal,:));
label(randsample(numel(label),5)) % Display several predicted labels
ans = 5x1 cell array
{'setosa' }
{'setosa' }
{'setosa' }
{'virginica' }
{'versicolor'}
numMisclass = sum(~strcmp(label,species(idxVal)))
numMisclass = 3
Программное обеспечение неправильно классифицирует три наблюдения из выборки.
Загрузите ирисовый набор данных Фишера.
load fisheriris
Разделите данные в обучение (50%) и валидацию (50%-е) наборы.
n = size(meas,1); rng(1) % For reproducibility idxTrn = false(n,1); idxTrn(randsample(n,round(0.5*n))) = true; % Training set logical indices idxVal = idxTrn == false; % Validation set logical indices
Вырастите дерево классификации использование набора обучающих данных, и затем просмотрите его.
Mdl = fitctree(meas(idxTrn,:),species(idxTrn)); view(Mdl,'Mode','graph')
Получившееся дерево имеет четыре уровня.
Оцените апостериорные вероятности для набора тестов с помощью поддеревьев, сокращенных к уровням 1 и 3.
[~,Posterior] = predict(Mdl,meas(idxVal,:),'SubTrees',[1 3]);
Mdl.ClassNames
ans = 3x1 cell array
{'setosa' }
{'versicolor'}
{'virginica' }
Posterior(randsample(size(Posterior,1),5),:,:),... % Display several posterior probabilities
ans = ans(:,:,1) = 1.0000 0 0 1.0000 0 0 1.0000 0 0 0 0 1.0000 0 0.8571 0.1429 ans(:,:,2) = 0.3733 0.3200 0.3067 0.3733 0.3200 0.3067 0.3733 0.3200 0.3067 0.3733 0.3200 0.3067 0.3733 0.3200 0.3067
Элементы Posterior
являются апостериорными вероятностями класса:
Строки соответствуют наблюдениям в наборе валидации.
Столбцы соответствуют классам, как перечислено в Mdl.ClassNames
.
Страницы соответствуют поддеревьям.
Поддерево, сокращенное к уровню 1, более уверено в своих прогнозах, чем поддерево, сокращенное к уровню 3 (т.е. корневой узел).
predict
классифицирует путем минимизации ожидаемой стоимости классификации:
где
предсказанная классификация.
K является количеством классов.
апостериорная вероятность класса j для наблюдения x.
стоимость классификации наблюдения как y, когда его истинным классом является j.
Для деревьев score классификации вершины является апостериорной вероятностью классификации в том узле. Апостериорная вероятность классификации в узле является количеством обучающих последовательностей, которые приводят к тому узлу с классификацией, разделенной на количество обучающих последовательностей, которые приводят к тому узлу.
Например, считайте классификацию предиктора X
как true
, когда X
< 0.15
или X
> 0.95
и X
будет ложным в противном случае.
Сгенерируйте 100 случайных точек и классифицируйте их:
rng(0,'twister') % for reproducibility X = rand(100,1); Y = (abs(X - .55) > .4); tree = fitctree(X,Y); view(tree,'Mode','Graph')
Сократите дерево:
tree1 = prune(tree,'Level',1); view(tree1,'Mode','Graph')
Сокращенное дерево правильно классифицирует наблюдения, которые являются меньше чем 0,15 как true
. Это также правильно классифицирует наблюдения от.15 до.94 как false
. Однако это неправильно классифицирует наблюдения, которые больше, чем.94 как false
. Поэтому счет к наблюдениям, которые больше, чем.15, должен быть о.05/.85 =. 06 для true
, и о.8/.85 =. 94 для false
.
Вычислите музыку прогноза к первым 10 строкам X
:
[~,score] = predict(tree1,X(1:10)); [score X(1:10,:)]
ans = 10×3
0.9059 0.0941 0.8147
0.9059 0.0941 0.9058
0 1.0000 0.1270
0.9059 0.0941 0.9134
0.9059 0.0941 0.6324
0 1.0000 0.0975
0.9059 0.0941 0.2785
0.9059 0.0941 0.5469
0.9059 0.0941 0.9575
0.9059 0.0941 0.9649
Действительно, каждое значение X
(крайний правый столбец), который является меньше чем 0,15, сопоставило очки (левые и центральные столбцы) 0
и 1
, в то время как другие значения X
сопоставили множество 0.91
и 0.09
. Различие (выигрывают 0.09
вместо ожидаемого .06
) происходит из-за статистического колебания: существуют наблюдения 8
в X
в области значений (.95,1)
вместо ожидаемых наблюдений 5
.
Существует два затрат, сопоставленные с классификацией: истинная стоимость misclassification в классе и ожидаемый misclassification стоятся на наблюдение.
Можно установить истинную стоимость misclassification в классе в паре "имя-значение" Cost
, когда вы создаете классификатор с помощью метода fitctree
. Cost(i,j)
является стоимостью классификации наблюдения в класс j
, если его истинным классом является i
. По умолчанию, Cost(i,j)=1
, если i~=j
и Cost(i,j)=0
, если i=j
. Другими словами, стоимостью является 0
для правильной классификации и 1
для неправильной классификации.
Существует два затрат, сопоставленные с классификацией: истинная стоимость misclassification в классе и ожидаемый misclassification стоятся на наблюдение.
Предположим, что у вас есть наблюдения Nobs
, что вы хотите классифицировать с обученным классификатором. Предположим, что у вас есть классы K
. Вы помещаете наблюдения в матричный Xnew
с одним наблюдением на строку.
Ожидаемая матрица стоимости CE
имеет размер Nobs
-by-K
. Каждая строка CE
содержит ожидаемую (среднюю) стоимость классификации наблюдения в каждый из классов K
. CE(n,k)
где
K является количеством классов.
апостериорная вероятность класса i для наблюдения Xnew (n).
истинная misclassification стоимость классификации наблюдения как k, когда его истинным классом является i.
predictive measure of association является значением, которое указывает, что подобие между решением управляет что наблюдения разделения. Среди всех возможных разделений решения, которые сравниваются с оптимальным разделением (найденный путем роста дерева), лучшее суррогатное разделение решения приводит к максимальной прогнозирующей мере ассоциации. Второсортное суррогатное разделение имеет вторую по величине прогнозирующую меру ассоциации.
Предположим, что xj и xk являются переменными прогноза j и k, соответственно, и j ≠ k. В узле t прогнозирующая мера ассоциации между оптимальным разделением xj <u и суррогат разделяют xk <v
PL является пропорцией наблюдений в узле t, такой что xj <u. Нижний L выдерживает за покинутый дочерний элемент узла t.
PR является пропорцией наблюдений в узле t, такой что xj ≥ u. Нижний R выдерживает за правильный дочерний элемент узла t.
пропорция наблюдений в узле t, такой что xj <u и xk <v.
пропорция наблюдений в узле t, такой что xj ≥ u и xk ≥ v.
Наблюдения с отсутствующими значениями для xj или xk не способствуют вычислениям пропорции.
λjk является значением в (– ∞, 1]. Если λjk> 0, то xk <v является стоящим суррогатным разделением для xj <u.
predict
генерирует прогнозы следующим ответвления Mdl
, пока это не достигает вершины или отсутствующего значения. Если predict
достигает вершины, он возвращает классификацию того узла.
Если predict
достигает узла с отсутствующим значением для предиктора, его поведение зависит от установки пары "имя-значение" Surrogate
, когда fitctree
создает Mdl
.
Surrogate
= 'off'
(значение по умолчанию) — predict
возвращает метку с наибольшим числом учебных выборок, которые достигают узла.
Surrogate
= 'on'
— predict
использует лучшее суррогатное разделение в узле. Если все суррогатные переменные разделения с положительным predictive measure of association отсутствуют, predict
возвращает метку с наибольшим числом учебных выборок, которые достигают узла. Для определения смотрите Прогнозирующую Меру Ассоциации.
Эта функция полностью поддерживает "высокие" массивы. Для получения дополнительной информации смотрите Длинные массивы (MATLAB).
Указания и ограничения по применению:
Используйте saveCompactModel
, loadCompactModel
и codegen
, чтобы сгенерировать код для функции predict
. Сохраните обученную модель при помощи saveCompactModel
. Задайте функцию точки входа, которая загружает сохраненную модель при помощи loadCompactModel
и вызывает функцию predict
. Затем используйте codegen
, чтобы сгенерировать код для функции точки входа.
Эта таблица содержит примечания об аргументах predict
. Аргументы, не включенные в эту таблицу, полностью поддержаны.
Аргумент | Примечания и ограничения |
---|---|
Mdl | Для указаний и ограничений по применению объекта модели смотрите
Генерацию кода объекта |
X |
|
label | Если типом данных ответа является char , и codegen не может решить, что значение Subtrees является скаляром, то label является массивом ячеек из символьных векторов. |
Аргументы в виде пар имя-значение |
Имена в аргументах пары "имя-значение" должны быть константами времени компиляции. Например, чтобы позволить пользовательские уровни сокращения в сгенерированном коде, включайте |
Для получения дополнительной информации смотрите Введение в Генерацию кода.
ClassificationTree
| CompactClassificationTree
| compact
| edge
| fitctree
| loss
| margin
| prune
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.