exponenta event banner

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(i,j) является перекрестно проверенным классификационным пределом наблюдения i с использованием линейной классификационной модели, которая имеет силу регуляризации CVMdl.Trained{1}.Lambda(j).

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

Примеры

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

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

load nlpdata

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

Модели должны определять, содержится ли подсчет слов на веб-странице в документации Toolbox™ статистики и машинного обучения. Таким образом, определите метки, соответствующие страницам документации Toolbox™ статистики и машинного обучения.

Ystats = Y == 'stats';

Перекрестная проверка бинарной модели линейной классификации, которая может определить, находится ли подсчет слов на веб-странице документации из документации 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);

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