ClassificationPartitionedModel

Пакет: classreg.learning.partition

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

Описание

ClassificationPartitionedModel - набор классификационных моделей, обученных на перекрестных проверенных складках. Оцените качество классификации путем перекрестной валидации с помощью одного или нескольких методов «kfold»: kfoldPredict, kfoldLoss, kfoldMargin, kfoldEdge, и kfoldfun.

Каждый метод «kfold» использует модели, обученные внутрикратным наблюдениям, чтобы предсказать ответ для несовпадающих наблюдений. Например, предположим, что вы пересекаете проверку с помощью пяти складок. В этом случае программное обеспечение случайным образом присваивает каждое наблюдение пяти группам примерно одинакового размера. training fold содержит четыре группы (т.е. примерно 4/5 данных), а test fold - другую группу (т.е. примерно 1/5 данных). В этом случае перекрестная валидация выполняется следующим образом:

  • Программное обеспечение обучает первую модель (хранится в CVMdl.Trained{1}) использование наблюдений в последних четырех группах и резервирует наблюдения в первой группе для валидации.

  • Программное обеспечение обучает вторую модель (хранится в CVMdl.Trained{2}) использование наблюдений в первой группе и последних трех группах и резервирует наблюдения во второй группе для валидации.

  • Программа работает подобным образом для третьей-пятой моделей.

Если вы подтверждаете, вызывая kfoldPredict, он вычисляет предсказания для наблюдений в группе 1, используя первую модель, группу 2 для второй модели и так далее. Короче говоря, программное обеспечение оценивает ответ для каждого наблюдения, используя модель, обученную без этого наблюдения.

Конструкция

CVMdl = crossval(Mdl) создает перекрестно проверенную классификационную модель из классификационной модели (Mdl).

В качестве альтернативы:

  • CVDiscrMdl = fitcdiscr(X,Y,Name,Value)

  • CVKNNMdl = fitcknn(X,Y,Name,Value)

  • CVNetMdl = fitcnet(X,Y,Name,Value)

  • CVNBMdl = fitcnb(X,Y,Name,Value)

  • CVSVMMdl = fitcsvm(X,Y,Name,Value)

  • CVTreeMdl = fitctree(X,Y,Name,Value)

создать перекрестно проверенную модель при Name является либо 'CrossVal', 'KFold', 'Holdout', 'Leaveout', или 'CVPartition'. Для получения дополнительной информации о синтаксисе см. fitcdiscr, fitcknn, fitcnet, fitcnb, fitcsvm, и fitctree.

Входные параметры

Mdl

Классификационная модель, заданная как одно из следующего:

  • Классификационное дерево, обученное с использованием fitctree

  • Классификатор дискриминантного анализа, обученный с использованием fitcdiscr

  • Классификатор нейронной сети, обученный с помощью fitcnet

  • Наивный классификатор Байеса, обученный с использованием fitcnb

  • Ближайший соседний классификатор, обученный с использованием fitcknn

  • Классификатор машины опорных векторов, обученный с помощью fitcsvm

Свойства

BinEdges

Границы интервала для числовых предикторов, заданные как массив ячеек из p числовых векторов, где p - количество предикторов. Каждый вектор включает границы интервала для числового предиктора. Элемент в массиве ячеек для категориального предиктора пуст, потому что программное обеспечение не встраивает категориальные предикторы.

Программное обеспечение помещает числовые предикторы только, если вы задаете 'NumBins' аргумент имя-значение как положительный целочисленный скаляр при обучении модели с учениками дерева. The BinEdges свойство пустое, если 'NumBins' значение пустое (по умолчанию).

Можно воспроизвести привязанные данные предиктора Xbinned при помощи BinEdges свойство обученной модели mdl.

X = mdl.X; % Predictor data
Xbinned = zeros(size(X));
edges = mdl.BinEdges;
% Find indices of binned predictors.
idxNumeric = find(~cellfun(@isempty,edges));
if iscolumn(idxNumeric)
    idxNumeric = idxNumeric';
end
for j = idxNumeric 
    x = X(:,j);
    % Convert x to array if x is a table.
    if istable(x) 
        x = table2array(x);
    end
    % Group x into bins by using the discretize function.
    xbinned = discretize(x,[-inf; edges{j}; inf]); 
    Xbinned(:,j) = xbinned;
end
Xbinned содержит индексы интервала в диапазоне от 1 до количества интервалов для числовых предикторов. Xbinned значения 0 для категориальных предикторов. Если X содержит NaNs, затем соответствующее Xbinned значения NaNс.

CategoricalPredictors

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

Если Mdl является обученным классификатором дискриминантного анализа, затем CategoricalPredictors всегда пуст ([]).

ClassNames

Уникальные метки классов, используемые в обучении модели, заданные как категориальный или символьный массив, логический или числовой вектор или массив ячеек векторов символов.

Cost

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

Если CVModel является перекрестно проверенным ClassificationDiscriminant, ClassificationKNN, или ClassificationNaiveBayes модель, тогда можно изменить ее матрицу затрат на, например CostMatrix, с использованием записи через точку.

CVModel.Cost = CostMatrix;

