Поля классификации для наблюдений, не используемых при обучении
возвращает перекрестно проверенные поля классификации, полученные m = kfoldMargin(CVMdl)CVMdl, которая является перекрестно проверенной моделью выходных кодов с исправлением ошибок (ECOC), состоящей из моделей линейной классификации. То есть, для каждого раза, kfoldMargin оценивает пределы классификации для наблюдений, которые он проводит, когда он тренируется с использованием всех других наблюдений.
m содержит поля классификации для каждой силы регуляризации в моделях линейной классификации, которые включают CVMdl.
использует дополнительные параметры, указанные одним или несколькими m = kfoldMargin(CVMdl,Name,Value)Name,Value аргументы пары. Например, укажите схему декодирования или уровень детализации.
CVMdl - Перекрестная проверка модели ECOC, состоящей из моделей линейной классификацииClassificationPartitionedLinearECOC объект моделиПерекрестно проверенная модель ECOC, состоящая из линейных классификационных моделей, указанных как ClassificationPartitionedLinearECOC объект модели. Можно создать ClassificationPartitionedLinearECOC модель с использованием fitcecoc и путем:
Указание любого из аргументов пары перекрестная проверка, имя-значение, например, CrossVal
Установка аргумента пары имя-значение Learners кому 'linear' или шаблон модели линейной классификации, возвращенный templateLinear
Для получения оценок kfoldMargin применяет те же данные, которые используются для перекрестной проверки модели ECOC (X и Y).
Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.
'BinaryLoss' - Двоичная функция потери ученика'hamming' | 'linear' | 'logit' | 'exponential' | 'binodeviance' | 'hinge' | 'quadratic' | дескриптор функцииДвоичная функция потери ученика, заданная как разделенная запятыми пара, состоящая из 'BinaryLoss' и встроенный дескриптор функции или имени функции потери.
Эта таблица содержит имена и описания встроенных функций, где yj - метка класса для конкретного двоичного ученика (в наборе {-1,1,0}), sj - оценка для наблюдения j, а g (yj, sj) - формула двоичных потерь.
| Стоимость | Описание | Домен оценки | g (yj, sj) |
|---|---|---|---|
'binodeviance' | Биномиальное отклонение | (–∞,∞) | журнал [1 + exp (-2yjsj) ]/[ 2log (2)] |
'exponential' | Показательный | (–∞,∞) | exp (-yjsj )/2 |
'hamming' | Хэмминг | [0,1] или (- ∞,∞) | [1 - знак (yjsj) ]/2 |
'hinge' | Стержень | (–∞,∞) | max (0,1 - yjsj )/2 |
'linear' | Линейный | (–∞,∞) | (1 - yjsj )/2 |
'logit' | Логистический | (–∞,∞) | log [1 + exp (-yjsj) ]/[ 2log (2)] |
'quadratic' | Квадратный | [0,1] | [1-yj (2sj-1)] 2/2 |
Программное обеспечение нормализует двоичные потери так, что потери составляют 0,5, когда yj = 0. Кроме того, программное обеспечение вычисляет средние двоичные потери для каждого класса.
Для пользовательской двоичной функции потери, например, customFunction, укажите его функциональный дескриптор 'BinaryLoss',@customFunction.
customFunction должен иметь эту форму
bLoss = customFunction(M,s)
M - матрица кодирования K-by-L, сохраненная в Mdl.CodingMatrix.
s - вектор 1-by-L строк классификационных баллов.
bLoss - потеря классификации. Этот скаляр агрегирует двоичные потери для каждого учащегося в конкретном классе. Например, можно использовать среднюю двоичную потерю для суммирования потерь по учащимся для каждого класса.
K - количество классов.
L - количество двоичных учеников.
Пример передачи пользовательской двоичной функции потери см. в разделе Прогнозирование меток тестовой выборки модели ECOC с использованием пользовательской двоичной функции потери.
По умолчанию, если все двоичные ученики являются линейными моделями классификации с использованием:
SVM, затем BinaryLoss является 'hinge'
Логистическая регрессия, затем BinaryLoss является 'quadratic'
Пример: 'BinaryLoss','binodeviance'
Типы данных: char | string | function_handle
'Decoding' - Схема декодирования'lossweighted' (по умолчанию) | 'lossbased'Схема декодирования, которая агрегирует двоичные потери, заданная как разделенная запятыми пара, состоящая из 'Decoding' и 'lossweighted' или 'lossbased'. Дополнительные сведения см. в разделе Потери двоичного кода.
Пример: 'Decoding','lossbased'
'Options' - Варианты оценки[] (по умолчанию) | массив структуры, возвращенный statsetОпции оценки, указанные как пара, разделенная запятыми, состоящая из 'Options' и массив структуры, возвращенный statset.
Для вызова параллельных вычислений:
Вам нужна лицензия Parallel Computing Toolbox™.
Определить 'Options',statset('UseParallel',true).
'Verbose' - Уровень детализации0 (по умолчанию) | 1Уровень детализации, указанный как разделенная запятыми пара, состоящая из 'Verbose' и 0 или 1. Verbose управляет количеством диагностических сообщений, отображаемых программой в окне команд.
Если Verbose является 0, то программное обеспечение не отображает диагностические сообщения. В противном случае программа отображает диагностические сообщения.
Пример: 'Verbose',1
Типы данных: single | double
m - Перекрестно проверенные поля классификацииПерекрестно проверенные поля классификации, возвращаемые в виде числового вектора или матрицы.
m является n-by-L, где n - число наблюдений в X и L - количество сильных сторон регуляризации в Mdl (то есть numel(Mdl.Lambda)).
m( является перекрестно проверенным классификационным пределом наблюдения i с использованием модели ECOC, состоящей из линейных классификационных моделей, которая имеет силу регуляризации i,j)Mdl.Lambda(.j)
Загрузите набор данных NLP.
load nlpdataX является разреженной матрицей данных предиктора, и Y является категориальным вектором меток класса.
Для простоты используйте метку «others» для всех наблюдений в Y которые не являются 'simulink', 'dsp', или 'comm'.
Y(~(ismember(Y,{'simulink','dsp','comm'}))) = 'others';Перекрестная проверка многоклассовой модели линейной классификации.
rng(1); % For reproducibility CVMdl = fitcecoc(X,Y,'Learner','linear','CrossVal','on');
CVMdl является ClassificationPartitionedLinearECOC модель. По умолчанию программное обеспечение реализует 10-кратную перекрестную проверку. Можно изменить количество сгибов с помощью 'KFold' аргумент пары имя-значение.
Оцените k-кратные границы.
m = kfoldMargin(CVMdl); size(m)
ans = 1×2
31572 1
m является вектором 31572 на 1. m(j) - среднее значение отклоненных полей для наблюдения j.
Постройте график k-кратных полей с помощью оконных графиков.
figure;
boxplot(m);
h = gca;
h.YLim = [-5 5];
title('Distribution of Cross-Validated Margins')
Одним из способов выбора элементов является сравнение k-кратных полей из нескольких моделей. Исходя исключительно из этого критерия, классификатор с большими полями является лучшим классификатором.
Загрузите набор данных NLP. Выполните предварительную обработку данных, как в разделе Оценка k-кратных полей перекрестной проверки, и сориентируйте данные предиктора таким образом, чтобы наблюдения соответствовали столбцам.
load nlpdata Y(~(ismember(Y,{'simulink','dsp','comm'}))) = 'others'; X = X';
Создайте два набора данных:
fullX содержит все предикторы.
partX содержит 1/2 предикторов, выбранных случайным образом.
rng(1); % For reproducibility p = size(X,1); % Number of predictors halfPredIdx = randsample(p,ceil(0.5*p)); fullX = X; partX = X(halfPredIdx,:);
Создайте шаблон модели линейной классификации, определяющий оптимизацию целевой функции с помощью SpaRSA.
t = templateLinear('Solver','sparsa');
Перекрестная проверка двух моделей ECOC, состоящих из двоичных моделей линейной классификации: одна использует все предикторы, а другая - половину предикторов. Укажите, что наблюдения соответствуют столбцам.
CVMdl = fitcecoc(fullX,Y,'Learners',t,'CrossVal','on',... 'ObservationsIn','columns'); PCVMdl = fitcecoc(partX,Y,'Learners',t,'CrossVal','on',... 'ObservationsIn','columns');
CVMdl и PCVMdl являются ClassificationPartitionedLinearECOC модели.
Оцените k-кратные поля для каждого классификатора. Постройте график распределения k-кратных наборов полей с помощью оконных графиков.
fullMargins = kfoldMargin(CVMdl); partMargins = kfoldMargin(PCVMdl); figure; boxplot([fullMargins partMargins],'Labels',... {'All Predictors','Half of the Predictors'}); h = gca; h.YLim = [-1 1]; title('Distribution of Cross-Validated Margins')

