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

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

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

Постройте график коэффициентов неправильной классификации в отношении прочности на регуляризацию по шкале журнала.

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

Figure contains an axes. The axes contains 2 objects of type line.

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

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

idx = 7:10;
MdlFinal = selectModels(Mdl,idx)
MdlFinal = 
  CompactClassificationECOC
      ResponseName: 'Y'
        ClassNames: [1x13 categorical]
    ScoreTransform: 'none'
    BinaryLearners: {78x1 cell}
      CodingMatrix: [13x78 double]


  Properties, Methods

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

    0.0002    0.0008    0.0040    0.0200

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

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

свернуть все

Многоклассовая модель 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