kfoldEdge

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

Описание

пример

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

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

пример

e = kfoldEdge(CVMdl,Name,Value) использует дополнительные опции, заданные одним или несколькими Name,Value аргументы в виде пар. Для примера укажите, какие складки использовать для вычисления ребра.

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

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

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

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

Аргументы в виде пар имя-значение

Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

Индексы сгиба для использования в классификационно-оценочном предсказании, заданные как разделенная разделенными запятой парами, состоящая из 'Folds' и числовой вектор положительных целых чисел. Элементы Folds должен варьироваться от 1 через CVMdl.KFold.

Пример: 'Folds',[1 4 10]

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

Уровень агрегации ребер, заданный как разделенная разделенными запятой парами, состоящая из 'Mode' и 'average' или 'individual'.

ЗначениеОписание
'average'Возвраты классификации ребер усредненные по всем складкам
'individual'Возвращает ребра классификации для каждого сгиба

Пример: 'Mode','individual'

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

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

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

Позвольте L быть количеством степеней регуляризации в перекрестно проверенных моделях (то есть L есть numel(CVMdl.Trained{1}.Lambda)) и F количество складок (сохранено в CVMdl.KFold).

  • Если Mode является 'average', затем e является 1-байт- L вектор. e (j) - среднее ребро классификации по всем складкам перекрестно проверенной модели, которая использует силу регуляризации j.

  • В противном случае e является F-by- L матрица. e (i, j) - классификационное ребро для сгиба i модели с перекрестной проверкой, которая использует силу регуляризации j.

Для оценки e, kfoldEdge использует данные, которые создали CVMdl (см. X и Y).

Примеры

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

Загрузите набор данных 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' аргумент пары "имя-значение".

Оцените среднее значение наружных ребер.

e = kfoldEdge(CVMdl)
e = 8.1243

Кроме того, можно получить ребра в относительных единицах путем определения пары "имя-значение" 'Mode','individual' в kfoldEdge.

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

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

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-складки для каждого классификатора.

fullEdge = kfoldEdge(CVMdl)
fullEdge = 16.5629
partEdge = kfoldEdge(PCVMdl)
partEdge = 13.9030

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

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

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

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 модели, которые программное обеспечение обучает на каждой складке.

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

eFolds = kfoldEdge(CVMdl,'Mode','individual')
eFolds = 5×11

    0.9958    0.9958    0.9958    0.9958    0.9958    0.9925    0.9768    0.9231    0.8468    0.8127    0.8127
    0.9991    0.9991    0.9991    0.9991    0.9991    0.9939    0.9779    0.9183    0.8263    0.8128    0.8128
    0.9992    0.9992    0.9992    0.9992    0.9992    0.9942    0.9780    0.9183    0.8254    0.8128    0.8128
    0.9974    0.9974    0.9974    0.9974    0.9974    0.9931    0.9773    0.9191    0.8477    0.8130    0.8130
    0.9977    0.9977    0.9977    0.9977    0.9977    0.9942    0.9782    0.9185    0.8380    0.8127    0.8127

eFolds является матрицей ребер 5 на 11. Строки соответствуют складкам, а столбцы - сильным сторонам регуляризации в Lambda. Можно использовать eFolds идентифицировать плохо работающие складки, то есть необычно низкие ребра.

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

e = kfoldEdge(CVMdl)
e = 1×11

    0.9978    0.9978    0.9978    0.9978    0.9978    0.9936    0.9776    0.9195    0.8368    0.8128    0.8128

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

figure;
plot(log10(Lambda),log10(e),'-o')
[~, maxEIdx] = max(e);
maxLambda = Lambda(maxEIdx);
hold on
plot(log10(maxLambda),log10(e(maxEIdx)),'ro');
ylabel('log_{10} 5-fold edge')
xlabel('log_{10} Lambda')
legend('Edge','Max edge')
hold off

Figure contains an axes. The axes contains 2 objects of type line. These objects represent Edge, Max edge.

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

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

LambdaFinal = Lambda(5);

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

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

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

Подробнее о

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

Введенный в R2016a