Многоклассовая модель для машин опорных векторов (SVM) и других классификаторов
ClassificationECOC
является классификатором выходных кодов с исправлением ошибок (ECOC) для многоклассового обучения, где классификатор состоит из нескольких двоичных учащихся, таких как машины опорных векторов (SVM). Обученные ClassificationECOC
классификаторы сохраняют обучающие данные, значения параметров, предыдущие вероятности и матрицы кодирования. Используйте эти классификаторы для выполнения задач, таких как предсказание меток или апостериорных вероятностей для новых данных (см. predict
).
Создайте ClassificationECOC
объект при помощи fitcecoc
.
Если вы задаете линейных или ядерные двоичные ученики, не задавая опции перекрестной валидации, то fitcecoc
возвращает CompactClassificationECOC
вместо этого объект.
После создания ClassificationECOC
объект модели, вы можете использовать запись через точку для доступа к его свойствам. Для получения примера смотрите Train Мультикласса модель с использованием SVM Learners.
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'
аргумент имя-значение как положительный целочисленный скаляр при обучении модели с учениками дерева. The 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
с.
Типы данных: 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
- имя проекта кодированияИмя проекта кодирования, заданное как вектор символов. Для получения дополнительной информации смотрите Coding Design.
Типы данных: 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
если его класс true 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' | журнал (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' | 2 x – 1 |
'symmetricismax' | Устанавливает счет для класса с самым большим счетом равным 1 и устанавливает счета для всех других классов равной -1 |
'symmetriclogit' | 2/(1 + e–x) – 1 |
Для MATLAB® function или функция, которую вы задаете, вводите указатель на функцию.
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 | Значения 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'
.
Доступ к свойствам 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 обобщается довольно хорошо.
error-correcting output codes (ECOC) model сводит задачу классификации с тремя или более классами к набору двоичных задач классификации.
Классификация ECOC требует проекта кодирования, которая определяет классы, которые обучают двоичные ученики, и схемы декодирования, которая определяет, как агрегируются результаты (предсказания) двоичных классификаторов.
Предположим следующее:
Задача классификации имеет три класса.
Проект кодирования - один от одного. Для трех классов этот проект кодирования
Схема декодирования использует g потерь.
Учащиеся являются SVM.
Чтобы создать эту классификационную модель, алгоритм ECOC следует этим шагам.
Ученик 1 обучается наблюдениям в классе 1 или классе 2 и рассматривает класс 1 как положительный класс, а класс 2 как отрицательный класс. Другие учащиеся проходят аналогичную подготовку.
Позвольте M быть матрицей проекта кодирования с элементами mkl, и sl быть предсказанной классификационной оценкой для положительного класса l учащегося. Алгоритм присваивает новое наблюдение классу (), что минимизирует агрегирование потерь для L двоичных учащихся.
Модели ECOC могут улучшить точность классификации по сравнению с другими многоклассовыми моделями [2].
coding design является матрицей, где элементы направляют, какие классы обучаются каждым двоичным учеником, то есть как многоклассовая задача сводится к ряду двоичных задач.
Каждая строка проекта кодирования соответствует отдельному классу, и каждый столбец соответствует двоичному обучающему. В проекте троичного кодирования для конкретного столбца (или двоичного обучающегося):
Строка, содержащая 1, предписывает двоичному ученику сгруппировать все наблюдения в соответствующем классе в положительный класс.
Строка, содержащая -1, предписывает двоичному ученику сгруппировать все наблюдения в соответствующем классе в отрицательный класс.
Строка, содержащая 0, предписывает двоичному ученику игнорировать все наблюдения в соответствующем классе.
Матрицы проекта кодирования с большими, минимальными, попарными расстояниями в строках, основанными на мере Хемминга, оптимальны. Для получения дополнительной информации о парном расстоянии между строками смотрите Random Coding Design Matrices и [4].
Эта таблица описывает популярные проекты кодирования.
Проект кодирования | Описание | Количество учащихся | Минимальное парное расстояние по строке |
---|---|---|---|
один от всех (OVA) | Для каждого двоичного ученика один класс положителен, а остальные отрицательны. Этот проект исчерпывает все комбинации положительных присвоений классов. | K | 2 |
один от одного (OVO) | Для каждого двоичного ученика один класс положителен, другой отрицателен, а остальные игнорируются. Этот проект исчерпывает все комбинации присвоений пар классов. | K (K – 1)/2 | 1 |
бинарный полный | Этот проект разбивает классы на все двоичные комбинации и не игнорирует никакие классы. То есть все назначения классов | 2K – 1 – 1 | 2K – 2 |
ternary complete | Этот проект разделяет классы на все троичные комбинации. То есть все назначения классов | (3K – 2K + 1 + 1)/2 | 3K – 2 |
порядковый | Для первого двоичного ученика первый класс отрицателен, а остальные положительны. Для второго двоичного ученика первые два класса отрицательны, а остальные положительны, и так далее. | K – 1 | 1 |
плотный случайный | Для каждого двоичного ученика программа случайным образом назначает классы в положительные или отрицательные классы с по крайней мере одним из каждого типа. Для получения дополнительной информации смотрите Random Coding Design Matrices. | Случайный, но приблизительно 10 лог2 K | Переменная |
разреженный случайный | Для каждого двоичного ученика программа случайным образом присваивает классы как положительные или отрицательные с вероятностью 0,25 для каждого и игнорирует классы с вероятностью 0,5. Для получения дополнительной информации смотрите Random Coding Design Matrices. | Случайный, но приблизительно 15 лог2 K | Переменная |
Этот график сравнивает количество двоичных учащихся для проектов кодирования с увеличением 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 является элементом матричного < reservedrangesplaceholder0 > проекта кодирования.
По умолчанию и для эффективности, 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] Фюрнкранц, Йоханнес. Round Robin Classification (неопр.) (недоступная ссылка). Journal of Машинное Обучение Research, Vol. 2, 2002, pp. 721-747.
[2] Эскалера, С., О. Пужоль, и П. Радева. «Разделяемость троичных кодов для разреженных проектов выходных кодов с исправлением ошибок». Pattern Recognition Letters, Vol. 30, Issue 3, 2009, pp. 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'
Правда
Для получения дополнительной информации смотрите ClassificationECOCCoderConfigurer
. Для получения информации об аргументах пары "имя-значение", которые вы не можете изменить при переобучении модели, см. Раздел « Советы».
Ограничения генерации кода для классификаторов SVM и линейных моделей классификации также применяются к классификаторам ECOC в зависимости от выбора двоичных учащихся. Для получения дополнительной информации смотрите Генерация кода CompactClassificationSVM
класс и генерация кода ClassificationLinear
класс.
Для получения дополнительной информации смотрите Введение в генерацию кода.
ClassificationPartitionedECOC
| CompactClassificationECOC
| fitcecoc
| fitcsvm
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.