Найдите потерю классификации для классификатора машины вектора поддержки (SVM) перезаменой
L = resubLoss(SVMModel)L = resubLoss(SVMModel,'LossFun',lossFun) возвращает ущерб классификации от перезамены (L), потерю классификации в выборке, для классификатора машины вектора поддержки (SVM) L = resubLoss(SVMModel)SVMModel с помощью данных тренировки, хранимых в SVMModel.X и соответствующих метках класса, сохраненных в SVMModel.Y.
Потеря классификации (L) является обобщением или качественной мерой по перезамене. Его интерпретация зависит от функции потерь и схемы взвешивания, но в целом лучшие классификаторы приводят к меньшим значениям классификации потерь.
Загрузите набор данных ionosphere.
load ionosphereОбучите классификатор SVM. Стандартизируйте данные и укажите, что 'g' является положительным классом.
SVMModel = fitcsvm(X,Y,'ClassNames',{'b','g'},'Standardize',true);
SVMModel является обученным классификатором ClassificationSVM.
Оцените потерю перезамены (то есть, ошибка классификации в выборке).
L = resubLoss(SVMModel)
L = 0.0570
Классификатор SVM неправильно классифицирует 5,7% учебного демонстрационного радара, возвращается.
Загрузите набор данных ionosphere.
load ionosphereОбучите классификатор SVM. Стандартизируйте данные и укажите, что 'g' является положительным классом.
SVMModel = fitcsvm(X,Y,'ClassNames',{'b','g'},'Standardize',true);
SVMModel является обученным классификатором ClassificationSVM.
Оцените потерю стержня в выборке.
L = resubLoss(SVMModel,'LossFun','hinge')
L = 0.1603
Потерей стержня является 0.1603. Классификаторы с потерями стержня близко к 0 предпочтены.
SVMModel — Полный, обученный классификатор SVMClassificationSVMПолный, обученный классификатор SVM, заданный как модель ClassificationSVM, обученная с fitcsvm.
lossFun — Функция потерь'classiferror' (значение по умолчанию) | 'binodeviance' | 'exponential' | 'hinge' | 'logit' | 'mincost' | 'quadratic' | указатель на функциюФункция потерь, заданная как встроенное имя функции потерь или указатель на функцию.
Эта таблица приводит доступные функции потерь. Задайте тот с помощью его соответствующего вектора символов или представьте скаляр в виде строки.
| Значение | Описание |
|---|---|
'binodeviance' | Биномиальное отклонение |
'classiferror' | Ошибка классификации |
'exponential' | Экспоненциал |
'hinge' | Стержень |
'logit' | Логистический |
'mincost' | Минимальный ожидал стоимость misclassification (для очков классификации, которые являются апостериорными вероятностями), |
'quadratic' | Квадратичный |
'mincost' подходит для очков классификации, которые являются апостериорными вероятностями. Можно задать, чтобы использовать апостериорные вероятности в качестве музыки классификации к моделям SVM установкой 'FitPosterior',true, когда вы перекрестный подтверждаете модель с помощью fitcsvm.
Задайте свою собственную функцию при помощи обозначения указателя на функцию.
Предположим, что n является количеством наблюдений в X, и K является количеством отличных классов (numel(SVMModel.ClassNames)), используемый, чтобы создать входную модель (SVMModel). Ваша функция должна иметь эту подпись
lossvalue = lossfun(C,S,W,Cost)Выходным аргументом lossvalue является скаляр.
Вы выбираете имя функции (lossfun).
C является n-by-K логическая матрица со строками, указывающими на класс, которому принадлежит соответствующее наблюдение. Порядок следования столбцов соответствует порядку класса в SVMModel.ClassNames.
Создайте C установкой C(p,q) = 1, если наблюдение p находится в классе q для каждой строки. Установите все другие элементы строки p к 0.
S является n-by-K числовая матрица очков классификации, подобных выводу predict. Порядок следования столбцов соответствует порядку класса в SVMModel.ClassNames.
W является n-by-1 числовой вектор весов наблюдения. Если вы передаете W, программное обеспечение нормирует веса, чтобы суммировать к 1.
Cost является K-by-K числовая матрица затрат misclassification. Например, Cost = ones(K) – eye(K) задает стоимость 0 для правильной классификации и 1 для misclassification.
Задайте свою функцию с помощью .'LossFun',@lossfun
Для получения дополнительной информации на функциях потерь, смотрите Потерю Классификации.
Пример: 'LossFun','binodeviance'
Типы данных: char | string | function_handle
Функции Classification loss измеряют прогнозирующую погрешность моделей классификации. Когда вы сравниваете тот же тип потери среди многих моделей, более низкая потеря указывает на лучшую прогнозирующую модель.
Рассмотрите следующий сценарий.
L является средневзвешенной потерей классификации.
n является объемом выборки.
Для бинарной классификации:
yj является наблюдаемой меткой класса. Программные коды это как –1 или 1, указывая на отрицательный или положительный класс, соответственно.
f (Xj) является необработанным счетом классификации к наблюдению (строка) j данных о предикторе X.
mj = yj f (Xj) является счетом классификации к классификации наблюдения j в класс, соответствующий yj. Положительные значения mj указывают на правильную классификацию и не способствуют очень средней потере. Отрицательные величины mj указывают на неправильную классификацию и значительно способствуют средней потере.
Для алгоритмов, которые поддерживают классификацию мультиклассов (то есть, K ≥ 3):
yj* является вектором K – 1 нуль, с 1 в положении, соответствующем истинному, наблюдаемому классу yj. Например, если истинный класс второго наблюдения является третьим классом и K = 4, то y *2 = [0 0 1 0] ′. Порядок классов соответствует порядку в свойстве ClassNames входной модели.
f (Xj) является длиной вектор K музыки класса к наблюдению j данных о предикторе X. Порядок очков соответствует порядку классов в свойстве ClassNames входной модели.
mj = yj* ′ f (Xj). Поэтому mj является скалярным счетом классификации, который модель предсказывает для истинного, наблюдаемого класса.
Весом для наблюдения j является wj. Программное обеспечение нормирует веса наблюдения так, чтобы они суммировали к соответствующей предшествующей вероятности класса. Программное обеспечение также нормирует априорные вероятности, таким образом, они суммируют к 1. Поэтому
Учитывая этот сценарий, следующая таблица описывает поддерживаемые функции потерь, которые можно задать при помощи аргумента пары "имя-значение" 'LossFun'.
| Функция потерь | Значение LossFun | Уравнение |
|---|---|---|
| Биномиальное отклонение | 'binodeviance' | |
| Экспоненциальная потеря | 'exponential' | |
| Ошибка классификации | 'classiferror' | Это - взвешенная часть неправильно классифицированных наблюдений где метка класса, соответствующая классу с максимальной апостериорной вероятностью. I {x} является функцией индикатора. |
| Потеря стержня | 'hinge' | |
| Потеря логита | 'logit' | |
| Минимальная стоимость | 'mincost' | Минимальная стоимость. Программное обеспечение вычисляет взвешенную минимальную стоимость с помощью этой процедуры для наблюдений j = 1..., n.
Взвешенная, средняя, минимальная потеря стоимости |
| Квадратичная потеря | 'quadratic' |
Эта фигура сравнивает функции потерь (кроме 'mincost') для одного наблюдения по m. Некоторые функции нормированы, чтобы пройти [0,1].

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