kfoldMargin

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

Синтаксис

m = kfoldMargin(CVMdl)

Описание

пример

m = kfoldMargin(CVMdl) возвращает перекрестные подтвержденные поля классификации, полученные перекрестным подтвержденным, двоичным файлом, линейной моделью CVMdl классификации. Таким образом, для каждого сгиба kfoldMargin оценивает поля классификации для наблюдений, что это протягивает, когда это обучает использование всех других наблюдений.

m содержит поля классификации для каждой силы регуляризации в линейных моделях классификации, которые включают CVMdl.

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

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

Перекрестный подтвержденный, двоичный файл, линейная модель классификации, заданная как объект модели ClassificationPartitionedLinear. Можно создать модель ClassificationPartitionedLinear с помощью fitclinear и задав любую из перекрестной проверки, аргументов пары "имя-значение", например, CrossVal.

Чтобы получить оценки, kfoldMargin применяется, те же данные раньше перекрестный подтверждали линейную модель классификации (X и Y).

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

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

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

m является n-by-L, где n является количеством наблюдений в данных, которые создали CVMdl (см. X и Y), и L является количеством сильных мест регуляризации в CVMdl (то есть, numel(CVMdl.Trained{1}.Lambda)).

m(i,j) является перекрестным подтвержденным полем классификации наблюдения i с помощью линейной модели классификации, которая имеет силу регуляризации CVMdl.Trained{1}.Lambda(j).

Типы данных: single | double

Примеры

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

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

load nlpdata

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

Модели должны идентифицировать, являются ли подсчеты слов в веб-странице из документации Statistics and Machine Learning Toolbox™. Так, идентифицируйте метки, которые соответствуют веб-страницам документации Statistics and Machine Learning Toolbox™.

Ystats = Y == 'stats';

Перекрестный подтвердите двоичный файл, линейная модель классификации, которая может идентифицировать, являются ли подсчеты слов в веб-странице документации из документации Statistics and Machine Learning Toolbox™.

rng(1); % For reproducibility 
CVMdl = fitclinear(X,Ystats,'CrossVal','on');

CVMdl является моделью ClassificationPartitionedLinear. По умолчанию программное обеспечение реализует 10-кратную перекрестную проверку. Можно изменить количество сгибов с помощью аргумента пары "имя-значение" 'KFold'.

Оцените перекрестные подтвержденные поля.

m = kfoldMargin(CVMdl);
size(m)
ans = 1×2

       31572           1

m 31572 1 вектор. m(j) является средним значением полей из сгиба для наблюдения j.

Постройте поля k-сгиба с помощью диаграмм.

figure;
boxplot(m);
h = gca;
h.YLim = [-5 30];
title('Distribution of Cross-Validated Margins')

Один способ выполнить выбор функции состоит в том, чтобы сравнить поля k-сгиба от многоуровневых моделей. Базирующийся только на этом критерии, классификатор с большими полями является лучшим классификатором.

Загрузите набор данных NLP. Предварительно обработайте данные как в Оценочных Полях Перекрестной проверки k-сгиба.

load nlpdata
Ystats = Y == 'stats';
X = X';

Создайте эти два набора данных:

  • fullX содержит все предикторы.

  • partX содержит 1/2 предикторов, выбранных наугад.

rng(1); % For reproducibility
p = size(X,1); % Number of predictors
halfPredIdx = randsample(p,ceil(0.5*p));
fullX = X;
partX = X(halfPredIdx,:);

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

CVMdl = fitclinear(fullX,Ystats,'CrossVal','on','Solver','sparsa',...
    'ObservationsIn','columns');
PCVMdl = fitclinear(partX,Ystats,'CrossVal','on','Solver','sparsa',...
    'ObservationsIn','columns');

CVMdl и PCVMdl являются моделями ClassificationPartitionedLinear.

Оцените поля k-сгиба для каждого классификатора. Постройте распределение наборов полей k-сгиба с помощью диаграмм.

fullMargins = kfoldMargin(CVMdl);
partMargins = kfoldMargin(PCVMdl);

figure;
boxplot([fullMargins partMargins],'Labels',...
    {'All Predictors','Half of the Predictors'});
h = gca;
h.YLim = [-30 60];
title('Distribution of Cross-Validated Margins')

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

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

Загрузите набор данных NLP. Предварительно обработайте данные как в Оценочных Полях Перекрестной проверки k-сгиба.

load nlpdata
Ystats = Y == 'stats';
X = X';

Создайте набор 11 логарифмически распределенных сильных мест регуляризации от 10-8 через 101.

Lambda = logspace(-8,1,11);

Перекрестный подтвердите двоичный файл, линейная модель классификации использование 5-кратной перекрестной проверки, и это использует каждые из сильных мест регуляризации. Оптимизируйте использование целевой функции SpaRSA. Понизьте допуск на градиент целевой функции к 1e-8.

rng(10); % For reproducibility
CVMdl = fitclinear(X,Ystats,'ObservationsIn','columns','KFold',5, ...
    'Learner','logistic','Solver','sparsa','Regularization','lasso', ...
    'Lambda',Lambda,'GradientTolerance',1e-8)
CVMdl = 
  classreg.learning.partition.ClassificationPartitionedLinear
    CrossValidatedModel: 'Linear'
           ResponseName: 'Y'
        NumObservations: 31572
                  KFold: 5
              Partition: [1×1 cvpartition]
             ClassNames: [0 1]
         ScoreTransform: 'none'


  Properties, Methods

CVMdl является моделью ClassificationPartitionedLinear. Поскольку fitclinear реализует 5-кратную перекрестную проверку, CVMdl содержит 5 моделей ClassificationLinear, которые программное обеспечение обучает на каждом сгибе.

Оцените поля k-сгиба для каждой силы регуляризации.

m = kfoldMargin(CVMdl);
size(m)
ans = 1×2

       31572          11

m 31572 11 матрица перекрестных подтвержденных полей для каждого наблюдения. Столбцы соответствуют сильным местам регуляризации.

Постройте поля k-сгиба для каждой силы регуляризации. Поскольку очки логистической регрессии находятся в [0,1], поля находятся в [-1,1]. Повторно масштабируйте поля, чтобы помочь идентифицировать силу регуляризации, которая максимизирует поля по сетке.

figure
boxplot(10000.^m)
ylabel('Exponentiated test-sample margins')
xlabel('Lambda indices')

Несколько значений Lambda приводят к дистрибутивам поля k-сгиба, которые уплотнены около 10000. Более высокие значения lambda приводят к разреженности переменной прогноза, которая является хорошим качеством классификатора.

Выберите силу регуляризации, которая происходит непосредственно перед тем, как центры дистрибутивов поля k-сгиба начинают уменьшаться.

LambdaFinal = Lambda(5);

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

MdlFinal = fitclinear(X,Ystats,'ObservationsIn','columns', ...
    'Learner','logistic','Solver','sparsa','Regularization','lasso', ...
    'Lambda',LambdaFinal);

Чтобы оценить метки для новых наблюдений, передайте MdlFinal и новые данные к predict.

Больше о

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

Введенный в R2016a