Модель Multiclass для машин вектора поддержки (SVMs) и других классификаторов
ClassificationECOC
является классификатором выходных кодов с коррекцией ошибок (ECOC) для изучения мультикласса, где классификатор состоит из нескольких бинарных учеников, таких как машины вектора поддержки (SVMs). Обученные классификаторы ClassificationECOC
хранят данные тренировки, значения параметров, априорные вероятности и матрицы кодирования. Используйте эти классификаторы, чтобы выполнить задачи, такие как предсказание меток или апостериорных вероятностей для новых данных (см. predict
).
Создайте объект ClassificationECOC
при помощи fitcecoc
.
Если вы задаете линейный или двоичные ученики ядра, не задавая опции перекрестной проверки, то fitcecoc
возвращает объект CompactClassificationECOC
вместо этого.
После того, как вы создадите объект модели ClassificationECOC
, можно использовать запись через точку, чтобы получить доступ к ее свойствам. Для примера см., что Модель Мультикласса Train Использует Учеников 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)
.
Значение | Дихотомическое присвоение класса |
---|---|
–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;
end
Xbinned
содержит индексы интервала, в пределах от 1 к количеству интервалов, для числовых предикторов. значения Xbinned
0 для категориальных предикторов. Если X
содержит NaN
s, то соответствующими значениями Xbinned
является NaN
s.Типы данных: cell
CodingMatrix
— Коды присвоения классаКоды присвоения класса для бинарных учеников, заданных как числовая матрица. CodingMatrix
является K-by-L матрица, где K является количеством классов, и L является количеством бинарных учеников.
Элементами CodingMatrix
является –1
, 0
или 1
, и значения соответствуют дихотомическим присвоениям класса. Эта таблица описывает, как ученик j
присваивает наблюдения в классе i
к дихотомическому классу, соответствующему значению CodingMatrix(i,j)
.
Значение | Дихотомическое присвоение класса |
---|---|
–1 | Ученик j присваивает наблюдения в классе i к отрицательному классу. |
0 | Перед обучением ученик j удаляет наблюдения в классе i от набора данных. |
1 | Ученик j присваивает наблюдения в классе i к положительному классу. |
Типы данных: double
| single
| int8
| int16
| int32
| int64
CodingName
— Кодирование имени проектаКодирование имени проекта, заданного как вектор символов. Для получения дополнительной информации см. Проект Кодирования.
Типы данных: char
LearnerWeights
— Бинарные веса ученикаБинарные веса ученика, заданные как числовой вектор - строка. Длина LeanerWeights
равна количеству бинарных учеников (length(Mdl.BinaryLearners)
).
LearnerWeights(j)
является суммой весов наблюдения что бинарный ученик использование j
, чтобы обучить его классификатор.
Программное обеспечение использует LearnerWeights
, чтобы соответствовать апостериорным вероятностям путем минимизации расхождения Kullback-Leibler. Программное обеспечение игнорирует LearnerWeights
, когда это использует метод квадратичного программирования оценки апостериорных вероятностей.
Типы данных: double | single
CategoricalPredictors
— Категориальные индексы предиктора[]
Категориальные индексы предиктора, заданные как вектор положительных целых чисел. CategoricalPredictors
содержит индексные значения, соответствующие столбцам данных о предикторе, которые содержат категориальные предикторы. Если ни один из предикторов не является категориальным, то это свойство пусто ([]
).
Типы данных: single | double
ClassNames
— Уникальные метки классаУникальные метки класса используются в обучении, заданном как категориальное или символьный массив, логический или числовой вектор или массив ячеек из символьных векторов. ClassNames
имеет совпадающий тип данных, когда класс маркирует Y
. (Программное обеспечение обрабатывает строковые массивы как массивы ячеек из символьных векторов.)
ClassNames
также определяет порядок класса.
Типы данных: categorical
| char
| logical
| single
| double
| cell
Cost
— Затраты MisclassificationЭто свойство доступно только для чтения.
Затраты Misclassification, заданные как квадратная числовая матрица. Cost
имеет строки и столбцы K, где K является количеством классов.
Cost(i,j)
является стоимостью классификации точки в класс j
, если его истинным классом является i
. Порядок строк и столбцов Cost
соответствует порядку классов в ClassNames
.
fitcecoc
включает затраты misclassification по-другому среди различных типов бинарных учеников.
Типы данных: 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
включает затраты misclassification по-другому среди различных типов бинарных учеников.
Типы данных: double
ResponseName
— Имя переменной откликаИмя переменной отклика, заданное как вектор символов.
Типы данных: char
RowsUsed
— Строки используются в подборе кривой[]
(значение по умолчанию) | логический векторСтроки исходных данных X
, используемый в подборе кривой модели ClassificationECOC
, заданной как логический вектор. Это свойство пусто, если все строки используются.
Типы данных: логический
ScoreTransform
— Выиграйте функцию преобразования, чтобы примениться к предсказанным очкам'doublelogit'
| 'invlogit'
| 'ismax'
| 'logit'
| 'none'
| указатель на функцию |...Выиграйте функцию преобразования, чтобы примениться к предсказанным очкам, заданным как имя функции или указатель на функцию.
Изменить функцию преобразования счета на function
, например, запись через точку использования.
Для встроенной функции введите этот код и замените function
на значение в таблице.
Mdl.ScoreTransform = 'function';
Значение | Описание |
---|---|
'doublelogit' | 1/(1 + e –2x) |
'invlogit' | журнал (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
.
Программное обеспечение нормирует веса, используемые для обучения так, чтобы nansum(W)
был 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' | Таблица гиперпараметров используемые, наблюдаемые значения целевой функции (потеря перекрестной проверки), и ранг наблюдений от самого низкого (лучше всего) к (худшему) самому высокому |
compareHoldout | Сравните точность двух моделей классификации с помощью новых данных |
compact | Уменьшайте размер модели выходных кодов с коррекцией ошибок (ECOC) мультикласса |
crossval | Перекрестный подтвердите модель выходных кодов с коррекцией ошибок (ECOC) мультикласса |
discardSupportVectors | Отбросьте векторы поддержки линейных бинарных учеников SVM в модели ECOC |
edge | Ребро классификации для модели выходных кодов с коррекцией ошибок (ECOC) мультикласса |
loss | Потеря классификации для модели выходных кодов с коррекцией ошибок (ECOC) мультикласса |
margin | Поля классификации для модели выходных кодов с коррекцией ошибок (ECOC) мультикласса |
predict | Классифицируйте наблюдения с помощью модели выходных кодов с коррекцией ошибок (ECOC) мультикласса |
resubEdge | Ребро классификации перезамены для модели выходных кодов с коррекцией ошибок (ECOC) мультикласса |
resubLoss | Потеря классификации перезамены для модели выходных кодов с коррекцией ошибок (ECOC) мультикласса |
resubMargin | Поля классификации перезамены для модели выходных кодов с коррекцией ошибок (ECOC) мультикласса |
resubPredict | Классифицируйте наблюдения на модель выходных кодов с коррекцией ошибок (ECOC) мультикласса |
Обучите модель выходных кодов с коррекцией ошибок (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 array
{'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 learner
ans = classreg.learning.classif.CompactClassificationSVM ResponseName: 'Y' CategoricalPredictors: [] ClassNames: [-1 1] ScoreTransform: 'none' Beta: [4x1 double] Bias: 1.4505 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 array
{'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'
.
Доступ к свойствам SVMs использование индексирования ячейки и записи через точку. Сохраните стандартизированные векторы поддержки каждого 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
является массивом ячеек матриц, содержащих нестандартизированные векторы поддержки для SVMs.
Отобразите данные на графике и идентифицируйте векторы поддержки.
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 делает вывод довольно хорошо.
error-correcting output codes (ECOC) model уменьшает проблему классификации с тремя или больше классами к набору бинарных проблем классификации.
Классификация ECOC требует проекта кодирования, который определяет классы, которые бинарные ученики обучают на, и схема декодирования, которая определяет, как результаты (прогнозы) бинарных классификаторов агрегированы.
Примите следующее:
Проблема классификации имеет три класса.
Проект кодирования один по сравнению с одним. Для трех классов этот проект кодирования
Схема декодирования использует потерю g.
Ученики являются SVMs.
Чтобы создать эту модель классификации, алгоритм ECOC выполняет эти шаги.
Ученик 1 train на наблюдениях в Классе 1 или Классе 2 и Классе 1 обработок как положительный класс и Класс 2 как отрицательный класс. Другие ученики обучены так же.
Позвольте M быть матрицей проекта кодирования с элементами mkl и sl быть предсказанным счетом классификации к положительному классу ученика l. Алгоритм присваивает новое наблюдение классу () это минимизирует агрегацию потерь для двоичных учеников L.
Модели ECOC могут улучшить точность классификации, по сравнению с другими моделями мультикласса [2].
coding design является матрицей, где элементы, прямые, какие классы обучены каждым бинарным учеником, то есть, как проблема мультикласса уменьшается до серии бинарных проблем.
Каждая строка проекта кодирования соответствует отличному классу, и каждый столбец соответствует бинарному ученику. В троичном проекте кодирования, для конкретного столбца (или бинарный ученик):
Строка, содержащая 1, направляет бинарного ученика, чтобы сгруппировать все наблюдения в соответствующем классе в положительный класс.
Строка, содержащая –1, направляет бинарного ученика, чтобы сгруппировать все наблюдения в соответствующем классе в отрицательный класс.
Строка, содержащая 0, направляет бинарного ученика, чтобы проигнорировать все наблюдения в соответствующем классе.
Кодирующие матрицы проекта с большими, минимальными, попарными расстояниями строки на основе меры Хэмминга оптимальны. Для получения дополнительной информации на попарном расстоянии строки, см. Случайные Матрицы Проекта Кодирования и [4].
Эта таблица описывает популярные проекты кодирования.
Кодирование проекта | Описание | Количество учеников | Минимальное попарное расстояние строки |
---|---|---|---|
one-all (OVA) | Для каждого бинарного ученика один класс положителен, и остальные отрицательны. Этот проект исчерпывает все комбинации положительных присвоений класса. | K | 2 |
один по сравнению с одним (OVO) | Для каждого бинарного ученика один класс положителен, другой отрицателен, и остальные проигнорированы. Этот проект исчерпывает все комбинации присвоений пары класса. | K (K – 1)/2 | 1 |
завершенный двоичный файл | Этот проект делит классы во все бинарные комбинации и не игнорирует классов. Таким образом, всеми присвоениями класса является | 2K – 1 – 1 | 2K – 2 |
троичный завершенный | Этот проект делит классы во все троичные комбинации. Таким образом, всеми присвоениями класса является | (3K – 2K + 1 + 1)/2 | 3K – 2 |
порядковый | Для первого бинарного ученика первый класс отрицателен, и остальные положительны. Для второго бинарного ученика первые два класса отрицательны, и остальные положительны и так далее. | K 1 | 1 |
плотный случайный | Для каждого бинарного ученика программное обеспечение случайным образом присваивает классы в положительные или отрицательные классы с по крайней мере одним из каждого типа. Для получения дополнительной информации см. Случайные Матрицы Проекта Кодирования. | Случайный, но приблизительно 10 log2K | Переменная |
разреженный случайный | Для каждого бинарного ученика программное обеспечение случайным образом присваивает классы как положительные или отрицательные с вероятностью 0.25 для каждого, и игнорирует классы с вероятностью 0.5. Для получения дополнительной информации см. Случайные Матрицы Проекта Кодирования. | Случайный, но приблизительно 15 log2K | Переменная |
Этот график сравнивает количество бинарных учеников для проектов кодирования с увеличением K.
Для данного количества классов 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]) данный
где mkjl является элементом кодирования матрицы проекта 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] Fürnkranz, Иоганнес. “Круговая Классификация”. Журнал Исследования Машинного обучения, Издания 2, 2002, стр 721–747.
[2] Escalera, S., О. Пуджол и П. Радева. “Отделимость троичных кодов для разреженных проектов выходных кодов с коррекцией ошибок”. Буквы Распознавания образов, Издание 30, Выпуск 3, 2009, стр 285–297.
Указания и ограничения по применению:
Когда вы обучаете модель ECOC при помощи fitcecoc
, следующие ограничения применяются.
Вы не можете соответствовать апостериорным вероятностям при помощи аргумента пары "имя-значение" 'FitPosterior'
.
Все бинарные ученики должны быть или классификаторами SVM или линейными моделями классификации. Для аргумента пары "имя-значение" 'Learners'
можно задать:
'svm'
или 'linear'
Объект шаблона SVM или массив ячеек таких объектов (см. templateSVM
),
Линейный объект шаблона модели классификации или массив ячеек таких объектов (см. templateLinear
),
Когда вы генерируете код с помощью кодера configurer для predict
и update
, следующие дополнительные ограничения применяются к бинарным ученикам.
Необходимо использовать учеников SVM.
Если вы используете массив ячеек объектов шаблона SVM, значение 'Standardize'
для учеников SVM должно быть сопоставимым. Например, если вы задаете 'Standardize',true
для одного ученика SVM, необходимо задать то же значение для всех учеников SVM.
Если вы используете массив ячеек объектов шаблона SVM, и вы используете одного ученика SVM с линейным ядром ('KernelFunction','linear'
) и другой с другим типом функции ядра, то необходимо задать
для ученика с линейным ядром.'SaveSupportVectors','on'
Для получения дополнительной информации смотрите ClassificationECOCCoderConfigurer
.
Ограничения генерации кода для классификаторов SVM и линейных моделей классификации также применяются к классификаторам ECOC, в зависимости от выбора бинарных учеников. Для получения дополнительной информации смотрите Генерацию кода класса CompactClassificationSVM
и Генерацию кода класса ClassificationLinear
.
Для получения дополнительной информации смотрите Введение в Генерацию кода.
ClassificationPartitionedECOC
| CompactClassificationECOC
| fitcecoc
| fitcsvm
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.