selectModels

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

Синтаксис

SubMdl = selectModels(Mdl,idx)

Описание

пример

SubMdl = selectModels(Mdl,idx) возвращает подмножество обученных моделей выходных кодов с коррекцией ошибок (ECOC), состоявших из двоичных моделей ClassificationLinear от набора мультикласса модели ECOC (Mdl), обученный с помощью различных сильных мест регуляризации. Индексы (idx) соответствуют сильным местам регуляризации в Mdl.BinaryLearners{1}.Lambda и задают который модели возвратиться.

SubMdl возвращен как объект модели CompactClassificationECOC.

Примеры

свернуть все

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

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

load nlpdata

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

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

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

Создайте линейный шаблон модели классификации, который задает оптимизацию использования целевой функции SpaRSA. Используйте штрафы лассо с сильными местами, заданными в Lambda.

t = templateLinear('Solver','sparsa','Regularization','lasso',...
    'Lambda',Lambda);

Протяните 30% данных для тестирования. Идентифицируйте демонстрационные тестом индексы.

rng(1); % For reproducibility
cvp = cvpartition(Y,'Holdout',0.30);
idxTest = test(cvp);

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

X = X';
PMdl = fitcecoc(X,Y,'Learners',t,'ObservationsIn','columns','CVPartition',cvp);
Mdl = PMdl.Trained{1};
numel(Mdl.BinaryLearners{1}.Lambda)
ans = 11

Mdl является объектом модели CompactClassificationECOC. Поскольку Lambda является 11-мерным вектором сильных мест регуляризации, можно думать о Mdl как об одиннадцати обученных моделях, каждый соответствующий силе регуляризации.

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

ce = loss(Mdl,X(:,idxTest),Y(idxTest),'ObservationsIn','columns');

Постройте misclassification уровни относительно силы регуляризации на логарифмической шкале.

figure
plot(log10(Lambda),log10(ce),'-o')
ylabel('log_{10} misclassification rates')
xlabel('log_{10} Lambda')
[~,minCEIdx] = min(ce);
minLambda = Lambda(minCEIdx);
hold on
plot(log10(minLambda),log10(ce(minCEIdx)),'ro');
hold off

Несколько значений Lambda приводят к столь же маленьким ошибочным значениям классификации. Рассмотрите выбирающие большие значения Lambda (которые все еще приводят к хорошим уровням классификации), потому что они приводят к разреженности переменной прогноза.

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

idx = 7:10;
MdlFinal = selectModels(Mdl,idx)
MdlFinal = 
  classreg.learning.classif.CompactClassificationECOC
      ResponseName: 'Y'
        ClassNames: [comm    dsp    ecoder    fixedpoint    hdlcoder    phased    physmod    simulink    stats    supportpkg    symbolic    vision    xpc]
    ScoreTransform: 'none'
    BinaryLearners: {78×1 cell}
      CodingMatrix: [13×78 double]


  Properties, Methods

LambdaFinal = MdlFinal.BinaryLearners{1}.Lambda
LambdaFinal = 1×4

    0.0002    0.0008    0.0040    0.0200

MdlFinal является объектом модели CompactClassificationECOC. Можно думать о нем, когда четыре модели обучили использование четырех сильных мест регуляризации в LambdaFinal.

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

свернуть все

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

При создании Mdl вы должны:

  • Используйте fitcecoc.

  • Задайте двоичных учеников ClassificationLinear (см. Learners).

  • Задайте те же сильные места регуляризации для каждого линейного бинарного ученика.

Несмотря на то, что Mdl является одним объектом модели, если numel(Mdl.BinaryLearners{1}.Lambda) = L ≥ 2, то можно думать о Mdl как о L, обучил модели.

Индексы, соответствующие сильным местам регуляризации, заданным как положительный целочисленный вектор. Значения idx должны быть в интервале [1, L], где L = numel(Mdl.BinaryLearners{1}.Lambda).

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

Советы

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

    1. Создайте линейный шаблон модели классификации с помощью templateLinear и задайте сетку сильных мест регуляризации с помощью аргумента пары "имя-значение" ' Lambda '.

    2. Протяните фрагмент данных для тестирования.

    3. Обучите модель ECOC с помощью fitcecoc. Задайте шаблон с помощью аргумента пары "имя-значение" ' Learners ' и снабдите данными тренировки. fitcecoc возвращает один объект модели CompactClassificationECOC, содержащий двоичных учеников ClassificationLinear, но все бинарные ученики содержат модель для каждой силы регуляризации.

    4. Чтобы определить качество каждой упорядоченной модели, передайте возвращенный объект модели и протянутые данные к, например, loss.

    5. Идентифицируйте индексы (idx) удовлетворительного подмножества упорядоченных моделей, и затем передайте возвращенную модель и индексы к selectModels. Функциональный selectModels возвращает один объект модели CompactClassificationECOC, но это содержит упорядоченные модели numel(idx).

    6. Чтобы предсказать метки класса для новых данных, передайте данные и подмножество упорядоченных моделей к predict.

Введенный в R2016a