ClassificationPartitionedModel

Пакет: classreg.learning.partition

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

Описание

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

Каждый “kfold” метод использует модели, обученные на, окутывают наблюдения, чтобы предсказать ответ для наблюдений из сгиба. Например, предположите, что вы пересекаетесь, подтверждают использование пяти сгибов. В этом случае программное обеспечение случайным образом присваивает каждое наблюдение в пять примерно одинаково размерных групп. training fold содержит четыре из групп (т.е. примерно 4/5 данных), и test fold содержит другую группу (i.e., примерно 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)

  • 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, fitcnb, fitcsvm, и fitctree.

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

Mdl

Модель классификации. Mdl может быть любое следующее:

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

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

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

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

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

Свойства

BinEdges

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

Числовые предикторы интервалов программного обеспечения, только если вы задаете 'NumBins' аргумент пары "имя-значение" как положительный целочисленный скаляр, когда обучение модель с древовидными учениками. 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 значениями является NaNs.

CategoricalPredictors

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

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

ClassNames

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

Cost

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

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

CVModel.Cost = CostMatrix;

CrossValidatedModel

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

KFold

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

ModelParameters

Объект, содержащий параметры CVModel.

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 + e x)
    'none' или 'identity'x (никакое преобразование)
    'sign'– 1 для x <0
    0 для x = 0
    1 для x> 0
    'symmetric'2x – 1
    'symmetricismax'Устанавливает счет к классу с самым большим счетом к 1 и устанавливает музыку ко всем другим классам к –1
    'symmetriclogit'2/(1 + e x) – 1

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

    Mdl.ScoreTransform = @function;

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

Trained

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

W

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

X

Матрица A или таблица значений предиктора. Каждый столбец X представляет одну переменную, и каждая строка представляет одно наблюдение.

Y

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

Методы

kfoldEdgeРебро классификации для наблюдений, не используемых для обучения
kfoldLossПотеря классификации для наблюдений, не используемых для обучения
kfoldMarginПоля классификации для наблюдений, не используемых для обучения
kfoldPredictПредскажите ответ для наблюдений, не используемых для обучения
kfoldfunКрест подтверждает функцию

Примеры

свернуть все

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

Загрузите ирисовый набор данных Фишера.

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.17381     
            7                   0.89639     
            8                 0.0076613     
            9                   0.91602     
           16                  0.026722     
           22                4.6114e-06     
           23                    0.9024     
           24                2.4137e-06     
           38                0.00042705     
           41                   0.86427     

Советы

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

Для просмотра документации необходимо авторизоваться на сайте