Компактная машина опорных векторов (SVM) для одноклассовой и двоичной классификации
CompactClassificationSVM
является компактной версией классификатора машины опорных векторов (SVM). Компактный классификатор не включает данные, используемые для настройки классификатора SVM. Поэтому вы не можете выполнить некоторые задачи, такие как перекрестная валидация, используя компактный классификатор. Используйте компактный классификатор SVM для задач, таких как предсказание меток новых данных.
Создайте CompactClassificationSVM
модель из полного, обученного ClassificationSVM
классификатор при помощи compact
.
Alpha
- Обученные коэффициенты классификатораЭто свойство доступно только для чтения.
Обученные коэффициенты классификатора, заданные как s-на-1 числовой вектор. s - количество поддержки векторов в обученном классификаторе, sum(Mdl.IsSupportVector)
.
Alpha
содержит обученные классификационные коэффициенты из двойственной задачи, то есть предполагаемые множители Лагранжа. Если вы удаляете дубликаты при помощи RemoveDuplicates
Аргумент пары "имя-значение" из fitcsvm
, затем для заданного набора повторяющихся наблюдений, которые являются поддерживающими векторами, Alpha
содержит один коэффициент, соответствующий всему множеству. То есть 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
- Параметры ядраЭто свойство доступно только для чтения.
Параметры ядра, заданные как массив структур. Свойство параметров ядра содержит поля, перечисленные в этой таблице.
Область | Описание |
---|---|
Функция | Функция ядра, используемая для вычисления элементов матрицы Gram. Для получения дополнительной информации смотрите |
Шкала | Параметр шкалы ядра, используемый для масштабирования всех элементов данных предиктора, на которых обучена модель. Для получения дополнительной информации смотрите |
Отображение значений KernelParameters
, используйте запись через точку. Для примера, Mdl.KernelParameters.Scale
отображает шкалу значения параметров ядра.
Программное обеспечение принимает KernelParameters
как входы и не изменяет их.
Типы данных: struct
SupportVectorLabels
- Поддержка меток классов векторовЭто свойство доступно только для чтения.
Поддерживайте метки класса вектора, заданные как числовой вектор s -на 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
содержит значения индекса, соответствующие столбцам данных предиктора, которые содержат категориальные предикторы. Если ни один из предикторов не является категориальным, то это свойство пустое ([]
).
Типы данных: double
ClassNames
- Уникальные метки классовЭто свойство доступно только для чтения.
Уникальные метки классов, используемые в обучении, заданные как категориальный или символьный массив, логический или числовой вектор или массив ячеек векторов символов. ClassNames
имеет тот совпадающий тип данных, что и метки классов Y
. (Программа обрабатывает массивы строк как массивы ячеек векторов символов.)
ClassNames
также определяет порядок классов.
Типы данных: single
| double
| logical
| char
| cell
| categorical
Cost
- Расходы на неправильную классификациюЭто свойство доступно только для чтения.
Стоимость неправильной классификации, заданная как числовая квадратная матрица, где Cost(i,j)
- стоимость классификации точки в класс j
если его класс true i
.
Во время обучения программное обеспечение обновляет предыдущие вероятности путем включения штрафов, описанных в матрице затрат.
Для двухклассного обучения, 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
.
Для двухклассного обучения, если вы задаете матрицу затрат, то программное обеспечение обновляет предыдущие вероятности, включив штрафы, описанные в матрице затрат.
Для получения дополнительной информации см. «Алгоритмы».
Типы данных: 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' | 2 x – 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) |
incrementalLearner | Преобразуйте модель машины опорных векторов двоичной классификации (SVM) в инкрементальную обучающуюся |
lime | Локальные интерпретируемые модели-агностические объяснения (LIME) |
loss | Найдите ошибку классификации для классификатора машины опорных векторов (SVM) |
margin | Найдите классификационные поля для классификатора машины опорных векторов (SVM) |
partialDependence | Вычисление частичной зависимости |
plotPartialDependence | Создайте график частичной зависимости (PDP) и отдельные графики условного ожидания (ICE) |
predict | Классификация наблюдений с помощью машины опорных векторов (SVM) классификатора |
shapley | Значения Shapley |
update | Обновите параметры модели для генерации кода |
Уменьшите размер классификатора полной машины опорных векторов (SVM) путем удаления обучающих данных. Классификаторы Full 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 = 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 31058 classreg.learning.classif.CompactClassificationSVM SVMModel 1x1 141148 ClassificationSVM
Полный классификатор SVM (SVMModel
) более чем в четыре раза больше компактного классификатора SVM (CompactSVMModel
).
Чтобы эффективно пометить новые наблюдения, можно удалить SVMModel
из рабочей области MATLAB ®, а затем передайте CompactSVMModel
и новые значения предиктора, чтобы predict
.
Чтобы еще больше уменьшить размер компактного классификатора SVM, используйте discardSupportVectors
функция для сброса поддерживающих векторов.
Загрузите ionosphere
набор данных.
load ionosphere
Обучите и перекрестная проверка классификатора SVM. Стандартизируйте данные предиктора и задайте порядок классов.
rng(1); % For reproducibility CVSVMModel = fitcsvm(X,Y,'Standardize',true,... 'ClassNames',{'b','g'},'CrossVal','on')
CVSVMModel = 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 = 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] Хасти, Т., Р. Тибширани и Дж. Фридман. Элементы статистического обучения, второе издание. Нью-Йорк: Спрингер, 2008.
[2] Scholkopf, B., J. C. Platt, J. C. Shawe-Taylor, A. J. Smola, and R. C. Williamson. Оценка поддержки высокомерного распределения. Нейронные расчеты. Том 13, № 7, 2001, стр. 1443-1471.
[3] Christianini, N., and J. C. Shawe-Taylor. Введение в машины опорных векторов и других основанных на ядре методов обучения. Кембридж, Великобритания: Cambridge University Press, 2000.
[4] Scholkopf, B., and A. Smola. Обучение с ядерными ядрами: Машины опорных векторов, регуляризация, оптимизация и далее, адаптивные расчеты и машинное обучение. Cambridge, MA: The MIT Press, 2002.
Указания и ограничения по применению:
Чтобы интегрировать предсказание модели классификации SVM в Simulink®, можно использовать блок ClassificationSVM Predict в библиотеке Statistics and Machine Learning Toolbox™ или блок MATLAB Function с predict
функция.
Когда вы обучаете модель SVM при помощи fitcsvm
, применяются следующие ограничения.
Значение 'ScoreTransform'
аргумент пары "имя-значение" не может быть анонимной функцией. Для генерации кода, который предсказывает апостериорные вероятности, заданные новые наблюдения, передайте обученную модель SVM, чтобы fitPosterior
или fitSVMPosterior
. The ScoreTransform
свойство возвращаемой модели содержит анонимную функцию, которая представляет функцию оценки апостериорной вероятности и сконфигурирована для генерации кода.
Для генерации кода с фиксированной точкой, значение 'ScoreTransform'
аргумент пары "имя-значение" не может быть 'invlogit'
. Кроме того, значение 'KernelFunction'
аргумент пары "имя-значение" должен быть 'gaussian'
, 'linear'
, или 'polynomial'
.
Для генерации кода с фиксированной точкой и генерации кода с помощью конфигуратора кодера применяются следующие дополнительные ограничения.
Категориальные предикторы (logical
, categorical
, char
, string
, или cell
) не поддерживаются. Вы не можете использовать 'CategoricalPredictors'
аргумент имя-значение.
Чтобы включить категориальные предикторы в модель, предварительно обработайте их с помощью dummyvar
перед подгонкой модели.
Метки классов с categorical
тип данных не поддерживается. Оба значения метки класса в обучающих данных (Tbl
или Y
) и значение 'ClassNames'
аргумент имя-значение не может быть массивом с categorical
тип данных.
Для получения дополнительной информации смотрите Введение в генерацию кода.
ClassificationSVM
| compact
| discardSupportVectors
| fitcsvm
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.