exponenta event banner

ClassificationPartitionedModel

Пакет: classreg.learning.partition

Модель классификации с перекрестной проверкой

Описание

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

Каждый метод «kfold» использует модели, обученные на кратных наблюдениях, чтобы предсказать ответ для внеплановых наблюдений. Например, предположим, что выполняется перекрестная проверка с использованием пяти сгибов. В этом случае программное обеспечение случайным образом распределяет каждое наблюдение на пять групп примерно одинакового размера. Тренировочная складка содержит четыре группы (т.е. приблизительно 4/5 данных), а тестовая складка содержит другую группу (т.е. приблизительно 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' аргумент «имя-значение» в качестве положительного целого скаляра при обучении модели с учащимися дерева. 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.

NumObservations

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

Partition

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

PredictorNames

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

Prior

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

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

CVModel.Prior = priorVector;

ResponseName

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

ScoreTransform

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

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

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

    Mdl.ScoreTransform = 'function';

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

    СтоимостьОписание
    'doublelogit'1/( 1 + e-2x)
    'invlogit'log (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

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

Y

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

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