Компактная вспомогательная векторная машина (SVM) для одноклассной и двоичной классификации
CompactClassificationSVM является компактной версией классификатора опорной векторной машины (SVM). Компактный классификатор не включает данные, используемые для обучения классификатора SVM. Поэтому выполнение некоторых задач, таких как перекрестная проверка, с помощью компактного классификатора невозможно. Используйте компактный классификатор SVM для таких задач, как прогнозирование меток новых данных.
Создать CompactClassificationSVM модель из полной, обученной ClassificationSVM классификатор с помощью compact.
Alpha - Подготовленные коэффициенты классификатораЭто свойство доступно только для чтения.
Обученные коэффициенты классификатора, заданные как числовой вектор s-by-1. s - количество векторов поддержки в обученном классификаторе, sum(Mdl.IsSupportVector).
Alpha содержит обученные коэффициенты классификатора из двойной задачи, то есть оцененные множители Лагранжа. При удалении дубликатов с помощью RemoveDuplicates аргумент пары имя-значение fitcsvm, то для данного набора повторяющихся наблюдений, которые являются векторами поддержки, Alpha содержит один коэффициент, соответствующий всему набору. То есть MATLAB ® приписывает ненулевой коэффициент одному наблюдению из набора дубликатов и коэффициенту 0 ко всем другим дублирующимся наблюдениям в наборе.
Типы данных: single | double
Beta - Коэффициенты линейного предиктораЭто свойство доступно только для чтения.
Коэффициенты линейного предсказателя, заданные как числовой вектор. Длина Beta равно количеству предикторов, используемых для обучения модели.
MATLAB расширяет категориальные переменные в данных предиктора, используя полное фиктивное кодирование. То есть MATLAB создает одну фиктивную переменную для каждого уровня каждой категориальной переменной. Beta сохраняет одно значение для каждой переменной предиктора, включая фиктивные переменные. Например, если существует три предиктора, один из которых является категориальной переменной с тремя уровнями, то Beta - числовой вектор, содержащий пять значений.
Если KernelParameters.Function является 'linear', то классификационный балл для наблюдения x равен
β + b.
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 - Параметры ядраЭто свойство доступно только для чтения.
Параметры ядра, указанные как массив структуры. Свойство kernel parameters содержит поля, перечисленные в этой таблице.
| Область | Описание |
|---|---|
| Функция | Функция ядра, используемая для вычисления элементов матрицы Gram. Для получения более подробной информации см. |
| Масштаб | Параметр масштаба ядра, используемый для масштабирования всех элементов данных предиктора, на которых обучается модель. Для получения более подробной информации см. |
Отображение значений 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 содержит значения индекса, соответствующие столбцам данных предиктора, которые содержат категориальные предикторы. Если ни один из предикторов не категоричен, то это свойство пустое ([]).
Типы данных: double
ClassNames - Уникальные метки классаЭто свойство доступно только для чтения.
Уникальные метки классов, используемые в обучении, указанные как категориальный или символьный массив, логический или числовой вектор или массив ячеек символьных векторов. ClassNames имеет тот же тип данных, что и метки класса Y. (Программа рассматривает строковые массивы как массивы ячеек символьных векторов.)
ClassNames также определяет порядок классов.
Типы данных: single | double | logical | char | cell | categorical
Cost - Расходы на неправильную классификациюЭто свойство доступно только для чтения.
Стоимость неправильной классификации, указанная как числовая квадратная матрица, где Cost(i,j) - стоимость классификации точки по классу j если его истинный класс 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' | log (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) |
incrementalLearner | Преобразование модели вектора поддержки двоичной классификации (SVM) в инкрементный ученик |
lime | Локальные интерпретируемые модели-агностические объяснения (LIME) |
loss | Найти ошибку классификации для классификатора вспомогательных векторных машин (SVM) |
margin | Поиск полей классификации для классификатора вспомогательных векторных машин (SVM) |
partialDependence | Вычислить частичную зависимость |
plotPartialDependence | Создание графиков частичной зависимости (PDP) и индивидуального условного ожидания (ICE) |
predict | Классифицировать наблюдения с помощью классификатора вспомогательных векторов (SVM) |
shapley | Значения Шапли |
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 =
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] Шолкопф, Б., Дж. С. Платт, Дж. С. Шаве-Тейлор, А. Дж. Смола и Р. К. Уильямсон. «Оценка поддержки высокоразмерного распределения». Нейронные вычисления. Том 13, номер 7, 2001, стр. 1443-1471.
[3] Кристианини, Н. и Дж. К. Шаве-Тейлор. Введение в поддержку векторных машин и других методов обучения на основе ядра. Кембридж, Великобритания: Cambridge University Press, 2000.
[4] Шолкопф, Б. и А. Смола. Обучение с ядрами: поддержка векторных машин, регуляризация, оптимизация и далее, адаптивные вычисления и машинное обучение. Кембридж, Массачусетс: MIT Press, 2002.
Примечания и ограничения по использованию:
Чтобы интегрировать прогнозирование модели классификации SVM в Simulink ®, можно использовать блок «Прогнозирование SVM» в библиотеке Toolbox™ статистики и машинного обучения или функциональный блок MATLAB с помощью predict функция.
При обучении модели SVM с помощью fitcsvm, применяются следующие ограничения.
Значение 'ScoreTransform' аргумент пары имя-значение не может быть анонимной функцией. Для генерации кода, который предсказывает апостериорные вероятности, полученные при новых наблюдениях, передайте обученную модель SVM в fitPosterior или fitSVMPosterior. ScoreTransform свойство возвращаемой модели содержит анонимную функцию, представляющую функцию «оценка-задняя вероятность» и сконфигурированную для генерации кода.
Для создания кода с фиксированной точкой значение 'ScoreTransform' аргумент пары имя-значение не может быть 'invlogit'. Кроме того, значение 'KernelFunction' аргумент пары имя-значение должен быть 'gaussian', 'linear', или 'polynomial'.
Для создания кода с фиксированной точкой и кода с помощью конфигуратора кодера применяются следующие дополнительные ограничения.
Категориальные предикторы (logical, categorical, char, string, или cell) не поддерживаются. Вы не можете использовать 'CategoricalPredictors' аргумент «имя-значение».
Чтобы включить категориальные предикторы в модель, выполните их предварительную обработку с помощью dummyvar перед подгонкой модели.
Метки класса с categorical типы данных не поддерживаются. Оба значения метки класса в данных обучения (Tbl или Y) и значение 'ClassNames' аргумент name-value не может быть массивом с categorical тип данных.
Дополнительные сведения см. в разделе Введение в создание кода.
ClassificationSVM | compact | discardSupportVectors | fitcsvm
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.