kfoldMargin

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

Синтаксис

Описание

пример

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 (iJ) перекрестное подтвержденное поле классификации наблюдения i с помощью линейной модели классификации, которая имеет силу регуляризации CVMdl. Обученный {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')

Figure contains an axes. The axes with title Distribution of Cross-Validated Margins contains 7 objects of type line.

Один способ выполнить выбор признаков состоит в том, чтобы сравнить поля 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')

Figure contains an axes. The axes with title Distribution of Cross-Validated Margins contains 14 objects of type line.

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

Чтобы определить хорошую силу штрафа лассо для линейной модели классификации, которая использует ученика логистической регрессии, сравните распределения полей 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 = 
  ClassificationPartitionedLinear
    CrossValidatedModel: 'Linear'
           ResponseName: 'Y'
        NumObservations: 31572
                  KFold: 5
              Partition: [1x1 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')

Figure contains an axes. The axes contains 77 objects of type line.

Несколько значений 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