Модель Multiclass для машин опорных векторов (SVMs) и других классификаторов
ClassificationECOC
классификатор выходных кодов с коррекцией ошибок (ECOC) для изучения мультикласса, где классификатор состоит из нескольких бинарных учеников, таких как машины опорных векторов (SVMs). Обученный 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
- 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
— Бинарные веса ученикаБинарные веса ученика в виде числового вектора-строки. Длина LearnerWeights
равно количеству бинарных учеников (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
— Строки используются в подборе кривой[]
(значение по умолчанию) | логический векторСтроки исходных обучающих данных, используемых в подборе кривой 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
элементы.
Программное обеспечение нормирует веса, используемые для обучения так, чтобы 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 | Создайте графики отдельного условного ожидания (ICE) и частичный график зависимости (PDP) |
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 learner
ans = 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'
.
Доступ к свойствам 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 обучается на наблюдениях в Классе 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, значение '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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.