Компактная многоклассовая модель для вспомогательных векторных машин (SVM) и других классификаторов
CompactClassificationECOC является компактной версией модели многоклассовых выходных кодов с исправлением ошибок (ECOC). Компактный классификатор не включает данные, используемые для обучения многоклассной модели ECOC. Поэтому выполнение определенных задач, таких как перекрестная проверка, с помощью компактного классификатора невозможно. Использование компактной многоклассовой модели ECOC для таких задач, как классификация новых данных (predict).
Можно создать CompactClassificationECOC модель двумя способами:
Создание компактной модели ECOC из обученного ClassificationECOC с помощью compact объектная функция.
Создайте компактную модель ECOC с помощью fitcecoc и определение 'Learners' аргумент пары имя-значение как 'linear', 'kernel', a templateLinear или templateKernel объект или массив ячеек таких объектов.
После создания CompactClassificationECOC объект модели, для доступа к его свойствам можно использовать точечную нотацию. Пример см. в разделе Классификатор ECOC Train and Cross-Validate.
BinaryLearners - Обученные двоичные учащиесяОбученные двоичные обучающиеся, указанные как вектор ячейки объектов модели. Количество двоичных учеников зависит от количества классов в Y и дизайн кодирования.
Каналы программного обеспечения BinaryLearner{j} в соответствии с двоичной проблемой, указанной CodingMatrix(:,j). Например, для многоклассного обучения с использованием обучающихся SVM каждый элемент BinaryLearners является CompactClassificationSVM классификатор.
Типы данных: cell
BinaryLoss - Двоичная функция потери ученика'binodeviance' | 'exponential' | 'hamming' | 'hinge' | 'linear' | 'logit' | 'quadratic'Двоичная функция потери ученика, заданная как вектор символов, представляющий имя функции потери.
Если вы обучаетесь с использованием двоичных учеников, которые используют различные функции потери, то программное обеспечение BinaryLoss кому 'hamming'. Чтобы потенциально повысить точность, укажите бинарную функцию потерь, отличную от функции по умолчанию, во время прогнозирования или вычисления потерь с помощью 'BinaryLoss' аргумент пары имя-значение predict или loss.
Типы данных: char
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
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
PredictorNames - Имена предикторовИмена предикторов в порядке их появления в данных предиктора, заданных как клеточный массив векторов символов. Длина PredictorNames равно количеству переменных в данных обучения X или Tbl используется в качестве переменных предиктора.
Типы данных: cell
ExpandedPredictorNames - Расширенные имена предикторовРасширенные имена предикторов, заданные как массив ячеек символьных векторов.
Если модель использует кодировку для категориальных переменных, то ExpandedPredictorNames содержит имена, описывающие развернутые переменные. В противном случае ExpandedPredictorNames является таким же, как PredictorNames.
Типы данных: cell
Prior - Вероятности предыдущего классаЭто свойство доступно только для чтения.
Вероятности предшествующего класса, определенные как числовой вектор. Prior имеет столько же элементов, сколько и число классов в ClassNames, и порядок элементов соответствует порядку классов в ClassNames.
fitcecoc включает в себя затраты на неправильную классификацию различных типов двоичных учеников.
Типы данных: double
ResponseName - Имя переменной ответаИмя ответной переменной, указанное как символьный вектор.
Типы данных: char
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
compareHoldout | Сравнение точности двух классификационных моделей с использованием новых данных |
discardSupportVectors | Отбрасывать векторы поддержки линейных двоичных учеников SVM в модели ECOC |
edge | Край классификации для многоклассовой модели выходных кодов с исправлением ошибок (ECOC) |
lime | Локальные интерпретируемые модели-агностические объяснения (LIME) |
loss | Потеря классификации для многоклассовой модели выходных кодов с исправлением ошибок (ECOC) |
margin | Поля классификации для многоклассовой модели выходных кодов с исправлением ошибок (ECOC) |
partialDependence | Вычислить частичную зависимость |
plotPartialDependence | Создание графиков частичной зависимости (PDP) и индивидуального условного ожидания (ICE) |
predict | Классификация наблюдений с использованием многоклассовой модели выходных кодов с исправлением ошибок (ECOC) |
shapley | Значения Шапли |
selectModels | Выберите подмножество многоклассовых моделей ECOC, состоящих из двоичных ClassificationLinear ученики |
update | Обновление параметров модели для создания кода |
Уменьшите размер полной модели ECOC, удалив данные обучения. Полные модели ECOC (ClassificationECOC модели) хранят данные обучения. Для повышения эффективности используйте более мелкий классификатор.
Загрузите набор данных радужки Фишера. Укажите данные предиктора X, данные ответа Yи порядок классов в Y.
load fisheriris
X = meas;
Y = categorical(species);
classOrder = unique(Y);Обучение модели ECOC с использованием двоичных классификаторов SVM. Стандартизация данных предиктора с помощью шаблона SVM tи укажите порядок классов. Во время обучения программа использует значения по умолчанию для пустых параметров в t.
t = templateSVM('Standardize',true); Mdl = fitcecoc(X,Y,'Learners',t,'ClassNames',classOrder);
Mdl является ClassificationECOC модель.
Уменьшите размер модели ECOC.
CompactMdl = compact(Mdl)
CompactMdl =
CompactClassificationECOC
ResponseName: 'Y'
CategoricalPredictors: []
ClassNames: [setosa versicolor virginica]
ScoreTransform: 'none'
BinaryLearners: {3x1 cell}
CodingMatrix: [3x3 double]
Properties, Methods
CompactMdl является CompactClassificationECOC модель. CompactMdl не сохраняет все свойства, которые Mdl магазины. В частности, в нем не хранятся данные обучения.
Отображение объема памяти, используемого классификатором.
whos('CompactMdl','Mdl')
Name Size Bytes Class Attributes CompactMdl 1x1 15116 classreg.learning.classif.CompactClassificationECOC Mdl 1x1 28357 ClassificationECOC
Полная модель ECOC (Mdl) приблизительно вдвое превышает размер компактной модели ECOC (CompactMdl).
Для эффективной маркировки новых наблюдений можно удалить Mdl из рабочей области MATLAB ®, а затем передатьCompactMdl и новые предикторные значения для predict.
Обучение и перекрестная проверка классификатора ECOC с использованием различных двоичных учеников и схемы кодирования «один против всех».
Загрузите набор данных радужки Фишера. Укажите данные предиктора X и данные ответа Y. Определите имена классов и количество классов.
load fisheriris X = meas; Y = species; classNames = unique(species(~strcmp(species,''))) % Remove empty classes
classNames = 3x1 cell
{'setosa' }
{'versicolor'}
{'virginica' }
K = numel(classNames) % Number of classesK = 3
Вы можете использовать classNames для указания порядка занятий во время обучения.
Для схемы кодирования «один против всех» в этом примере K = 3 бинарных ученика. Укажите шаблоны для двоичных учеников, которые:
Двоичный ученик 1 и 2 являются наивными байесовскими классификаторами. По умолчанию каждый предиктор условно, обычно распределяется, учитывая его метку.
Двоичный ученик 3 является классификатором SVM. Укажите использование ядра Gaussian.
rng(1); % For reproducibility tNB = templateNaiveBayes(); tSVM = templateSVM('KernelFunction','gaussian'); tLearners = {tNB tNB tSVM};
tNB и tSVM являются шаблонными объектами для наивного обучения Bayes и SVM соответственно. Объекты указывают, какие опции следует использовать во время обучения. Большинство их свойств пусты, за исключением свойств, указанных аргументами пары имя-значение. Во время обучения программа заполняет пустые свойства значениями по умолчанию.
Обучение и перекрестная проверка классификатора ECOC с использованием двоичных шаблонов учащихся и схемы кодирования «один против всех». Укажите порядок классов. По умолчанию наивные классификаторы Байеса используют апостериорные вероятности в качестве баллов, тогда как классификаторы SVM используют расстояния от границы принятия решения. Поэтому для агрегирования двоичных учеников необходимо указать соответствие задним вероятностям.
CVMdl = fitcecoc(X,Y,'ClassNames',classNames,'CrossVal','on',... 'Learners',tLearners,'FitPosterior',true);
CVMdl является ClassificationPartitionedECOC модель с перекрестной проверкой. По умолчанию программное обеспечение реализует 10-кратную перекрестную проверку. Оценки по бинарным ученикам имеют одинаковую форму (то есть они являются апостериорными вероятностями), поэтому программное обеспечение может правильно агрегировать результаты бинарных классификаций.
Осмотрите одну из обученных складок с помощью точечного обозначения.
CVMdl.Trained{1}ans =
CompactClassificationECOC
ResponseName: 'Y'
CategoricalPredictors: []
ClassNames: {'setosa' 'versicolor' 'virginica'}
ScoreTransform: 'none'
BinaryLearners: {3x1 cell}
CodingMatrix: [3x3 double]
Properties, Methods
Каждая складка является CompactClassificationECOC модель обучена 90% данных.
Вы можете получить доступ к результатам двоичных учеников с помощью точечной нотации и индексации ячеек. Выведите на экран обученный классификатор SVM (третий двоичный ученик) в первый раз.
CVMdl.Trained{1}.BinaryLearners{3}ans =
CompactClassificationSVM
ResponseName: 'Y'
CategoricalPredictors: []
ClassNames: [-1 1]
ScoreTransform: '@(S)sigmoid(S,-4.016735e+00,-3.243061e-01)'
Alpha: [33x1 double]
Bias: -0.1345
KernelParameters: [1x1 struct]
SupportVectors: [33x4 double]
SupportVectorLabels: [33x1 double]
Properties, Methods
Оцените ошибку обобщения.
genError = kfoldLoss(CVMdl)
genError = 0.0333
В среднем погрешность обобщения составляет примерно 3%.
Для заданного числа классов 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.
[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 класс.
Дополнительные сведения см. в разделе Введение в создание кода.
ClassificationECOC | ClassificationPartitionedECOC | ClassificationPartitionedKernelECOC | ClassificationPartitionedLinearECOC | compact | fitcecoc
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.