Найти ошибку классификации для классификатора вспомогательных векторных машин (SVM)
возвращает ошибку классификации (см. Classification Loss), скаляр, представляющий, насколько хорошо классификатор обученной машины вспомогательных векторов (SVM) (L = loss(SVMModel,TBL,ResponseVarName)SVMModel) классифицирует данные предиктора в таблице TBL по сравнению с метками истинного класса в TBL.ResponseVarName.
loss нормализует вероятности классов в TBL.ResponseVarName к вероятности предшествующего класса, что fitcsvm используется для обучения, хранится в Prior имущество SVMModel.
Потеря классификации (L) является мерой качества обобщения или повторного замещения. Его интерпретация зависит от функции потерь и схемы взвешивания, но в целом лучшие классификаторы дают меньшие значения классификационных потерь.
указывает параметры, использующие один или несколько аргументов пары имя-значение в дополнение к входным аргументам в предыдущих синтаксисах. Например, можно указать функцию потерь и классификационные веса.L = loss(___,Name,Value)
Загрузить ionosphere набор данных.
load ionosphere rng(1); % For reproducibility
Обучение классификатора SVM. Укажите 15% образец для тестирования, стандартизируйте данные и укажите, что 'g' является положительным классом.
CVSVMModel = fitcsvm(X,Y,'Holdout',0.15,'ClassNames',{'b','g'},... 'Standardize',true); CompactSVMModel = CVSVMModel.Trained{1}; % Extract the trained, compact classifier testInds = test(CVSVMModel.Partition); % Extract the test indices XTest = X(testInds,:); YTest = Y(testInds,:);
CVSVMModel является ClassificationPartitionedModel классификатор. Он содержит свойство Trained, который представляет собой массив ячеек 1 на 1, содержащий CompactClassificationSVM классификатор, который программное обеспечение обучило с помощью обучающего набора.
Определите, насколько хорошо алгоритм обобщается, оценив ошибку классификации тестового образца.
L = loss(CompactSVMModel,XTest,YTest)
L = 0.0787
Классификатор SVM неправильно классифицирует приблизительно 8% тестового образца.
Загрузить ionosphere набор данных.
load ionosphere rng(1); % For reproducibility
Обучение классификатора SVM. Укажите 15% образец для тестирования, стандартизируйте данные и укажите, что 'g' является положительным классом.
CVSVMModel = fitcsvm(X,Y,'Holdout',0.15,'ClassNames',{'b','g'},... 'Standardize',true); CompactSVMModel = CVSVMModel.Trained{1}; % Extract the trained, compact classifier testInds = test(CVSVMModel.Partition); % Extract the test indices XTest = X(testInds,:); YTest = Y(testInds,:);
CVSVMModel является ClassificationPartitionedModel классификатор. Он содержит свойство Trained, который представляет собой массив ячеек 1 на 1, содержащий CompactClassificationSVM классификатор, который программное обеспечение обучило с помощью обучающего набора.
Определите, насколько хорошо алгоритм обобщается, оценивая потери шарнира тестового образца.
L = loss(CompactSVMModel,XTest,YTest,'LossFun','hinge')
L = 0.2998
Потеря шарнира составляет приблизительно 0,3. Предпочтительны классификаторы с потерями шарнира, близкими к 0.
SVMModel - Модель классификации SVMClassificationSVM объект модели | CompactClassificationSVM объект моделиМодель классификации SVM, указанная как ClassificationSVM объект модели или CompactClassificationSVM объект модели, возвращенный fitcsvm или compactсоответственно.
TBL - Образцы данныхОбразец данных, указанный как таблица. Каждая строка TBL соответствует одному наблюдению, и каждый столбец соответствует одной прогнозирующей переменной. Дополнительно, TBL может содержать дополнительные столбцы для переменной ответа и весов наблюдения. TBL должен содержать все предикторы, используемые для обучения SVMModel. Многозначные переменные и массивы ячеек, отличные от массивов ячеек символьных векторов, не допускаются.
Если TBL содержит переменную ответа, используемую для обучения SVMModel, то указывать не нужно ResponseVarName или Y.
Если вы тренировались SVMModel используя образцы данных, содержащиеся в таблице, затем входные данные для loss также должен находиться в таблице.
Если установить 'Standardize',true в fitcsvm при обучении SVMModel, то программное обеспечение стандартизирует столбцы данных предиктора, используя соответствующие средства в SVMModel.Mu и стандартные отклонения в SVMModel.Sigma.
Типы данных: table
ResponseVarName - Имя переменной ответаTBLИмя переменной ответа, указанное как имя переменной в TBL.
Необходимо указать ResponseVarName в виде вектора символов или строкового скаляра. Например, если переменная ответа Y хранится как TBL.Y, затем укажите ResponseVarName как 'Y'. В противном случае программа обрабатывает все столбцы TBL, в том числе Y, в качестве предикторов при обучении модели.
Переменная ответа должна быть категориальным, символьным или строковым массивом, логическим или числовым вектором или массивом ячеек символьных векторов. Если ответная переменная является символьным массивом, то каждый элемент должен соответствовать одной строке массива.
Типы данных: char | string
X - Данные предиктораДанные предиктора, заданные как числовая матрица.
Каждая строка X соответствует одному наблюдению (также известному как экземпляр или пример), и каждый столбец соответствует одной переменной (также известной как элемент). Переменные в столбцах X должны быть такими же, как переменные, которые обучали SVMModel классификатор.
Длина Y и количество строк в X должно быть равным.
Если установить 'Standardize',true в fitcsvm обучаться SVMModel, то программное обеспечение стандартизирует столбцы X используя соответствующие средства в SVMModel.Mu и стандартные отклонения в SVMModel.Sigma.
Типы данных: double | single
Y - Этикетки классовМетки класса, указанные как категориальный, символьный или строковый массив, логический или числовой вектор или массив ячеек символьных векторов. Y должен совпадать с типом данных SVMModel.ClassNames. (Программа рассматривает строковые массивы как массивы ячеек символьных векторов.)
Длина Y должно равняться количеству строк в TBL или количество строк в X.
Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.
loss(SVMModel,TBL,Y,'Weights',W) взвешивает наблюдения в каждой строке TBL используя соответствующий вес в каждой строке переменной W в TBL.'LossFun' - Функция потерь'classiferror' (по умолчанию) | 'binodeviance' | 'exponential' | 'hinge' | 'logit' | 'mincost' | 'quadratic' | дескриптор функцииФункция потерь, заданная как разделенная запятыми пара, состоящая из 'LossFun' и встроенное имя функции потери или дескриптор функции.
В этой таблице перечислены доступные функции потерь. Укажите его с помощью соответствующего вектора символа или скаляра строки.
| Стоимость | Описание |
|---|---|
'binodeviance' | Биномиальное отклонение |
'classiferror' | Неверно классифицированная скорость в десятичной |
'exponential' | Экспоненциальные потери |
'hinge' | Потеря шарнира |
'logit' | Логистические потери |
'mincost' | Минимальная ожидаемая стоимость неправильной классификации (для классификационных оценок, которые являются задними вероятностями) |
'quadratic' | Квадратичные потери |
'mincost' подходит для классификационных оценок, которые являются задними вероятностями. Можно указать использование апостериорных вероятностей в качестве показателей классификации для моделей SVM путем установки 'FitPosterior',true при перекрестной проверке модели с помощью fitcsvm.
Укажите собственную функцию с помощью нотации дескриптора функции.
Предположим, что n - количество наблюдений в X, и K - количество различных классов (numel(SVMModel.ClassNames)) используется для создания входной модели (SVMModel). Ваша функция должна иметь эту подпись
lossvalue = lossfun(C,S,W,Cost)Выходной аргумент lossvalue является скаляром.
Выберите имя функции (lossfun).
C является nоколо-K логическая матрица со строками, указывающими класс, которому принадлежит соответствующее наблюдение. Порядок столбцов соответствует порядку классов в SVMModel.ClassNames.
Конструкция C путем установки C(p,q) = 1 если наблюдение p находится в классе q, для каждой строки. Установка всех остальных элементов строки p кому 0.
S является nоколо-K числовая матрица классификационных баллов, аналогичная выводу predict. Порядок столбцов соответствует порядку классов в SVMModel.ClassNames.
W является n-по-1 числовой вектор весов наблюдения. Если вы проходите W, программное обеспечение нормализует веса для суммирования 1.
Cost является Kоколо-K числовая матрица затрат на неправильную классификацию. Например, Cost = ones(K) – eye(K) указывает стоимость 0 для правильной классификации и 1 для неправильной классификации.
Укажите свою функцию с помощью 'LossFun',@.lossfun
Дополнительные сведения о функциях потерь см. в разделе Классификационные потери.
Пример: 'LossFun','binodeviance'
Типы данных: char | string | function_handle
'Weights' - Наблюдательные весаones(size(X,1),1) (по умолчанию) | числовой вектор | имя переменной в TBLВеса наблюдения, указанные как разделенная запятыми пара, состоящая из 'Weights' и числовой вектор или имя переменной в TBL. Программное обеспечение взвешивает наблюдения в каждой строке X или TBL с соответствующим весом в Weights.
При указании Weights как числовой вектор, то размер Weights должно быть равно количеству строк в X или TBL.
При указании Weights как имя переменной в TBL, необходимо сделать это как вектор символа или скаляр строки. Например, если веса сохранены как TBL.W, затем укажите Weights как 'W'. В противном случае программа обрабатывает все столбцы TBL, в том числе TBL.W, как предикторы.
Если не указать собственную функцию потерь, программное обеспечение нормализуется Weights для суммирования значения предшествующей вероятности в соответствующем классе.
Пример: 'Weights','W'
Типы данных: single | double | char | string
Функции потери классификации измеряют прогностическую неточность классификационных моделей. При сравнении одного и того же типа потерь между многими моделями меньшие потери указывают на лучшую прогностическую модель.
Рассмотрим следующий сценарий.
L - средневзвешенная потеря классификации.
n - размер выборки.
Для двоичной классификации:
yj - наблюдаемая метка класса. Программное обеспечение кодирует его как -1 или 1, указывая отрицательный или положительный класс (или первый или второй класс в ClassNames свойство), соответственно.
f (Xj) - показатель классификации положительного класса для наблюдения (строки) j данных прогнозирования X.
mj = yjf (Xj) - показатель классификации для классификации наблюдения j в класс, соответствующий yj. Положительные значения mj указывают на правильную классификацию и не вносят большого вклада в средние потери. Отрицательные значения mj указывают на неправильную классификацию и вносят значительный вклад в средний убыток.
Для алгоритмов, поддерживающих мультиклассовую классификацию (то есть K ≥ 3):
yj * - вектор из K - 1 нулей, с 1 в положении, соответствующем истинному наблюдаемому классу yj. Например, если истинным классом второго наблюдения является третий класс и K = 4, то y2 * = [0 0 1 0] ′. Порядок классов соответствует порядку в ClassNames свойства входной модели.
f (Xj) - вектор длины K оценок класса для наблюдения j данных предсказателя X. Порядок оценок соответствует порядку классов в ClassNames свойства входной модели.
mj = yj * ′ f (Xj). Поэтому mj - это скалярная оценка классификации, которую модель прогнозирует для истинного наблюдаемого класса.
Вес для наблюдения j равен wj. Программное обеспечение нормализует весовые коэффициенты наблюдения таким образом, что они суммируются с соответствующей вероятностью предыдущего класса. Программное обеспечение также нормализует предыдущие вероятности, так что они составляют 1. Поэтому
С учетом этого сценария в следующей таблице описаны поддерживаемые функции потерь, которые можно указать с помощью 'LossFun' аргумент пары имя-значение.
| Функция потерь | Значение LossFun | Уравнение |
|---|---|---|
| Биномиальное отклонение | 'binodeviance' | |
| Неверно классифицированная скорость в десятичной | 'classiferror' | j - метка класса, соответствующая классу с максимальным баллом. I {·} - функция индикатора. |
| Потери перекрестной энтропии | 'crossentropy' |
Взвешенная потеря перекрестной энтропии равна Kn, где веса нормализуются для суммирования в n вместо 1. |
| Экспоненциальные потери | 'exponential' | ). |
| Потеря шарнира | 'hinge' | |
| Потеря журнала | 'logit' | mj)). |
| Минимальная ожидаемая стоимость классификации ошибок | 'mincost' |
Программное обеспечение вычисляет взвешенную минимальную ожидаемую стоимость классификации, используя эту процедуру для наблюдений j = 1,..., n.
Средневзвешенное минимальное ожидаемое снижение затрат на неправильную классификацию Если используется матрица затрат по умолчанию (значение элемента которой равно 0 для правильной классификации и 1 для неправильной классификации), то |
| Квадратичные потери | 'quadratic' | ) 2. |
На этом рисунке сравниваются функции потерь (за исключением 'crossentropy' и 'mincost') над баллом м для одного наблюдения. Некоторые функции нормализуются для прохождения через точку (0,1).

