discardSupportVectors

Сбросьте векторы поддержки линейных двоичных учащихся SVM в модели ECOC

Описание

пример

Mdl = discardSupportVectors(MdlSV) возвращает обученную многоклассовую модель выходных кодов с исправлением ошибок (ECOC) (Mdl) из обученной многоклассовой модели ECOC (MdlSV), который содержит, по меньшей мере, один линейный CompactClassificationSVM двоичный ученик. Оба Mdl и MdlSV являются объектами одного и того же типа ClassificationECOC объекты или CompactClassificationECOC объекты.

Mdl имеет следующие характеристики:

Примеры

свернуть все

Когда вы обучаете модель ECOC с линейными двоичными учениками SVM, fitcecoc опустошает Alpha, SupportVectorLabels, и SupportVectors свойства двоичных учащихся по умолчанию. Можно выбрать вместо этого сохранить векторы поддержки и связанные значения, а затем сбросить их из модели позже.

Загрузите набор данных радужки Фишера.

load fisheriris
rng(1); % For reproducibility

Обучите модель ECOC, используя весь набор данных. Укажите сохранение поддерживающих векторов путем передачи в соответствующий шаблон SVM.

t = templateSVM('SaveSupportVectors',true);
MdlSV = fitcecoc(meas,species,'Learners',t);

MdlSV является обученным ClassificationECOC модель с линейными SVM двоичными учениками. По умолчанию fitcecoc реализует проект кодирования один от одного, который требует трех двоичных учащихся для трехклассного обучения.

Доступ к предполагаемому α (альфа) значения с использованием записи через точку.

alpha = cell(3,1);
alpha{1} = MdlSV.BinaryLearners{1}.Alpha;
alpha{2} = MdlSV.BinaryLearners{2}.Alpha;
alpha{3} = MdlSV.BinaryLearners{3}.Alpha;
alpha
alpha=3×1 cell array
    { 3x1 double}
    { 3x1 double}
    {23x1 double}

alpha - массив ячеек 3 на 1, в котором хранятся предполагаемые значения α.

Отменить векторы поддержки и связанные значения из модели ECOC.

Mdl = discardSupportVectors(MdlSV);

Mdl аналогичен MdlSV, за исключением того, что Alpha, SupportVectorLabels, и SupportVectors свойства всех линейных двоичных учащихся SVM пусты ([]).

areAllEmpty = @(x)isempty([x.Alpha x.SupportVectors x.SupportVectorLabels]);
cellfun(areAllEmpty,Mdl.BinaryLearners)
ans = 3x1 logical array

   1
   1
   1

Сравните размеры двух моделей ECOC.

vars = whos('Mdl','MdlSV');
100*(1 - vars(1).bytes/vars(2).bytes)
ans = 4.7075

Mdl примерно на 5% меньше MdlSV.

Уменьшите использование памяти путем уплотнения Mdl а затем очистка Mdl и MdlSV из рабочей области.

CompactMdl = compact(Mdl);
clear Mdl MdlSV;

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

idx = randsample(size(meas,1),1)
idx = 63
predictedLabel = predict(CompactMdl,meas(idx,:))
predictedLabel = 1x1 cell array
    {'versicolor'}

trueLabel = species(idx)
trueLabel = 1x1 cell array
    {'versicolor'}

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

свернуть все

Полная или компактная обученная многоклассовая модель ECOC, содержащая по крайней мере один линейный двоичный ученик SVM, заданный как ClassificationECOC или CompactClassificationECOC модель.

Подробнее о

свернуть все

Линейный Binary Learner SVM

В контексте этой страницы двоичный обучаемый с линейной машиной опорных векторов (SVM) является двоичным классификатором SVM, созданным с помощью линейной функции ядра. Если на jВторой двоичный ученик в модели ECOC Mdl является линейным двоичным учеником SVM, затем Mdl.BinaryLearners{j} является CompactClassificationSVM объект, где Mdl.BinaryLearners{j}.KernelParameters.Function является 'linear'.

Совет

  • По умолчанию и для эффективности, fitcecoc опустошает Alpha, SupportVectorLabels, и SupportVectors свойства для всех линейных двоичных учащихся SVM. fitcecoc перечисляет Beta, а не Alpha, на отображении модели.

    Для хранения Alpha, SupportVectorLabels, и SupportVectors, передайте линейный шаблон SVM, который задает хранение поддержки векторов в fitcecoc. Для примера введите:

    t = templateSVM('SaveSupportVectors',true)
    Mdl = fitcecoc(X,Y,'Learners',t);

    Можно удалить векторы поддержки и связанные значения путем передачи полученного ClassificationECOC моделировать в discardSupportVectors.

Алгоритмы

predict и resubPredict оцените счета SVM f (x) для каждого линейного двоичного учащегося SVM в модели ECOC с помощью

f(x)=xβ+b.

β является Beta свойство и b является Bias свойство двоичных учащихся. Вы можете получить доступ к этим свойствам для каждого линейного двоичного обучающегося SVM в массиве ячеек Mdl.BinaryLearners. Для получения дополнительной информации о вычислении счета SVM, смотрите Машины Опорных Векторов for Binary Classification.

Введенный в R2015a