Распределения k-кратных полей двух классификаторов одинаковы.
Чтобы определить хорошую силу лассо-штрафа для модели линейной классификации, которая использует учащегося логистической регрессии, сравните распределения k-кратных полей.
Загрузите набор данных NLP. Выполните предварительную обработку данных, как в разделе Выбор элемента с помощью k-кратных полей.
load nlpdata Y(~(ismember(Y,{'simulink','dsp','comm'}))) = 'others'; X = X';
Создайте набор из 11 логарифмически разнесенных уровней регуляции от до .
Lambda = logspace(-8,1,11);
Создайте шаблон модели линейной классификации, который определяет использование логистической регрессии с штрафом за лассо, используя каждую из сильных сторон регуляризации, оптимизируя целевую функцию с помощью SpaRSA и уменьшая допуск на градиент целевой функции до 1e-8.
t = templateLinear('Learner','logistic','Solver','sparsa',... 'Regularization','lasso','Lambda',Lambda,'GradientTolerance',1e-8);
Перекрестная проверка модели ECOC, состоящей из двоичных линейных классификационных моделей, с использованием пятикратной перекрестной проверки и
rng(10); % For reproducibility CVMdl = fitcecoc(X,Y,'Learners',t,'ObservationsIn','columns','KFold',5)
CVMdl =
ClassificationPartitionedLinearECOC
CrossValidatedModel: 'LinearECOC'
ResponseName: 'Y'
NumObservations: 31572
KFold: 5
Partition: [1x1 cvpartition]
ClassNames: [comm dsp simulink others]
ScoreTransform: 'none'
Properties, Methods
CVMdl является ClassificationPartitionedLinearECOC модель.
Оцените k-кратные пределы для каждой силы регуляризации. Оценки логистической регрессии приведены в [0,1]. Примените квадратичные двоичные потери.
m = kfoldMargin(CVMdl,'BinaryLoss','quadratic'); size(m)
ans = 1×2
31572 11
m представляет собой матрицу 31572 на 11 перекрестно проверенных полей для каждого наблюдения. Столбцы соответствуют прочностям регуляризации.
Постройте график k-кратных полей для каждой силы регуляризации.
figure; boxplot(m) ylabel('Cross-validated margins') xlabel('Lambda indices')