Показатель классификации SVM для классификации наблюдения x представляет собой расстояние со знаком от x до границы принятия решения в диапазоне от - ∞ до +∞. Положительный балл для класса указывает, что x прогнозируется в этом классе. Отрицательный балл указывает на обратное.
Положительным показателем классификации классов ) является обученная функция классификации SVM. x) также является численным прогнозируемым ответом для x или баллом для прогнозирования x в положительный класс.
) + b,
где b) - оцененные параметры SVM, , x) - скалярное произведение в предикторном пространстве между x и векторами поддержки, и сумма включает в себя наблюдения обучающего набора. Отрицательный балл классификации класса для x или балл для прогнозирования x в отрицательный класс равен -f (x).
Если G (xj, x) = xj′x (линейное ядро), то функция оценки уменьшается до
β + b.
s - шкала ядра, а β - вектор аппроксимированных линейных коэффициентов.
Дополнительные сведения см. в разделе Общие сведения о векторных машинах поддержки.
[1] Хасти, Т., Р. Тибширани и Дж. Фридман. элементы статистического обучения, второе издание. Спрингер, Нью-Йорк, 2008.
Эта функция полностью поддерживает массивы tall. Дополнительные сведения см. в разделе Массивы Tall.
Эта функция полностью поддерживает массивы графических процессоров. Дополнительные сведения см. в разделе Запуск функций MATLAB на графическом процессоре (панель инструментов параллельных вычислений).
ClassificationSVM | CompactClassificationSVM | fitcsvm | predict
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.