Многоклассовая модель для вспомогательных векторных машин (SVM) и других классификаторов
ClassificationECOC - классификатор выходных кодов с исправлением ошибок (ECOC) для многоклассового обучения, где классификатор состоит из нескольких двоичных учеников, таких как вспомогательные векторные машины (SVM). Обученный ClassificationECOC классификаторы сохраняют обучающие данные, значения параметров, предшествующие вероятности и матрицы кодирования. Используйте эти классификаторы для выполнения таких задач, как прогнозирование меток или апостериорных вероятностей для новых данных (см. predict).
Создать ClassificationECOC объект с помощью fitcecoc.
Если вы указываете линейных или бинарных учеников ядра без указания параметров перекрестной проверки, то fitcecoc возвращает CompactClassificationECOC вместо этого объект.
После создания ClassificationECOC объект модели, для доступа к его свойствам можно использовать точечную нотацию. Пример см. в разделе Обучение многоклассовой модели с использованием обучающихся SVM.
BinaryLearners - Обученные двоичные учащиесяОбученные двоичные обучающиеся, указанные как вектор ячейки объектов модели. Количество двоичных учеников зависит от количества классов в Y и дизайн кодирования.
Каналы программного обеспечения BinaryLearner{j} в соответствии с двоичной проблемой, указанной CodingMatrix(:,j). Например, для многоклассного обучения с использованием обучающихся SVM каждый элемент BinaryLearners является CompactClassificationSVM классификатор.
Типы данных: cell
BinaryLoss - Двоичная функция потери ученика'binodeviance' | 'exponential' | 'hamming' | 'hinge' | 'linear' | 'logit' | 'quadratic'Двоичная функция потери ученика, заданная как вектор символов, представляющий имя функции потери.
Если вы обучаетесь с использованием двоичных учеников, которые используют различные функции потери, то программное обеспечение BinaryLoss кому 'hamming'. Чтобы потенциально повысить точность, укажите бинарную функцию потерь, отличную от функции по умолчанию, во время прогнозирования или вычисления потерь с помощью 'BinaryLoss' аргумент пары имя-значение predict или loss.
Типы данных: char
BinaryY - Двоичные метки класса ученикаДвоичные метки класса учащегося, заданные как числовая матрица. BinaryY является NumObservations-by-L матрица, где L - число двоичных учеников (length(Mdl.BinaryLearners)).
Элементы BinaryY являются –1, 0, или 1и значение соответствует дихотомическому присвоению класса. В этой таблице описывается процесс обучения j назначает наблюдение k к дихотомическому классу, соответствующему значению BinaryY(k,j).
| Стоимость | Назначение класса Dichotomous |
|---|---|
–1 | Ученик j назначает наблюдение k отрицательному классу. |
0 | Перед началом обучения учащийся j удаляет наблюдение k из набора данных. |
1 | Ученик j назначает наблюдение k к положительному классу. |
Типы данных: double
BinEdges - Края ячеек для числовых предикторов[]Это свойство доступно только для чтения.
Ребра ячеек для числовых предикторов, заданные как массив ячеек из p числовых векторов, где p - число предикторов. Каждый вектор включает в себя края ячейки для числового предсказателя. Элемент в массиве ячеек для категориального предиктора пуст, поскольку программное обеспечение не содержит категориальных предикторов.
Программа содержит числовые предикторы только при указании 'NumBins' аргумент «имя-значение» в качестве положительного целого скаляра при обучении модели с учащимися дерева. BinEdges пустое свойство, если 'NumBins' пустое значение (по умолчанию).
Можно воспроизвести привязанные данные предиктора Xbinned с помощью BinEdges свойство обучаемой модели mdl.
X = mdl.X; % Predictor data
Xbinned = zeros(size(X));
edges = mdl.BinEdges;
% Find indices of binned predictors.
idxNumeric = find(~cellfun(@isempty,edges));
if iscolumn(idxNumeric)
idxNumeric = idxNumeric';
end
for j = idxNumeric
x = X(:,j);
% Convert x to array if x is a table.
if istable(x)
x = table2array(x);
end
% Group x into bins by using the discretize function.
xbinned = discretize(x,[-inf; edges{j}; inf]);
Xbinned(:,j) = xbinned;
endXbinned содержит индексы ячеек в диапазоне от 1 до числа ячеек для числовых предикторов. Xbinned значения равны 0 для категориальных предикторов. Если X содержит NaNs, затем соответствующее Xbinned значения NaNs.
Типы данных: cell
CodingMatrix - Коды назначения классовКоды назначения класса для двоичных учеников, определенные как числовая матрица. CodingMatrix - матрица K-by-L, где K - число классов, а L - число двоичных учеников.
Элементы CodingMatrix являются –1, 0, или 1и значения соответствуют дихотомическим присвоениям классов. В этой таблице описывается процесс обучения j назначает наблюдения в классе i к дихотомическому классу, соответствующему значению CodingMatrix(i,j).
| Стоимость | Назначение класса Dichotomous |
|---|---|
–1 | Ученик j назначает наблюдения в классе i отрицательному классу. |
0 | Перед началом обучения учащийся j удаляет наблюдения в классе i из набора данных. |
1 | Ученик j назначает наблюдения в классе i к положительному классу. |
Типы данных: double | single | int8 | int16 | int32 | int64
CodingName - Наименование проекта кодированияИмя конструкции кодирования, указанное как символьный вектор. Дополнительные сведения см. в разделе Проектирование кодирования.
Типы данных: char
LearnerWeights - Двоичные веса учащихсяДвоичные веса учащихся, определяемые как числовой вектор строки. Длина LearnerWeights равно количеству двоичных учеников (length(Mdl.BinaryLearners)).
LearnerWeights(j) - сумма весов наблюдения, которые бинарный ученик j использует для обучения своего классификатора.
Программное обеспечение использует LearnerWeights чтобы подогнать задние вероятности, минимизируя дивергенцию Куллбэка-Лейблера. Программное обеспечение игнорирует LearnerWeights при использовании метода квадратичного программирования для оценки задних вероятностей.
Типы данных: double | single
CategoricalPredictors - Индексы категориального предиктора[]Индексы категориального предиктора, указанные как вектор положительных целых чисел. CategoricalPredictors содержит значения индекса, соответствующие столбцам данных предиктора, которые содержат категориальные предикторы. Если ни один из предикторов не категоричен, то это свойство пустое ([]).
Типы данных: single | double
ClassNames - Уникальные метки классаУникальные метки классов, используемые в обучении, указанные как категориальный или символьный массив, логический или числовой вектор или массив ячеек символьных векторов. ClassNames имеет тот же тип данных, что и метки класса Y. (Программа рассматривает строковые массивы как массивы ячеек символьных векторов.)
ClassNames также определяет порядок классов.
Типы данных: categorical | char | logical | single | double | cell
Cost - Расходы на неправильную классификациюЭто свойство доступно только для чтения.
Затраты на неправильную классификацию, указанные как квадратная числовая матрица. Cost имеет K строк и столбцов, где K - количество классов.
Cost(i,j) - стоимость классификации точки по классу j если его истинный класс i. Порядок строк и столбцов Cost соответствует порядку классов в ClassNames.
fitcecoc включает в себя затраты на неправильную классификацию различных типов двоичных учеников.
Типы данных: double
ExpandedPredictorNames - Расширенные имена предикторовРасширенные имена предикторов, заданные как массив ячеек символьных векторов.
Если модель использует кодировку для категориальных переменных, то ExpandedPredictorNames содержит имена, описывающие развернутые переменные. В противном случае ExpandedPredictorNames является таким же, как PredictorNames.
Типы данных: cell
ModelParameters - Значения параметровЗначения параметров, такие как значения аргументов пары имя-значение, используемые для обучения классификатора ECOC, заданного как объект. ModelParameters не содержит оценочных параметров.
Свойства доступа ModelParameters с использованием точечной нотации. Например, перечислить шаблоны, содержащие параметры двоичных учеников, с помощью Mdl.ModelParameters.BinaryLearner.
NumObservations - Количество наблюденийКоличество наблюдений в обучающих данных, указанных как положительный числовой скаляр.
Типы данных: double
PredictorNames - Имена предикторовИмена предикторов в порядке их появления в данных предиктора X, задается как массив ячеек символьных векторов. Длина PredictorNames равно количеству столбцов в X.
Типы данных: cell
Prior - Вероятности предыдущего классаЭто свойство доступно только для чтения.
Вероятности предшествующего класса, определенные как числовой вектор. Prior имеет столько же элементов, сколько и число классов в ClassNames, и порядок элементов соответствует порядку классов в ClassNames.
fitcecoc включает в себя затраты на неправильную классификацию различных типов двоичных учеников.
Типы данных: double
ResponseName - Имя переменной ответаИмя ответной переменной, указанное как символьный вектор.
Типы данных: char
RowsUsed - Строки, используемые в фитинге[] (по умолчанию) | логический векторСтроки исходных учебных данных, используемых при подборе ClassificationECOC модель, заданная как логический вектор. Это свойство пусто, если используются все строки.
Типы данных: logical
ScoreTransform - Функция преобразования баллов для применения к прогнозируемым баллам'doublelogit' | 'invlogit' | 'ismax' | 'logit' | 'none' | дескриптор функции |...Функция преобразования баллов для применения к прогнозируемым баллам, заданная как имя функции или дескриптор функции.
Изменение функции преобразования баллов на function, например, использовать точечную нотацию.
Для встроенной функции введите этот код и замените function со значением в таблице.
Mdl.ScoreTransform = 'function';
| Стоимость | Описание |
|---|---|
'doublelogit' | 1/( 1 + e-2x) |
'invlogit' | log (x/( 1 - x)) |
'ismax' | Устанавливает балл для класса с наибольшим баллом в 1 и устанавливает балл для всех остальных классов в 0 |
'logit' | 1/( 1 + e-x) |
'none' или 'identity' | x (без преобразования) |
'sign' | -1 для x < 0 0 для x = 0 1 для x > 0 |
'symmetric' | 2x – 1 |
'symmetricismax' | Устанавливает балл для класса с наибольшим баллом в 1 и устанавливает балл для всех остальных классов в -1 |
'symmetriclogit' | 2/( 1 + e-x) - 1 |
Для определяемой функции MATLAB ® или функции введите ее дескриптор.
Mdl.ScoreTransform = @function;
function должен принять матрицу (исходные баллы) и вернуть матрицу того же размера (преобразованные баллы).
Типы данных: char | function_handle
W - Наблюдательные весаВеса наблюдений, используемые для обучения классификатора ECOC, заданного как числовой вектор. W имеет NumObservations элементы.
Программное обеспечение нормализует веса, используемые для обучения, так, чтобы sum(W,'omitnan') является 1.
Типы данных: single | double
X - Нестандартные данные предиктораНестандартные данные предиктора, используемые для обучения классификатора ECOC, заданные как числовая матрица или таблица.
Каждая строка X соответствует одному наблюдению, и каждый столбец соответствует одной переменной.
Типы данных: single | double | table
Y - Наблюдаемые знаки классаНаблюдаемые метки классов, используемые для обучения классификатора ECOC, указанного как категориальный или символьный массив, логический или числовой вектор или массив ячеек символьных векторов. Y имеет NumObservations элементы и имеют тот же тип данных, что и входной аргумент Y из fitcecoc. (Программа рассматривает строковые массивы как массивы ячеек символьных векторов.)
Каждая строка Y представляет наблюдаемую классификацию соответствующей строки X.
Типы данных: categorical | char | logical | single | double | cell
HyperparameterOptimizationResults - Оптимизация гиперпараметров при перекрестной проверкеBayesianOptimization объект | таблицаЭто свойство доступно только для чтения.
Оптимизация гиперпараметров с перекрестной проверкой, указанная как BayesianOptimization объект или таблица гиперпараметров и связанных значений. Это свойство не является пустым, если 'OptimizeHyperparameters' аргумент пары «имя-значение» не является пустым при создании модели. Значение HyperparameterOptimizationResults зависит от настройки Optimizer в поле HyperparameterOptimizationOptions структура при создании модели.
Значение Optimizer Область | Значение HyperparameterOptimizationResults |
|---|---|
'bayesopt' (по умолчанию) | Объект класса BayesianOptimization |
'gridsearch' или 'randomsearch' | Таблица используемых гиперпараметров, наблюдаемые значения целевой функции (потеря перекрестной проверки) и ранг наблюдений от самого низкого (лучший) до самого высокого (худший) |
compact | Уменьшение размера модели многоклассовых выходных кодов с исправлением ошибок (ECOC) |
compareHoldout | Сравнение точности двух классификационных моделей с использованием новых данных |
crossval | Модель многоклассовых кодов вывода с исправлением ошибок (ECOC) |
discardSupportVectors | Отбрасывать векторы поддержки линейных двоичных учеников SVM в модели ECOC |
edge | Край классификации для многоклассовой модели выходных кодов с исправлением ошибок (ECOC) |
loss | Потеря классификации для многоклассовой модели выходных кодов с исправлением ошибок (ECOC) |
margin | Поля классификации для многоклассовой модели выходных кодов с исправлением ошибок (ECOC) |
partialDependence | Вычислить частичную зависимость |
plotPartialDependence | Создание графиков частичной зависимости (PDP) и индивидуального условного ожидания (ICE) |
predict | Классификация наблюдений с использованием многоклассовой модели выходных кодов с исправлением ошибок (ECOC) |
resubEdge | Край классификации повторного замещения для модели многоклассовых выходных кодов с исправлением ошибок (ECOC) |
lime | Локальные интерпретируемые модели-агностические объяснения (LIME) |
resubLoss | Потеря классификации повторного замещения для модели многоклассовых выходных кодов с исправлением ошибок (ECOC) |
resubMargin | Поля классификации повторного замещения для модели многоклассовых выходных кодов с исправлением ошибок (ECOC) |
resubPredict | Классификация наблюдений в многоклассовой модели выходных кодов с исправлением ошибок (ECOC) |
shapley | Значения Шапли |
testckfold | Сравнение точности двух классификационных моделей с помощью повторной перекрестной проверки |
Обучение модели многоклассных выходных кодов с исправлением ошибок (ECOC) с использованием двоичных обучающихся вспомогательных векторных машин (SVM).
Загрузите набор данных радужки Фишера. Укажите данные предиктора X и данные ответа Y.
load fisheriris
X = meas;
Y = species;Обучайте мультиклассную модель ECOC с помощью опций по умолчанию.
Mdl = fitcecoc(X,Y)
Mdl =
ClassificationECOC
ResponseName: 'Y'
CategoricalPredictors: []
ClassNames: {'setosa' 'versicolor' 'virginica'}
ScoreTransform: 'none'
BinaryLearners: {3x1 cell}
CodingName: 'onevsone'
Properties, Methods
Mdl является ClassificationECOC модель. По умолчанию fitcecoc использует двоичных учеников SVM и схему кодирования «один против одного». Вы можете получить доступ Mdl с использованием точечной нотации.
Отображение имен классов и матрицы проектирования кодирования.
Mdl.ClassNames
ans = 3x1 cell
{'setosa' }
{'versicolor'}
{'virginica' }
CodingMat = Mdl.CodingMatrix
CodingMat = 3×3
1 1 0
-1 0 1
0 -1 -1
Схема кодирования «один против одного» для трех классов дает трех двоичных учеников. Столбцы CodingMat соответствуют ученикам, а строки - классам. Порядок классов совпадает с порядком в Mdl.ClassNames. Например, CodingMat(:,1) является [1; –1; 0] и указывает, что программное обеспечение обучает первого двоичного ученика SVM, используя все наблюдения, классифицированные как 'setosa' и 'versicolor'. Поскольку 'setosa' соответствует 1, это положительный класс; 'versicolor' соответствует –1так что это отрицательный класс.
Доступ к каждому двоичному ученику можно получить с помощью индексации ячеек и точечной нотации.
Mdl.BinaryLearners{1} % The first binary learnerans =
CompactClassificationSVM
ResponseName: 'Y'
CategoricalPredictors: []
ClassNames: [-1 1]
ScoreTransform: 'none'
Beta: [4x1 double]
Bias: 1.4492
KernelParameters: [1x1 struct]
Properties, Methods
Вычислите ошибку классификации повторной выборки.
error = resubLoss(Mdl)
error = 0.0067
Ошибка классификации данных обучения невелика, но классификатор может быть переоборудованной моделью. Можно выполнить перекрестную проверку классификатора с помощью crossval и вычислить ошибку классификации перекрестной проверки.
Обучение классификатора ECOC с использованием двоичных учеников SVM. Затем осуществляется доступ к свойствам двоичных учеников, таким как оценочные параметры, с использованием точечной нотации.
Загрузите набор данных радужки Фишера. Укажите размеры лепестков в качестве предикторов и названия видов в качестве ответа.
load fisheriris
X = meas(:,3:4);
Y = species;Обучение классификатора ECOC с использованием двоичных учеников SVM и схемы кодирования по умолчанию (один против одного). Стандартизируйте предикторы и сохраните векторы поддержки.
t = templateSVM('Standardize',true,'SaveSupportVectors',true); predictorNames = {'petalLength','petalWidth'}; responseName = 'irisSpecies'; classNames = {'setosa','versicolor','virginica'}; % Specify class order Mdl = fitcecoc(X,Y,'Learners',t,'ResponseName',responseName,... 'PredictorNames',predictorNames,'ClassNames',classNames)
Mdl =
ClassificationECOC
PredictorNames: {'petalLength' 'petalWidth'}
ResponseName: 'irisSpecies'
CategoricalPredictors: []
ClassNames: {'setosa' 'versicolor' 'virginica'}
ScoreTransform: 'none'
BinaryLearners: {3x1 cell}
CodingName: 'onevsone'
Properties, Methods
t - объект шаблона, содержащий параметры классификации SVM. Функция fitcecoc использует значения по умолчанию для пустого ([]) свойства. Mdl является ClassificationECOC классификатор. Вы можете получить доступ к свойствам Mdl с использованием точечной нотации.
Отображение имен классов и матрицы проектирования кодирования.
Mdl.ClassNames
ans = 3x1 cell
{'setosa' }
{'versicolor'}
{'virginica' }
Mdl.CodingMatrix
ans = 3×3
1 1 0
-1 0 1
0 -1 -1
Столбцы соответствуют двоичным ученикам SVM, а строки соответствуют отдельным классам. Порядок строк совпадает с порядком в ClassNames имущество Mdl. Для каждого столбца:
1 указывает, что fitcecoc обучает SVM с использованием наблюдений соответствующего класса в качестве членов положительной группы.
–1 указывает, что fitcecoc обучает SVM с использованием наблюдений в соответствующем классе в качестве членов отрицательной группы.
0 указывает, что SVM не использует наблюдения в соответствующем классе.
В первом SVM, например, fitcecoc назначает все наблюдения 'setosa' или 'versicolor', но не 'virginica'.
Доступ к свойствам SVM с использованием подстрочного индекса соты и точечной нотации. Сохраните стандартизированные векторы поддержки каждого SVM. Отмените стандартизацию векторов поддержки.
L = size(Mdl.CodingMatrix,2); % Number of SVMs sv = cell(L,1); % Preallocate for support vector indices for j = 1:L SVM = Mdl.BinaryLearners{j}; sv{j} = SVM.SupportVectors; sv{j} = sv{j}.*SVM.Sigma + SVM.Mu; end
sv является массивом ячеек матриц, содержащих нестандартные векторы поддержки для SVM.
Постройте график данных и определите векторы поддержки.
figure gscatter(X(:,1),X(:,2),Y); hold on markers = {'ko','ro','bo'}; % Should be of length L for j = 1:L svs = sv{j}; plot(svs(:,1),svs(:,2),markers{j},... 'MarkerSize',10 + (j - 1)*3); end title('Fisher''s Iris -- ECOC Support Vectors') xlabel(predictorNames{1}) ylabel(predictorNames{2}) legend([classNames,{'Support vectors - SVM 1',... 'Support vectors - SVM 2','Support vectors - SVM 3'}],... 'Location','Best') hold off