Несколько значений Lambda аналогичным образом обеспечивают высокую маржинальность центров распределения с низкими спредами. Более высокие значения Lambda привести к предикторной переменной разреженности, которая является хорошим качеством классификатора.
Выберите силу регуляризации, которая возникает непосредственно перед тем, как центр распределения маржи начнет уменьшаться, а спред начнет увеличиваться.
LambdaFinal = Lambda(5);
Обучение модели ECOC, состоящей из модели линейной классификации, с использованием всего набора данных и определение силы регуляризации LambdaFinal.
t = templateLinear('Learner','logistic','Solver','sparsa',... 'Regularization','lasso','Lambda',Lambda(5),'GradientTolerance',1e-8); MdlFinal = fitcecoc(X,Y,'Learners',t,'ObservationsIn','columns');
Чтобы оценить метки для новых наблюдений, передайте MdlFinal и новые данные для predict.
Двоичная потеря - это функция класса и оценки классификации, которая определяет, насколько хорошо двоичный ученик классифицирует наблюдение в классе.
Предположим, что:
mkj - элемент (k, j) матрицы M дизайна кодирования (то есть код, соответствующий классу k двоичного учащегося j).
sj - оценка двоичного ученика j для наблюдения.
g - функция двоичных потерь.
^ - прогнозируемый класс для наблюдения.
При декодировании на основе потерь [Escalera et al.] класс, производящий минимальную сумму двоичных потерь над двоичными учениками, определяет прогнозируемый класс наблюдения, то есть
).
При декодировании со взвешенными потерями [Escalera et al.] класс, производящий минимальное среднее двоичных потерь по двоичным ученикам, определяет прогнозируемый класс наблюдения, то есть
∑j=1L'mkj|.
Allwein et al. предполагают, что взвешенное по потерям декодирование улучшает точность классификации, сохраняя значения потерь для всех классов в одном динамическом диапазоне.
Эта таблица суммирует поддерживаемые функции потерь, где yj - метка класса для конкретного двоичного ученика (в наборе {-1,1,0}), sj - оценка для наблюдения j, и g (yj, sj).
| Стоимость | Описание | Домен оценки | g (yj, sj) |
|---|---|---|---|
'binodeviance' | Биномиальное отклонение | (–∞,∞) | журнал [1 + exp (-2yjsj) ]/[ 2log (2)] |
'exponential' | Показательный | (–∞,∞) | exp (-yjsj )/2 |
'hamming' | Хэмминг | [0,1] или (- ∞,∞) | [1 - знак (yjsj) ]/2 |
'hinge' | Стержень | (–∞,∞) | max (0,1 - yjsj )/2 |
'linear' | Линейный | (–∞,∞) | (1 - yjsj )/2 |
'logit' | Логистический | (–∞,∞) | log [1 + exp (-yjsj) ]/[ 2log (2)] |
'quadratic' | Квадратный | [0,1] | [1-yj (2sj-1)] 2/2 |
Программное обеспечение нормализует двоичные потери так, что потери составляют 0,5, когда yj = 0, и агрегирует, используя среднее значение двоичных учеников [Allwein et al.].
Не путайте бинарную потерю с общей классификационной потерей (указанной 'LossFun' аргумент пары имя-значение loss и predict объектные функции), который измеряет, насколько хорошо классификатор ECOC работает в целом.
Запас классификации для каждого наблюдения представляет собой разницу между отрицательными потерями для истинного класса и максимальными отрицательными потерями среди ложных классов. Если поля находятся в одной шкале, то они служат мерой достоверности классификации. Среди нескольких классификаторов лучше те, которые дают большую маржу.
[1] Allwein, E., R. Schapire и Y. Singer. «Сокращение мультиклассов до двоичных: унифицирующий подход к classifiers маржи». Журнал исследований машинного обучения. Том 1, 2000, стр. 113-141.
[2] Эскалера, С., О. Пужоль и П. Радева. «Процесс декодирования в выходных кодах с тройной коррекцией ошибок». Транзакции IEEE по анализу шаблонов и машинному интеллекту. Том 32, выпуск 7, 2010, стр. 120-134.
[3] Эскалера, С., О. Пужоль и П. Радева. «Разделяемость троичных кодов для разреженных конструкций выходных кодов с исправлением ошибок». Повторная запись шаблона. Том 30, выпуск 3, 2009, стр. 285-297.
Для параллельного выполнения укажите 'Options' аргумент name-value в вызове этой функции и установка 'UseParallel' поле структуры опций для true использование statset.
Например: 'Options',statset('UseParallel',true)
Дополнительные сведения о параллельных вычислениях см. в разделе Запуск функций MATLAB с автоматической параллельной поддержкой (панель инструментов параллельных вычислений).
ClassificationLinear | ClassificationPartitionedLinearECOC | kfoldEdge | kfoldPredict | margin
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.