kfoldMargin

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

Синтаксис

Описание

пример

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

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

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

расширить все

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

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

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

расширить все

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

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

м (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')

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

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

Загрузите набор данных NLP. Предварительно обработайте данные как в Estimate k-Fold Cross-Validation Margins.

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-fold с помощью прямоугольных графиков.

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. Предварительно обработайте данные как в Estimate k-Fold Cross-Validation Margins.

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

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

LambdaFinal = Lambda(5);

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

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

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

Подробнее о

расширить все

Введенный в R2016a