CrossValidatedModel

Имя перекрестно проверенной модели, которая является вектором символов.

KFold

Количество складок, используемых в перекрестно проверенной модели, которая является положительным целым числом.

ModelParameters

Параметры хранения объектов CVModel.

NumObservations

Количество наблюдений в обучающих данных, хранимых в X и Y, заданный как числовой скаляр.

Partition

Разбиение классов на CVPartition используется при создании перекрестно проверенной модели.

PredictorNames

Имена переменных предиктора, заданные как массив ячеек из векторов символов. Порядок элементов PredictorNames соответствует порядку, в котором имена предикторов появляются в обучающих данных.

Prior

Числовой вектор априорных вероятностей для каждого класса. Порядок элементов Prior соответствует порядку классов в ClassNames.

Если CVModel является перекрестно проверенным ClassificationDiscriminant или ClassificationNaiveBayes модель, тогда можно изменить ее вектор априоров на, например priorVector, с использованием записи через точку.

CVModel.Prior = priorVector;

ResponseName

Имя переменной отклика, заданное как вектор символов.

ScoreTransform

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

Чтобы изменить функцию преобразования счета на functionдля примера используйте запись через точку.

  • Для встроенной функции введите вектор символов.

    Mdl.ScoreTransform = 'function';

    В этой таблице описываются доступные встроенные функции.

    ЗначениеОписание
    'doublelogit'1/(1 + e–2x)
    'invlogit'журнал (x/( 1 - x))
    'ismax'Устанавливает счет для класса с самым большим счетом равным 1 и устанавливает счета для всех других классов равным 0
    'logit'1/(1 + ex)
    'none' или 'identity'x (без преобразования)
    'sign'-1 для x < 0
    0 для x = 0
    1 для x > 0
    'symmetric'2 x – 1
    'symmetricismax'Устанавливает счет для класса с самым большим счетом равным 1 и устанавливает счета для всех других классов равной -1
    'symmetriclogit'2/(1 + ex) – 1

  • Для MATLAB® function или функция, которую вы задаете, вводите указатель на функцию.

    Mdl.ScoreTransform = @function;

    function необходимо принять матрицу (исходные счета) и вернуть матрицу того же размера (преобразованные счета).

Trained

Обученные учащиеся, который является массивом ячеек компактных классификационных моделей.

W

Масштабированный weights, который является вектором с длиной n, количество наблюдений в X.

X

Матрица или таблица значений предиктора.

Y

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

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

kfoldEdgeКлассификационные ребра для перекрестно проверенной классификационной модели
kfoldLossКлассификационные потери для перекрестно проверенной классификационной модели
kfoldMarginКлассификационные поля для перекрестно проверенной классификационной модели
kfoldPredictКлассифицируйте наблюдения в перекрестно проверенной классификационной модели
kfoldfunФункция перекрестной проверки для классификации

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

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

Примеры

свернуть все

Вычислите ошибку перекрестной валидации k-fold для модели дерева классификации.

Загрузите набор данных радужки Фишера.

load fisheriris

Обучите дерево классификации с помощью опций по умолчанию.

Mdl = fitctree(meas,species);

Перекрестная проверка древовидной модели классификации.

CVMdl = crossval(Mdl);

Оцените 10-кратные потери перекрестной валидации.

L = kfoldLoss(CVMdl)
L = 0.0533

Оцените апостериорные вероятности положительного класса для тестового набора алгоритма SVM.

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

load ionosphere

Обучите классификатор SVM. Задайте 20% -ная выборка удержания. Это хорошая практика, чтобы стандартизировать предикторы и задать порядок классов.

rng(1) % For reproducibility
CVSVMModel = fitcsvm(X,Y,'Holdout',0.2,'Standardize',true,...
    'ClassNames',{'b','g'});

CVSVMModel является обученным ClassificationPartitionedModel перекрестно проверенный классификатор.

Оцените оптимальную функцию счета для отображения счетов наблюдений к апостериорным вероятностям наблюдения, классифицируемого как 'g'.

ScoreCVSVMModel = fitSVMPosterior(CVSVMModel);

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

Оцените апостериорные вероятности положительного класса вне выборки. Отобразите результаты для первых 10 выборочных наблюдений.

[~,OOSPostProbs] = kfoldPredict(ScoreCVSVMModel);
indx = ~isnan(OOSPostProbs(:,2));
hoObs = find(indx); % Holdout observation numbers
OOSPostProbs = [hoObs, OOSPostProbs(indx,2)];
table(OOSPostProbs(1:10,1),OOSPostProbs(1:10,2),...
    'VariableNames',{'ObservationIndex','PosteriorProbability'})
ans=10×2 table
    ObservationIndex    PosteriorProbability
    ________________    ____________________

            6                   0.17379     
            7                   0.89638     
            8                 0.0076606     
            9                   0.91603     
           16                  0.026714     
           22                4.6086e-06     
           23                    0.9024     
           24                2.4131e-06     
           38                0.00042687     
           41                   0.86427     

Совет

Чтобы оценить апостериорные вероятности обученных, перекрестно проверенных классификаторов SVM, используйте fitSVMPosterior.

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