exponenta event banner

предсказать

Прогнозирование меток с помощью дерева классификации

Описание

label = predict(Mdl,X) возвращает вектор прогнозируемых меток класса для данных предиктора в таблице или матрице X, на основе обученного, полного или компактного дерева классификации Mdl.

label = predict(Mdl,X,Name,Value) использует дополнительные параметры, указанные одним или несколькими Name,Value аргументы пары. Например, можно указать обрезку Mdl на определенный уровень перед предсказанием меток.

[label,score,node,cnum] = predict(___) использует любой из входных аргументов в предыдущих синтаксисах и дополнительно возвращает:

  • Матрица классификационных баллов (score), указывая вероятность того, что метка исходит от определенного класса. Для деревьев классификации оценки являются задними вероятностями. Для каждого наблюдения в X, прогнозируемая метка класса соответствует минимальной ожидаемой стоимости неправильной классификации среди всех классов.

  • Вектор предсказанных номеров узлов для классификации (node).

  • Вектор прогнозируемого номера класса для классификации (cnum).

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

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

Обученное дерево классификации, указанное как ClassificationTree или CompactClassificationTree объект модели. То есть Mdl является обученной моделью классификации, возвращенной fitctree или compact.

Данные предиктора, подлежащие классификации, указываются как числовая матрица или таблица.

Каждая строка 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 является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.

Уровень отсечения, заданный как разделенная запятыми пара, состоящая из '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около-T массив ячеек.

  • В противном случае label является Nоколо-T массив, имеющий тот же тип данных, что и ответ. (Программа рассматривает строковые массивы как массивы ячеек символьных векторов.)

В двух последних случаях колонка j из label содержит вектор прогнозируемых меток, созданных поддеревом Subtrees(j).

Апостериорные вероятности, возвращаемые в виде числовой матрицы размера Nоколо-K, где N - количество наблюдений (строк) в X, и K - количество классов (в Mdl.ClassNames). score(i,j) - задняя вероятность того, что строка i из X имеет класс j.

Если Subtrees имеет T элементы, и X имеет N строки, затем score является Nоколо-Kоколо-T массив, и node и cnum являются Nоколо-T матрицы.

Номера узлов для прогнозируемых классов, возвращаемые в виде числового вектора. Каждая запись соответствует прогнозируемому узлу в Mdl для соответствующей строки X.

Номера классов, соответствующие прогнозируемому 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
    {'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')

Figure Classification tree viewer contains an axes and other objects of type uimenu, uicontrol. The axes contains 18 objects of type line, text.

Полученное дерево имеет четыре уровня.

Оцените апостериорные вероятности для тестового набора с использованием поддеревьев, отсеченных до уровней 1 и 3.

[~,Posterior] = predict(Mdl,meas(idxVal,:),'SubTrees',[1 3]);
Mdl.ClassNames
ans = 3x1 cell
    {'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 генерирует прогнозы, следуя ветвям Mdl до тех пор, пока он не достигнет конечного узла или отсутствующего значения. Если predict достигает конечного узла, возвращает классификацию этого узла.

Если predict достигает узла с отсутствующим значением для предиктора, его поведение зависит от установки Surrogate пара имя-значение, когда fitctree конструкции Mdl.

  • Surrogate = 'off' (по умолчанию) - predict возвращает метку с наибольшим количеством обучающих образцов, достигающих узла.

  • Surrogate = 'on'predict использует наилучшее суррогатное разделение в узле. Если все суррогатные разделенные переменные с положительной прогностической мерой ассоциации отсутствуют, predict возвращает метку с наибольшим количеством обучающих образцов, достигающих узла. Определение см. в разделе Предиктивная мера связи.

Альтернативная функциональность

Блок симулятора

Чтобы интегрировать прогнозирование модели дерева классификации в Simulink ®, можно использовать блок Прогнозирование дерева классификации в библиотеке Toolbox™ статистики и машинного обучения или функциональный блок MATLAB ® с помощью predict функция. Для примеров посмотрите, Предсказывают, что Этикетки Класса Используя ClassificationTree Предсказывают Блок и Предсказывают Этикетки Класса Используя Функциональный блок MATLAB.

При принятии решения о том, какой подход использовать, необходимо учитывать следующее:

  • При использовании блока библиотеки инструментов «Статистика и машинное обучение» для преобразования модели с плавающей запятой в фиксированную можно использовать инструмент «Фиксированная точка» (Fixed-Point Designer).

  • Поддержка массивов переменного размера должна быть включена для функционального блока MATLAB с predict функция.

  • При использовании функционального блока MATLAB можно использовать функции MATLAB для предварительной обработки или последующей обработки до или после прогнозирования в том же функциональном блоке MATLAB.

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

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