Найдите ошибку классификации для классификатора машины опорных векторов (SVM)
возвращает классификационную ошибку (см. Классификационные потери), скаляр, представляющий как хорошо обученный классификатор машины опорных векторов (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
объект модели
объект модели, возвращенный 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
-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
числовая матрица затрат на неправильную классификацию. Для примера, 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
Classification loss функции измеряют прогнозирующую неточность классификационных моделей. Когда вы сравниваете один и тот же тип потерь среди многих моделей, более низкая потеря указывает на лучшую прогнозирующую модель.
Рассмотрим следующий сценарий.
L - средневзвешенные классификационные потери.
n - размер выборки.
Для двоичной классификации:
yj - наблюдаемая метка класса. Программное обеспечение кодирует его как -1 или 1, указывая на отрицательный или положительный класс (или первый или второй класс в ClassNames
свойство), соответственно.
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 (<reservedrangesplaceholder1>). Поэтому mj является скалярной классификационной оценкой, которую модель предсказывает для истинного наблюдаемого класса.
Вес для j наблюдения wj. Программа нормализует веса наблюдений так, чтобы они суммировались с соответствующей вероятностью предыдущего класса. Программное обеспечение также нормализует предыдущие вероятности, поэтому они равны 1. Поэтому,
С учетом этого сценария в следующей таблице описываются поддерживаемые функции потерь, которые можно задать при помощи 'LossFun'
аргумент пары "имя-значение".
Функция потерь | Значение LossFun | Уравнение |
---|---|---|
Биномиальное отклонение | 'binodeviance' | |
Неверно классифицированный коэффициент в десятичных числах | 'classiferror' | - метка класса, соответствующая классу с максимальным счетом. I {·} является функцией индикации. |
Потери перекрестной энтропии | 'crossentropy' |
Взвешенные потери перекрестной энтропии где веса нормированы в сумме к n вместо 1. |
Экспоненциальные потери | 'exponential' | |
Потеря шарнира | 'hinge' | |
Логит потеря | 'logit' | |
Минимальные ожидаемые затраты на неправильную классификацию | 'mincost' |
Программа вычисляет взвешенные минимальные ожидаемые затраты классификации, используя эту процедуру для наблюдений j = 1,..., n.
Взвешенное среднее значение минимальных ожидаемых потерь от неправильной классификации Если вы используете матрицу затрат по умолчанию (значение элемента которой 0 для правильной классификации и 1 для неправильной классификации), то |
Квадратичные потери | 'quadratic' |
Этот рисунок сравнивает функции потерь (кроме 'crossentropy'
и 'mincost'
) по счету m для одного наблюдения. Некоторые функции нормированы, чтобы пройти через точку (0,1).
SVM- classification score для классификации x наблюдений является подписанным расстоянием от x до контура принятия решения в диапазоне от - ∞ до +∞. Положительный счет для класса указывает, что x, по прогнозам, находится в этом классе. Отрицательный счет указывает на обратное.
Положительный класс классификационной оценки - это обученная функция классификации SVM. является также численным предсказанным ответом для x или счетом для предсказания x в положительный класс.
где являются оцененными параметрами SVM, является скалярным произведением в пространстве предикторов между x и поддерживающими векторами, и сумма включает наблюдения обучающего набора. Отрицательная классификационная оценка для x или балл для предсказания x в отрицательный класс равен - f (x).
Если G (xj, x) = xj − x (линейное ядро), то функция оценки уменьшается до
s - шкала ядра, а β - вектор подгоняемых линейных коэффициентов.
Для получения дополнительной информации смотрите Общие сведения о машинах опорных векторов.
[1] Хасти, Т., Р. Тибширани и Дж. Фридман. Элементы статистического обучения, второе издание. Спрингер, Нью-Йорк, 2008.
Эта функция полностью поддерживает длинные массивы. Для получения дополнительной информации см. Раздел «Длинные массивы»
Эта функция полностью поддерживает массивы GPU. Для получения дополнительной информации смотрите Запуск функций MATLAB на графическом процессоре (Parallel Computing Toolbox).
ClassificationSVM
| CompactClassificationSVM
| fitcsvm
| predict
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.