Вы можете пройти Mdl к этим функциям:
predict, для классификации новых наблюдений
resubLoss, для оценки ошибки классификации на данных обучения
crossval, для выполнения 10-кратной перекрестной проверки
Перекрестная проверка классификатора ECOC с двоичными учениками SVM и оценка обобщенной ошибки классификации.
Загрузите набор данных радужки Фишера. Укажите данные предиктора X и данные ответа Y.
load fisheriris X = meas; Y = species; rng(1); % For reproducibility
Создайте шаблон SVM и стандартизируйте предикторы.
t = templateSVM('Standardize',true)t =
Fit template for classification SVM.
Alpha: [0x1 double]
BoxConstraint: []
CacheSize: []
CachingMethod: ''
ClipAlphas: []
DeltaGradientTolerance: []
Epsilon: []
GapTolerance: []
KKTTolerance: []
IterationLimit: []
KernelFunction: ''
KernelScale: []
KernelOffset: []
KernelPolynomialOrder: []
NumPrint: []
Nu: []
OutlierFraction: []
RemoveDuplicates: []
ShrinkagePeriod: []
Solver: ''
StandardizeData: 1
SaveSupportVectors: []
VerbosityLevel: []
Version: 2
Method: 'SVM'
Type: 'classification'
t является шаблоном SVM. Большинство свойств объекта шаблона пусты. При обучении классификатору ECOC программное обеспечение устанавливает соответствующие свойства для их значений по умолчанию.
Выполните обучение классификатора ECOC и укажите порядок классов.
Mdl = fitcecoc(X,Y,'Learners',t,... 'ClassNames',{'setosa','versicolor','virginica'});
Mdl является ClassificationECOC классификатор. Доступ к его свойствам можно получить с помощью точечной нотации.
Перекрестная проверка Mdl с использованием 10-кратной перекрестной проверки.
CVMdl = crossval(Mdl);
CVMdl является ClassificationPartitionedECOC перекрестно проверенный классификатор ECOC.
Оцените обобщенную ошибку классификации.
genError = kfoldLoss(CVMdl)
genError = 0.0400
Обобщённая ошибка классификации составляет 4%, что указывает на то, что классификатор ECOC достаточно хорошо обобщается.
Модель выходных кодов с исправлением ошибок (ECOC) сводит проблему классификации с тремя или более классами к набору проблем двоичной классификации.
Классификация ECOC требует схемы кодирования, которая определяет классы, на которых обучаются двоичные ученики, и схемы декодирования, которая определяет, как агрегируются результаты (предсказания) двоичных классификаторов.
Предположим, что:
Проблема классификации имеет три класса.
Схема кодирования - один против одного. Для трех классов этот дизайн кодирования
1 − 1
Схема декодирования использует потери g.
Учащимися являются SVM.
Для построения этой модели классификации алгоритм ECOC выполняет следующие действия.
Ученик 1 обучается наблюдениям в классе 1 или классе 2 и рассматривает класс 1 как положительный класс, а класс 2 как отрицательный класс. Другие учащиеся проходят аналогичную подготовку.
Пусть M - матрица дизайна кодирования с элементами mkl, и sl - прогнозируемая оценка классификации для положительного класса учащегося l. Алгоритм назначает новое наблюдение классу (^), которое минимизирует агрегацию потерь для L двоичных учеников.
∑l=1L'mkl|.
Модели ECOC могут повысить точность классификации по сравнению с другими многоклассовыми моделями [2].
Схема кодирования является матрицей, где элементы направляют, какие классы обучаются каждым двоичным учеником, то есть как проблема мультикласса сводится к ряду двоичных проблем.
Каждая строка схемы кодирования соответствует определенному классу, и каждый столбец соответствует двоичному ученику. В схеме троичного кодирования для определенного столбца (или двоичного ученика):
Строка, содержащая 1, позволяет двоичному ученику сгруппировать все наблюдения в соответствующем классе в положительный класс.
Строка, содержащая -1, позволяет двоичному ученику сгруппировать все наблюдения в соответствующем классе в отрицательный класс.
Строка, содержащая 0, предписывает двоичному ученику игнорировать все наблюдения в соответствующем классе.
Оптимальны матрицы проектирования кодирования с большими, минимальными, попарными расстояниями строк на основе измерения Хэмминга. Для получения подробной информации о попарном расстоянии строки см. Матрицы проектирования случайного кодирования и [4].
В этой таблице описаны популярные схемы кодирования.
| Проект кодирования | Описание | Число обучающихся | Минимальное попарное расстояние между рядами |
|---|---|---|---|
| один против всех (OVA) | Для каждого двоичного ученика один класс является положительным, а остальные - отрицательными. Эта конструкция исчерпывает все комбинации положительных назначений классов. | K | 2 |
| один против одного (OVO) | Для каждого двоичного ученика один класс является положительным, другой отрицательным, а остальные игнорируются. Эта конструкция исчерпывает все комбинации назначений пар классов. | К (К - 1 )/2 | 1 |
| двоичный файл завершен | Эта конструкция разбивает классы на все бинарные комбинации и не игнорирует никакие классы. То есть все назначения классов | 2K – 1 – 1 | 2K – 2 |
| троичное завершение | Эта конструкция разбивает классы на все троичные комбинации. То есть все назначения классов | (3K – 2K + 1 + 1)/2 | 3K – 2 |
| порядковый | Для первого двоичного ученика первый класс отрицательный, а остальные положительные. Для второго двоичного ученика первые два класса отрицательные, а остальные положительные и так далее. | К - 1 | 1 |
| плотные случайные | Для каждого двоичного ученика программное обеспечение случайным образом распределяет классы в положительные или отрицательные классы, по крайней мере один из каждого типа. Дополнительные сведения см. в разделе Матрицы проектирования произвольного кодирования. | Случайный, но приблизительно 10 log2K | Переменная |
| разреженные случайные | Для каждого двоичного ученика программа случайным образом назначает классы как положительные или отрицательные с вероятностью 0,25 для каждого и игнорирует классы с вероятностью 0,5. Дополнительные сведения см. в разделе Матрицы проектирования произвольного кодирования. | Случайный, но примерно 15 log2K | Переменная |
Этот график сравнивает количество двоичных учеников для схем кодирования с увеличением К.

