selectModels

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

Описание

пример

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