Компактная машина вектора поддержки (SVM) для и бинарной классификации одного класса
CompactClassificationSVM
является компактной версией классификатора машины вектора поддержки (SVM). Компактный классификатор не включает данные, используемые для обучения классификатор SVM. Поэтому вы не можете выполнить некоторые задачи, такие как перекрестная проверка, с помощью компактного классификатора. Используйте компактный классификатор SVM для задач, таких как предсказание меток новых данных.
Создайте модель CompactClassificationSVM
из полного, обученного классификатора ClassificationSVM
при помощи compact
.
\alpha
Обученные коэффициенты классификатораЭто свойство доступно только для чтения.
Обученные коэффициенты классификатора, заданные как s-by-1 числовой вектор. s является количеством векторов поддержки в обученном классификаторе, sum(Mdl.IsSupportVector)
.
Alpha
содержит обученные коэффициенты классификатора от двойной проблемы, то есть, предполагаемых множителей Лагранжа. Если вы удаляете копии при помощи аргумента пары "имя-значение" RemoveDuplicates
fitcsvm
, то для данного набора дублирующихся наблюдений, которые являются векторами поддержки, Alpha
содержит один коэффициент, соответствующий целому набору. That is, MATLAB® приписывает ненулевой коэффициент одному наблюдению от набора копий и коэффициент 0
ко всем другим дублирующимся наблюдениям в наборе.
Типы данных: single | double
\beta
Линейные коэффициенты предиктораЭто свойство доступно только для чтения.
Линейные коэффициенты предиктора, заданные как числовой вектор. Длина Beta
равна количеству предикторов, используемых, чтобы обучить модель.
MATLAB расширяет категориальные переменные в данных о предикторе с помощью полного фиктивного кодирования. Таким образом, MATLAB создает одну фиктивную переменную для каждого уровня каждой категориальной переменной. Beta
хранит одно значение для каждой переменной прогноза, включая фиктивные переменные. Например, если существует три предиктора, один из которых является категориальной переменной с тремя уровнями, затем Beta
является числовым вектором, содержащим пять значений.
Если KernelParameters.Function
является 'linear'
, то счет классификации к наблюдению x
Mdl
хранит β, b и s в свойствах Beta
, Bias
и KernelParameters.Scale
, соответственно.
Чтобы оценить очки классификации вручную, необходимо сначала применить любые преобразования к данным о предикторе, которые были применены во время обучения. А именно, если вы задаете 'Standardize',true
при использовании fitcsvm
, затем необходимо стандартизировать данные о предикторе вручную при помощи среднего Mdl.Mu
и стандартного отклонения Mdl.Sigma
, и затем разделить результат на шкалу ядра в Mdl.KernelParameters.Scale
.
Все функции SVM, такие как resubPredict
и predict
, применяют любое необходимое преобразование перед оценкой.
Если KernelParameters.Function
не является 'linear'
, то Beta
пуст ([]
).
Типы данных: single | double
Bias
— Сместите терминЭто свойство доступно только для чтения.
Сместите термин, заданный как скаляр.
Типы данных: single | double
KernelParameters
— Параметры ядраЭто свойство доступно только для чтения.
Параметры ядра, заданные как массив структур. Свойство параметров ядра содержит поля, перечисленные в этой таблице.
Поле | Описание |
---|---|
Функция | Функция ядра раньше вычисляла элементы матрицы Грамма. Для получения дополнительной информации смотрите |
Шкала | Масштабный коэффициент ядра раньше масштабировал все элементы данных о предикторе, на которых обучена модель. Для получения дополнительной информации смотрите |
Чтобы отобразить значения KernelParameters
, используйте запись через точку. Например, Mdl.KernelParameters.Scale
отображает значение масштабного коэффициента ядра.
Программное обеспечение принимает KernelParameters
как входные параметры и не изменяет их.
Типы данных: struct
SupportVectorLabels
— Поддержите векторные метки классаЭто свойство доступно только для чтения.
Поддержите векторные метки класса, заданные как s-by-1 числовой вектор. s является количеством векторов поддержки в обученном классификаторе, sum(Mdl.IsSupportVector)
.
Значение +1
в SupportVectorLabels
указывает, что соответствующий вектор поддержки находится в положительном классе (ClassNames{2}
). Значение –1
указывает, что соответствующий вектор поддержки находится в отрицательном классе (ClassNames{1}
).
Если вы удаляете копии при помощи аргумента пары "имя-значение" RemoveDuplicates
fitcsvm
, то для данного набора дублирующихся наблюдений, которые являются векторами поддержки, SupportVectorLabels
содержит одну уникальную метку вектора поддержки.
Типы данных: single | double
SupportVectors
— Поддержите векторыЭто свойство доступно только для чтения.
Поддержите векторы в обученном классификаторе, заданном как s-by-p числовая матрица. s является количеством векторов поддержки в обученном классификаторе, sum(Mdl.IsSupportVector)
, и p является количеством переменных прогноза в данных о предикторе.
SupportVectors
содержит строки данных о предикторе X
, что MATLAB считает векторами поддержки. Если вы задаете 'Standardize',true
, когда обучение классификатор SVM с помощью fitcsvm
, то SupportVectors
содержит стандартизированные строки X
.
Если вы удаляете копии при помощи аргумента пары "имя-значение" RemoveDuplicates
fitcsvm
, то для данного набора дублирующихся наблюдений, которые являются векторами поддержки, SupportVectors
содержит один уникальный вектор поддержки.
Типы данных: single | double
CategoricalPredictors
— Категориальные индексы предиктора[]
Это свойство доступно только для чтения.
Категориальные индексы предиктора, заданные как вектор положительных целых чисел. CategoricalPredictors
содержит индексные значения, соответствующие столбцам данных о предикторе, которые содержат категориальные предикторы. Если ни один из предикторов не является категориальным, то это свойство пусто ([]
).
Типы данных: single | double
ClassNames
— Уникальные метки классаЭто свойство доступно только для чтения.
Уникальные метки класса использовали в обучении модель, заданную как категориальное или символьный массив, логический или числовой вектор или массив ячеек из символьных векторов.
Типы данных: single
| double
| logical
| char
| cell
| categorical
Cost
— Misclassification стоитсяЭто свойство доступно только для чтения.
Misclassification стоят, заданный как числовая квадратная матрица, где Cost(i,j)
является стоимостью классификации точки в класс j
, если его истинным классом является i
.
Во время обучения обновлений программного обеспечения априорные вероятности путем слияния штрафов описаны в матрице стоимости.
Для изучения 2D класса Cost
всегда имеет эту форму: Cost(i,j) = 1
, если i ~= j
и Cost(i,j) = 0
, если i = j
. Строки соответствуют истинному классу, и столбцы соответствуют предсказанному классу. Порядок строк и столбцов Cost
соответствует порядку классов в ClassNames
.
Для изучения одного класса, Cost = 0
.
Для получения дополнительной информации см. Алгоритмы.
Типы данных: double
ExpandedPredictorNames
— Расширенные имена предиктораЭто свойство доступно только для чтения.
Расширенные имена предиктора, заданные как массив ячеек из символьных векторов.
Если модель использует фиктивное переменное кодирование для категориальных переменных, то ExpandedPredictorNames
включает имена, которые описывают расширенные переменные. В противном случае ExpandedPredictorNames
совпадает с PredictorNames
.
Типы данных: cell
\mu
Средние значения предиктора[]
Это свойство доступно только для чтения.
Средние значения предиктора, заданные как числовой вектор. Если вы задаете 'Standardize',1
или 'Standardize',true
, когда вы обучаете классификатор SVM с помощью fitcsvm
, то длина Mu
равна количеству предикторов.
MATLAB расширяет категориальные переменные в данных о предикторе с помощью полного фиктивного кодирования. Таким образом, MATLAB создает одну фиктивную переменную для каждого уровня каждой категориальной переменной. Mu
хранит одно значение для каждой переменной прогноза, включая фиктивные переменные. Однако MATLAB не стандартизирует столбцы, которые содержат категориальные переменные.
Если вы устанавливаете 'Standardize',false
, когда вы обучаете классификатор SVM с помощью fitcsvm
, то Mu
является пустым вектором ([]
).
Типы данных: single | double
PredictorNames
— Имена переменной прогнозаЭто свойство доступно только для чтения.
Имена переменной прогноза, заданные как массив ячеек из символьных векторов. Порядок элементов PredictorNames
соответствует порядку, в котором имена предиктора появляются в данных тренировки.
Типы данных: cell
Prior
— Априорные вероятностиЭто свойство доступно только для чтения.
Априорные вероятности для каждого класса, заданного как числовой вектор. Порядок элементов Prior
соответствует элементам Mdl.ClassNames
.
Для изучения 2D класса, если вы задаете матрицу стоимости, затем обновления программного обеспечения априорные вероятности путем слияния штрафов, описанных в матрице стоимости.
Для получения дополнительной информации см. Алгоритмы.
Типы данных: single | double
ScoreTransform
— Выиграйте преобразованиеВыиграйте преобразование, заданное как вектор символов или указатель на функцию. ScoreTransform
представляет встроенную функцию преобразования или указатель на функцию для преобразования предсказанных очков классификации.
Изменить функцию преобразования счета на function
, например, запись через точку использования.
Для встроенной функции введите вектор символов.
Mdl.ScoreTransform = 'function';
Эта таблица описывает доступные встроенные функции.
Значение | Описание |
---|---|
'doublelogit' | 1/(1 + e –2x) |
'invlogit' | журнал (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
\sigma
Стандартные отклонения предиктора[]
(значение по умолчанию) | числовой векторЭто свойство доступно только для чтения.
Стандартные отклонения предиктора, заданные как числовой вектор.
Если вы задаете 'Standardize',true
, когда вы обучаете классификатор SVM с помощью fitcsvm
, то длина Sigma
равна количеству переменных прогноза.
MATLAB расширяет категориальные переменные в данных о предикторе с помощью полного фиктивного кодирования. Таким образом, MATLAB создает одну фиктивную переменную для каждого уровня каждой категориальной переменной. Sigma
хранит одно значение для каждой переменной прогноза, включая фиктивные переменные. Однако MATLAB не стандартизирует столбцы, которые содержат категориальные переменные.
Если вы устанавливаете 'Standardize',false
, когда вы обучаете классификатор SVM с помощью fitcsvm
, то Sigma
является пустым вектором ([]
).
Типы данных: single | double
compareHoldout | Сравните точность двух моделей классификации с помощью новых данных |
discardSupportVectors | Отбросьте векторы поддержки для линейного классификатора машины вектора поддержки (SVM) |
edge | Найдите ребро классификации для классификатора машины вектора поддержки (SVM) |
fitPosterior | Подходящие апостериорные вероятности для компактного классификатора машины вектора поддержки (SVM) |
loss | Найдите ошибку классификации для классификатора машины вектора поддержки (SVM) |
margin | Найдите поля классификации для классификатора машины вектора поддержки (SVM) |
predict | Классифицируйте наблюдения с помощью классификатора машины вектора поддержки (SVM) |
update | Обновите параметры модели для генерации кода |
Уменьшайте размер полного классификатора SVM путем удаления данных тренировки. Полные классификаторы SVM (то есть, классификаторы ClassificationSVM
) содержат данные тренировки. Чтобы повысить эффективность, используйте меньший классификатор.
Загрузите набор данных ionosphere
.
load ionosphere
Обучите классификатор SVM. Стандартизируйте данные о предикторе и задайте порядок классов.
SVMModel = fitcsvm(X,Y,'Standardize',true,... 'ClassNames',{'b','g'})
SVMModel = ClassificationSVM ResponseName: 'Y' CategoricalPredictors: [] ClassNames: {'b' 'g'} ScoreTransform: 'none' NumObservations: 351 Alpha: [90x1 double] Bias: -0.1343 KernelParameters: [1x1 struct] Mu: [1x34 double] Sigma: [1x34 double] BoxConstraints: [351x1 double] ConvergenceInfo: [1x1 struct] IsSupportVector: [351x1 logical] Solver: 'SMO' Properties, Methods
SVMModel
является классификатором ClassificationSVM
.
Уменьшайте размер классификатора SVM.
CompactSVMModel = compact(SVMModel)
CompactSVMModel = classreg.learning.classif.CompactClassificationSVM ResponseName: 'Y' CategoricalPredictors: [] ClassNames: {'b' 'g'} ScoreTransform: 'none' Alpha: [90x1 double] Bias: -0.1343 KernelParameters: [1x1 struct] Mu: [1x34 double] Sigma: [1x34 double] SupportVectors: [90x34 double] SupportVectorLabels: [90x1 double] Properties, Methods
CompactSVMModel
является классификатором CompactClassificationSVM
.
Отобразите объем памяти каждый классификатор использование.
whos('SVMModel','CompactSVMModel')
Name Size Bytes Class Attributes CompactSVMModel 1x1 30864 classreg.learning.classif.CompactClassificationSVM SVMModel 1x1 141194 ClassificationSVM
Полный классификатор SVM (SVMModel
) больше чем в четыре раза больше, чем компактный классификатор SVM (CompactSVMModel
).
Чтобы маркировать новые наблюдения эффективно, можно удалить SVMModel
из MATLAB® Workspace, и затем передать CompactSVMModel
и новые значения предиктора к predict
.
Чтобы далее уменьшать размер вашего компактного классификатора SVM, используйте функцию discardSupportVectors
, чтобы отбросить векторы поддержки.
Загрузите набор данных ionosphere
.
load ionosphere
Обучите и перекрестный подтвердите классификатор SVM. Стандартизируйте данные о предикторе и задайте порядок классов.
rng(1); % For reproducibility CVSVMModel = fitcsvm(X,Y,'Standardize',true,... 'ClassNames',{'b','g'},'CrossVal','on')
CVSVMModel = classreg.learning.partition.ClassificationPartitionedModel CrossValidatedModel: 'SVM' PredictorNames: {1x34 cell} ResponseName: 'Y' NumObservations: 351 KFold: 10 Partition: [1x1 cvpartition] ClassNames: {'b' 'g'} ScoreTransform: 'none' Properties, Methods
CVSVMModel
является ClassificationPartitionedModel
перекрестный подтвержденный классификатор SVM. По умолчанию программное обеспечение реализует 10-кратную перекрестную проверку.
Также можно перекрестный подтвердить обученный классификатор ClassificationSVM
путем передачи его crossval
.
Осмотрите один из обученных сгибов с помощью записи через точку.
CVSVMModel.Trained{1}
ans = classreg.learning.classif.CompactClassificationSVM ResponseName: 'Y' CategoricalPredictors: [] ClassNames: {'b' 'g'} ScoreTransform: 'none' Alpha: [78x1 double] Bias: -0.2209 KernelParameters: [1x1 struct] Mu: [1x34 double] Sigma: [1x34 double] SupportVectors: [78x34 double] SupportVectorLabels: [78x1 double] Properties, Methods
Каждый сгиб является классификатором CompactClassificationSVM
, обученным на 90% данных.
Оцените ошибку обобщения.
genError = kfoldLoss(CVSVMModel)
genError = 0.1168
В среднем ошибка обобщения составляет приблизительно 12%.
[1] Hastie, T., Р. Тибширэни и Дж. Фридман. Элементы статистического изучения, второго выпуска. Нью-Йорк: Спрингер, 2008.
[2] Scholkopf, B., Дж. К. Платт, Дж. К. Шейв-Тейлор, А. Дж. Смола и Р. К. Уильямсон. “Оценивая Поддержку Высоко-размерного Распределения”. Нейронное Вычисление. Издание 13, Номер 7, 2001, стр 1443–1471.
[3] Christianini, N. и Дж. К. Шейв-Тейлор. Введение, чтобы поддержать векторные машины и другое основанное на ядре изучение методов. Кембридж, Великобритания: Издательство Кембриджского университета, 2000.
[4] Scholkopf, B. и A. Смола. Изучение с ядрами: поддержите векторные машины, регуляризацию, оптимизацию и вне, адаптивное вычисление и машинное обучение. Кембридж, MA: нажатие MIT, 2002.
Указания и ограничения по применению:
Когда вы обучаете модель SVM при помощи fitcsvm
, следующие ограничения применяются.
Значение входного параметра меток класса (Y
) не может быть категориальным массивом.
Генерация кода не поддерживает категориальные предикторы. Вы не можете снабдить данными тренировки в таблице, которая содержит логический вектор, символьный массив, категориальный массив, массив строк или массив ячеек из символьных векторов. Кроме того, вы не можете использовать аргумент пары "имя-значение" 'CategoricalPredictors'
.
Чтобы включать категориальные предикторы в модель, предварительно обработайте категориальные предикторы при помощи dummyvar
прежде, чем соответствовать модели.
Значение аргумента пары "имя-значение" 'ClassNames'
не может быть категориальным массивом.
Значение аргумента пары "имя-значение" 'ScoreTransform'
не может быть анонимной функцией. Для генерации кода, который предсказывает апостериорные вероятности, данные новые наблюдения, передайте обученную модель SVM fitPosterior
или fitSVMPosterior
. Свойство ScoreTransform
возвращенной модели содержит анонимную функцию, которая представляет счет функции апостериорной вероятности и сконфигурирована для генерации кода.
Для получения дополнительной информации смотрите Введение в Генерацию кода.
ClassificationSVM
| compact
| discardSupportVectors
| fitcsvm
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.