Для заданного числа классов K программное обеспечение генерирует матрицы проектирования случайного кодирования следующим образом.
Программное обеспечение генерирует одну из следующих матриц:
Плотное случайное - программа присваивает 1 или -1 с равной вероятностью каждому элементу матрицы проектирования кодирования K-by-Ld, где ⌉.
Разреженное случайное - программа присваивает 1 каждому элементу матрицы проектирования кодирования K-by-Ls с вероятностью 0,25, -1 с вероятностью 0,25 и 0 с вероятностью 0,5, где ⌉.
Если столбец не содержит хотя бы один столбец 1 и хотя бы один столбец -1, то программа удаляет этот столбец.
Для отдельных столбцов u и v, если u = v или u = -v, программное обеспечение удаляет v из матрицы проектирования кодирования.
По умолчанию программное обеспечение случайным образом генерирует 10 000 матриц и сохраняет матрицу с наибольшим, минимальным, расстоянием попарной строки на основе измерения Хэмминга ([4]), заданного
=0.5∑l=1L'mk1l||mk2l||mk1l−mk2l|,
где mkj1 - элемент матрицы j дизайна кодирования.
По умолчанию и для эффективности, 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.
Для обучения мультиклассной модели можно использовать следующие альтернативные алгоритмы:
Классификационные ансамбли - см.fitcensemble и ClassificationEnsemble
Деревья классификации - см.fitctree и ClassificationTree
Классификаторы дискриминантного анализа - см.fitcdiscr и ClassificationDiscriminant
k-ближайшие классификаторы соседей - см.fitcknn и ClassificationKNN
Наивные байесовские классификаторы - см.fitcnb и ClassificationNaiveBayes
[1] Фюрнкранц, Йоханнес. «Циклическая классификация». Журнал исследований машинного обучения, том 2, 2002, стр. 721-747.
[2] Эскалера, С., О. Пужоль и П. Радева. «Разделяемость троичных кодов для разреженных конструкций выходных кодов с исправлением ошибок». Письма для распознавания образов, том 30, выпуск 3, 2009, стр. 285-297.
Примечания и ограничения по использованию:
При обучении модели ECOC с помощью fitcecoc, применяются следующие ограничения.
Вы не можете подогнать задние вероятности, используя 'FitPosterior' аргумент пары имя-значение.
Все двоичные ученики должны быть либо классификаторами SVM, либо моделями линейной классификации. Для 'Learners' аргумент пары имя-значение, можно указать:
'svm' или 'linear'
Объект шаблона SVM или массив ячеек таких объектов (см. templateSVM)
Объект шаблона модели линейной классификации или массив ячеек таких объектов (см. templateLinear)
При создании кода с использованием конфигуратора кодера для predict и update, следующие дополнительные ограничения применяются для двоичных учеников.
При использовании массива ячеек объектов шаблона SVM значение 'Standardize' Для учеников SVM должны быть последовательными. Например, при указании 'Standardize',true для одного учащегося SVM необходимо указать одинаковое значение для всех обучающихся SVM.
Если используется массив ячеек объектов шаблона SVM и один ученик SVM с линейным ядром ('KernelFunction','linear') и другой с другим типом функции ядра, то необходимо указать для учащегося с линейным ядром.'SaveSupportVectors',true
Для получения более подробной информации см. ClassificationECOCCoderConfigurer. Сведения о аргументах пары имя-значение, которые нельзя изменить при переподготовке модели, см. в разделе Советы.
Ограничения генерации кода для классификаторов SVM и моделей линейной классификации также применяются к классификаторам ECOC в зависимости от выбора двоичных учеников. Дополнительные сведения см. в разделе Создание кода CompactClassificationSVM класс и генерация кода ClassificationLinear класс.
Дополнительные сведения см. в разделе Введение в создание кода.
ClassificationPartitionedECOC | CompactClassificationECOC | fitcecoc | fitcsvm
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.