exponenta event banner

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