exponenta event banner

ClassificationSVM

Поддержка векторной машины (SVM) для одноклассной и двоичной классификации

Описание

ClassificationSVM является классификатором вектора поддержки (SVM) для одноклассного и двухклассного обучения. Обученный ClassificationSVM классификаторы хранят обучающие данные, значения параметров, предшествующие вероятности, векторы поддержки и алгоритмическую информацию реализации. Используйте эти классификаторы для выполнения таких задач, как подбор функции преобразования «оценка-задняя вероятность» (см. fitPosterior) и прогнозирование меток для новых данных (см. predict).

Создание

Создать ClassificationSVM объект с помощью fitcsvm.

Свойства

развернуть все

Свойства SVM

Это свойство доступно только для чтения.

Обученные коэффициенты классификатора, заданные как числовой вектор s-by-1. s - количество векторов поддержки в обученном классификаторе, sum(Mdl.IsSupportVector).

Alpha содержит обученные коэффициенты классификатора из двойной задачи, то есть оцененные множители Лагранжа. При удалении дубликатов с помощью RemoveDuplicates аргумент пары имя-значение fitcsvm, то для данного набора повторяющихся наблюдений, которые являются векторами поддержки, Alpha содержит один коэффициент, соответствующий всему набору. То есть MATLAB ® приписывает ненулевой коэффициент одному наблюдению из набора дубликатов и коэффициенту 0 ко всем другим дублирующимся наблюдениям в наборе.

Типы данных: single | double

Это свойство доступно только для чтения.

Коэффициенты линейного предсказателя, заданные как числовой вектор. Длина Beta равно количеству предикторов, используемых для обучения модели.

MATLAB расширяет категориальные переменные в данных предиктора, используя полное фиктивное кодирование. То есть MATLAB создает одну фиктивную переменную для каждого уровня каждой категориальной переменной. Beta сохраняет одно значение для каждой переменной предиктора, включая фиктивные переменные. Например, если существует три предиктора, один из которых является категориальной переменной с тремя уровнями, то Beta - числовой вектор, содержащий пять значений.

Если KernelParameters.Function является 'linear', то классификационный балл для наблюдения x равен

f (x) = (x/s) β + 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

Это свойство доступно только для чтения.

Член смещения, указанный как скаляр.

Типы данных: single | double

Это свойство доступно только для чтения.

Ограничения поля, заданные как числовой вектор ограничений поля n-by-1. n - количество наблюдений в данных обучения (см. NumObservations свойство).

При удалении дубликатов с помощью RemoveDuplicates аргумент пары имя-значение fitcsvmЗатем для данного набора повторяющихся наблюдений MATLAB суммирует ограничения поля, а затем приписывает сумму одному наблюдению. MATLAB приписывает ограничения поля 0 ко всем остальным наблюдениям в наборе.

Типы данных: single | double

Это свойство доступно только для чтения.

Кэширование информации, указанной как массив структуры. Информация кэширования содержит поля, описанные в этой таблице.

ОбластьОписание
Размер

Размер кэша (в МБ), зарезервированный программным обеспечением для обучения классификатора SVM. Для получения более подробной информации см. 'CacheSize'.

Алгоритм

Алгоритм кэширования, используемый программным обеспечением при оптимизации. В настоящее время единственным доступным алгоритмом кэширования является Queue. Невозможно задать алгоритм кэширования.

Просмотр полей CacheInfo используя точечную нотацию. Например, Mdl.CacheInfo.Size отображает значение размера кэша.

Типы данных: struct

Это свойство доступно только для чтения.

Индикатор вектора поддержки, заданный как логический вектор n-by-1, который помечает, является ли соответствующее наблюдение в матрице данных предиктора вектором поддержки. n - количество наблюдений в данных обучения (см. NumObservations).

При удалении дубликатов с помощью RemoveDuplicates аргумент пары имя-значение fitcsvm, то для данного набора повторяющихся наблюдений, которые являются векторами поддержки, IsSupportVector помечает только одно наблюдение как вектор поддержки.

Типы данных: logical

Это свойство доступно только для чтения.

Параметры ядра, указанные как массив структуры. Свойство kernel parameters содержит поля, перечисленные в этой таблице.

ОбластьОписание
Функция

Функция ядра, используемая для вычисления элементов матрицы Gram. Для получения более подробной информации см. 'KernelFunction'.

Масштаб

Параметр масштаба ядра, используемый для масштабирования всех элементов данных предиктора, на которых обучается модель. Для получения более подробной информации см. 'KernelScale'.

Отображение значений KernelParameters, используйте точечную нотацию. Например, Mdl.KernelParameters.Scale отображает значение параметра масштаба ядра.

Программное обеспечение принимает KernelParameters в качестве входных данных и не изменяет их.

Типы данных: struct

Это свойство доступно только для чтения.

Одноклассный обучающий параметр, заданный как положительный скаляр.

Типы данных: single | double

Это свойство доступно только для чтения.

Доля отклонений в данных обучения, заданная как числовой скаляр.

Типы данных: double

Это свойство доступно только для чтения.

Процедура оптимизации, используемая для обучения классификатора SVM, указанная как 'ISDA', 'L1QP', или 'SMO'. Дополнительные сведения см. в разделе 'Solver'.

Это свойство доступно только для чтения.

Поддержка меток классов векторов, заданных как числовой вектор s-by-1. s - количество векторов поддержки в обученном классификаторе, sum(Mdl.IsSupportVector).

Значение +1 в SupportVectorLabels указывает, что соответствующий вектор поддержки находится в положительном классе (ClassNames{2}). Значение –1 указывает, что соответствующий вектор поддержки находится в отрицательном классе (ClassNames{1}).

При удалении дубликатов с помощью RemoveDuplicates аргумент пары имя-значение fitcsvm, то для данного набора повторяющихся наблюдений, которые являются векторами поддержки, SupportVectorLabels содержит одну уникальную метку вектора поддержки.

Типы данных: single | double

Это свойство доступно только для чтения.

Поддержка векторов в обученном классификаторе, указанном как s-by-p-числовая матрица. s - количество векторов поддержки в обученном классификаторе, sum(Mdl.IsSupportVector)и p - количество переменных предиктора в данных предиктора.

SupportVectors содержит строки данных предиктора X которые MATLAB считает векторами поддержки. При указании 'Standardize',true при обучении классификатора SVM с использованием fitcsvm, то SupportVectors содержит стандартизированные строки X.

При удалении дубликатов с помощью RemoveDuplicates аргумент пары имя-значение fitcsvm, то для данного набора повторяющихся наблюдений, которые являются векторами поддержки, SupportVectors содержит один уникальный вектор поддержки.

Типы данных: single | double

Другие свойства классификации

Это свойство доступно только для чтения.

Индексы категориального предиктора, указанные как вектор положительных целых чисел. CategoricalPredictors содержит значения индекса, соответствующие столбцам данных предиктора, которые содержат категориальные предикторы. Если ни один из предикторов не категоричен, то это свойство пустое ([]).

Типы данных: double

Это свойство доступно только для чтения.

Уникальные метки классов, используемые в обучении, указанные как категориальный или символьный массив, логический или числовой вектор или массив ячеек символьных векторов. ClassNames имеет тот же тип данных, что и метки класса Y. (Программа рассматривает строковые массивы как массивы ячеек символьных векторов.) ClassNames также определяет порядок классов.

Типы данных: single | double | logical | char | cell | categorical

Это свойство доступно только для чтения.

Стоимость неправильной классификации, указанная как числовая квадратная матрица, где 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 является таким же, как PredictorNames.

Типы данных: cell

Это свойство доступно только для чтения.

Значения градиента обучающих данных, заданные как числовой вектор. Длина Gradient равно количеству наблюдений (NumObservations).

Типы данных: single | double

Это свойство доступно только для чтения.

Параметры, используемые для обучения ClassificationSVM модель, заданная как объект. ModelParameters содержит значения параметров, такие как значения аргументов пары имя-значение, используемые для обучения классификатора SVM. ModelParameters не содержит оценочных параметров.

Доступ к свойствам ModelParameters используя точечную нотацию. Например, доступ к начальным значениям для оценки Alpha с помощью Mdl.ModelParameters.Alpha.

Это свойство доступно только для чтения.

Средство предсказания, указанное как числовой вектор. При указании 'Standardize',1 или 'Standardize',true при обучении классификатора SVM с помощью fitcsvm, то длина Mu равно числу предикторов.

MATLAB расширяет категориальные переменные в данных предиктора, используя полное фиктивное кодирование. То есть MATLAB создает одну фиктивную переменную для каждого уровня каждой категориальной переменной. Mu сохраняет одно значение для каждой переменной предиктора, включая фиктивные переменные. Однако MATLAB не стандартизирует столбцы, содержащие категориальные переменные.

Если установить 'Standardize',false при обучении классификатора SVM с помощью fitcsvm, то Mu является пустым вектором ([]).

Типы данных: single | double

Это свойство доступно только для чтения.

Количество наблюдений в данных обучения, хранящихся в X и Y, указывается как числовой скаляр.

Типы данных: double

Это свойство доступно только для чтения.

Имена переменных предиктора, заданные как массив ячеек векторов символов. Порядок элементов PredictorNames соответствует порядку, в котором имена предикторов появляются в данных обучения.

Типы данных: cell

Это свойство доступно только для чтения.

Предшествующие вероятности для каждого класса, указанные как числовой вектор. Порядок элементов Prior соответствует элементам Mdl.ClassNames.

Для двухклассного обучения, если указать матрицу затрат, программное обеспечение обновляет предыдущие вероятности путем включения штрафов, описанных в матрице затрат.

Дополнительные сведения см. в разделе Алгоритмы.

Типы данных: single | double

Это свойство доступно только для чтения.

Имя ответной переменной, указанное как символьный вектор.

Типы данных: char

Это свойство доступно только для чтения.

Строки исходных учебных данных, используемых при подборе ClassificationSVM модель, заданная как логический вектор. Это свойство пусто, если используются все строки.

Типы данных: logical

Преобразование баллов, указанное как символьный вектор или дескриптор функции. 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

Это свойство доступно только для чтения.

Стандартные отклонения предиктора, заданные как числовой вектор.

При указании 'Standardize',true при обучении классификатора SVM с помощью fitcsvm, то длина Sigma равен числу переменных предиктора.

MATLAB расширяет категориальные переменные в данных предиктора, используя полное фиктивное кодирование. То есть MATLAB создает одну фиктивную переменную для каждого уровня каждой категориальной переменной. Sigma сохраняет одно значение для каждой переменной предиктора, включая фиктивные переменные. Однако MATLAB не стандартизирует столбцы, содержащие категориальные переменные.

Если установить 'Standardize',false при обучении классификатора SVM с помощью fitcsvm, то Sigma является пустым вектором ([]).

Типы данных: single | double

Это свойство доступно только для чтения.

Веса наблюдений, используемые для обучения классификатора SVM, заданного как n-by-1 числовой вектор. n - количество наблюдений (см. NumObservations).

fitcsvm нормализует веса наблюдения, указанные в 'Weights' аргумент пары имя-значение, чтобы элементы W внутри конкретного класса суммируется с предшествующей вероятностью этого класса.

Типы данных: single | double

Это свойство доступно только для чтения.

Нестандартные предикторы, используемые для обучения классификатора SVM, заданного как числовая матрица или таблица.

Каждая строка X соответствует одному наблюдению, и каждый столбец соответствует одной переменной.

MATLAB исключает наблюдения, содержащие по крайней мере одно отсутствующее значение, и удаляет соответствующие элементы из Y.

Типы данных: single | double

Это свойство доступно только для чтения.

Метки классов, используемые для обучения классификатора SVM, заданного как категориальный или символьный массив, логический или числовой вектор или массив ячеек символьных векторов. Y является тем же типом данных, что и входной аргумент Y из fitcsvm. (Программа рассматривает строковые массивы как массивы ячеек символьных векторов.)

Каждая строка Y представляет наблюдаемую классификацию соответствующей строки X.

MATLAB исключает элементы, содержащие отсутствующие значения, и удаляет соответствующие наблюдения из X.

Типы данных: single | double | logical | char | cell | categorical

Свойства управления сходимостью

Это свойство доступно только для чтения.

Сведения о сходимости, указанные как массив структуры.

ОбластьОписание
ConvergedЛогический флаг, указывающий, сходился ли алгоритм (1 указывает сходимость).
ReasonForConvergenceСимвольный вектор, указывающий критерий, используемый программой для обнаружения сходимости.
GapСкалярный промежуток осуществимости между двойной и основной объективными функциями.
GapToleranceДопуск скалярной допустимости разрыва. Задайте для этого допуска, например, значение 1e-2, с помощью аргумента пара имя-значение 'GapTolerance',1e-2 из fitcsvm.
DeltaGradientСкалярная разность градиентов между верхним и нижним нарушителями
DeltaGradientToleranceСкалярный допуск для разности градиентов между верхним и нижним нарушителями. Задайте для этого допуска, например, значение 1e-2, с помощью аргумента пара имя-значение 'DeltaGradientTolerance',1e-2 из fitcsvm.
LargestKKTViolationМаксимальное скалярное значение нарушения Каруша-Куна-Такера (KKT).
KKTToleranceСкалярный допуск для наибольшего нарушения ККТ. Задайте для этого допуска, например, значение 1e-3, с помощью аргумента пара имя-значение 'KKTTolerance',1e-3 из fitcsvm.
History

Структурный массив, содержащий информацию о сходимости при итерациях оптимизации набора. Поля:

  • NumIterationsЧисловой вектор индексов итерации, для которого программное обеспечение записывает информацию о сходимости

  • Gap: числовой вектор Gap значения в итерациях

  • DeltaGradient: числовой вектор DeltaGradient значения в итерациях

  • LargestKKTViolation: числовой вектор LargestKKTViolation значения в итерациях

  • NumSupportVectors: числовой вектор, указывающий количество векторов поддержки в итерациях

  • Objective: числовой вектор Objective значения в итерациях

ObjectiveСкалярное значение двойной целевой функции.

Типы данных: struct

Это свойство доступно только для чтения.

Число итераций, необходимых подпрограмме оптимизации для достижения сходимости, указанное как положительное целое число.

Установка предела числа итераций для 1000, например, указать 'IterationLimit',1000 при обучении классификатора SVM с помощью fitcsvm.

Типы данных: double

Это свойство доступно только для чтения.

Число итераций между сокращениями активного множества, указанного как неотрицательное целое число.

Установка периода усадки равным 1000, например, указать 'ShrinkagePeriod',1000 при обучении классификатора SVM с помощью fitcsvm.

Типы данных: single | double

Свойства оптимизации гиперпараметров

Это свойство доступно только для чтения.

Описание оптимизации гиперпараметров при перекрестной проверке, указанное как BayesianOptimization объект или таблица гиперпараметров и связанных значений. Это свойство не является пустым, если 'OptimizeHyperparameters' аргумент пары имя-значение fitcsvm является непустым при создании. Значение HyperparameterOptimizationResults зависит от настройки Optimizer в поле HyperparameterOptimizationOptions структура fitcsvm при создании, как описано в этой таблице.

Значение Optimizer ОбластьЗначение HyperparameterOptimizationResults
'bayesopt' (по умолчанию)Объект класса BayesianOptimization
'gridsearch' или 'randomsearch'Таблица используемых гиперпараметров, наблюдаемые значения целевой функции (потеря перекрестной проверки) и ранг наблюдений от самого низкого (лучший) до самого высокого (худший)

Функции объекта

compactУменьшение размера модели машинного обучения
compareHoldoutСравнение точности двух классификационных моделей с использованием новых данных
crossvalМодель машинного обучения с перекрестной проверкой
discardSupportVectorsОтбрасывание векторов поддержки для классификатора линейных векторов поддержки (SVM)
edgeНайти край классификации для классификатора вспомогательных векторных машин (SVM)
fitPosteriorПодгонка задних вероятностей для классификатора опорной векторной машины (SVM)
incrementalLearnerПреобразование модели вектора поддержки двоичной классификации (SVM) в инкрементный ученик
lossНайти ошибку классификации для классификатора вспомогательных векторных машин (SVM)
marginПоиск полей классификации для классификатора вспомогательных векторных машин (SVM)
partialDependenceВычислить частичную зависимость
plotPartialDependenceСоздание графиков частичной зависимости (PDP) и индивидуального условного ожидания (ICE)
predictКлассифицировать наблюдения с помощью классификатора вспомогательных векторов (SVM)
resubEdgeКрай классификации повторной субституции
limeЛокальные интерпретируемые модели-агностические объяснения (LIME)
resubLossПотеря классификации возмещения
resubMarginМаржа классификации ресообразования
resubPredictКлассификация данных обучения с использованием обученного классификатора
resumeВозобновить работу классификатора вектора поддержки обучения (SVM)
shapleyЗначения Шапли
testckfoldСравнение точности двух классификационных моделей с помощью повторной перекрестной проверки

Примеры

свернуть все

Загрузите набор данных радужки Фишера. Удалите длины и ширины чашелистиков и все наблюдаемые ирисы сетозы.

load fisheriris
inds = ~strcmp(species,'setosa');
X = meas(inds,3:4);
y = species(inds);

Обучение классификатора SVM с использованием обработанного набора данных.

SVMModel = fitcsvm(X,y)
SVMModel = 
  ClassificationSVM
             ResponseName: 'Y'
    CategoricalPredictors: []
               ClassNames: {'versicolor'  'virginica'}
           ScoreTransform: 'none'
          NumObservations: 100
                    Alpha: [24x1 double]
                     Bias: -14.4149
         KernelParameters: [1x1 struct]
           BoxConstraints: [100x1 double]
          ConvergenceInfo: [1x1 struct]
          IsSupportVector: [100x1 logical]
                   Solver: 'SMO'


  Properties, Methods

SVMModel является обученным ClassificationSVM классификатор. Отображение свойств SVMModel. Например, чтобы определить порядок классов, используйте точечную нотацию.

classOrder = SVMModel.ClassNames
classOrder = 2x1 cell
    {'versicolor'}
    {'virginica' }

Первый класс ('versicolor') - отрицательный класс, а второй ('virginica') - положительный класс. Порядок занятий можно изменить во время обучения с помощью 'ClassNames' аргумент пары имя-значение.

Постройте диаграмму рассеяния данных и обведите векторы поддержки.

sv = SVMModel.SupportVectors;
figure
gscatter(X(:,1),X(:,2),y)
hold on
plot(sv(:,1),sv(:,2),'ko','MarkerSize',10)
legend('versicolor','virginica','Support Vector')
hold off

Figure contains an axes. The axes contains 3 objects of type line. These objects represent versicolor, virginica, Support Vector.

Векторы поддержки представляют собой наблюдения, которые происходят на их оценочных границах классов или за их пределами.

Можно настроить границы (и, следовательно, количество векторов поддержки), установив ограничение рамки во время обучения с помощью 'BoxConstraint' аргумент пары имя-значение.

Загрузить 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%.

Подробнее

развернуть все

Алгоритмы

  • Математическую формулировку алгоритма двоичной классификации SVM см. в разделе Поддержка векторных машин для двоичной классификации и понимание поддержки векторных машин.

  • NaN, <undefined>, пустой символьный вектор (''), пустая строка (""), и <missing> значения указывают на отсутствие значений. fitcsvm удаляет целые строки данных, соответствующие отсутствующему ответу. При вычислении общих весов (см. следующие маркеры), fitcsvm игнорирует любой вес, соответствующий наблюдению, по меньшей мере, с одним отсутствующим предиктором. Это действие может привести к несбалансированности предыдущих вероятностей в проблемах сбалансированного класса. Следовательно, ограничения поля наблюдения могут не совпадать BoxConstraint.

  • fitcsvm удаляет наблюдения, которые имеют нулевой вес или предшествующую вероятность.

  • Для двухклассного обучения, если указать матрицу затрат C (см. Cost), то программное обеспечение обновляет класс предыдущих вероятностей p (см. Prior) к pc путем включения штрафов, описанных в C.

    В частности, fitcsvm выполняет следующие действия:

    1. Вычислить pc∗=p′C.

    2. Нормализуйте pc * так, чтобы обновленные предыдущие вероятности были равны 1.

      pc=1∑j=1Kpc,j∗pc∗.

      K - количество классов.

    3. Сброс матрицы затрат до значения по умолчанию

      C = [0110].

    4. Удалите наблюдения из учебных данных, соответствующих классам с нулевой предварительной вероятностью.

  • Для двухклассного обучения, fitcsvm нормализует все веса наблюдения (см. Weights) для суммирования в 1. Затем функция перенормирует нормализованные веса для суммирования обновленной предшествующей вероятности класса, к которому относится наблюдение. То есть общий вес для наблюдения j в классе k равен

    wj∗=wj∑∀j∈Class kwjpc, k.

    wj - нормализованный вес для наблюдения j; pc, k - обновленная предшествующая вероятность класса k (см. предыдущий маркер).

  • Для двухклассного обучения, fitcsvm назначает ограничение поля для каждого наблюдения в данных обучения. Формула ограничения поля для наблюдения j

    Cj=nC0wj∗.

    n - размер обучающей выборки, C0 является начальным ограничением поля (см. 'BoxConstraint' аргумент пары имя-значение), и wj∗ - общий вес наблюдения j (см. предыдущий маркер).

  • Если установить 'Standardize',true и 'Cost', 'Prior', или 'Weights' аргумент пары имя-значение, затем fitcsvm стандартизирует предикторы, используя их соответствующие взвешенные средства и взвешенные стандартные отклонения. То есть fitcsvm стандартизирует предиктор j (xj) с использованием

    xj∗=xj−μj∗σj∗.

    μj∗=1∑kwk∗∑kwk∗xjk.

    xjk - наблюдение k (строка) предиктора j (столбец).

    (σj∗) 2=v1v12−v2∑kwk∗ (xjk−μj∗) 2.

    v1=∑jwj∗.

    v2=∑j (wj∗) 2.

  • Предположим, что p - доля отклонений, которые ожидаются в данных обучения и которые устанавливаются 'OutlierFraction',p.

    • Для одноклассного обучения программное обеспечение обучает термин смещения таким образом, что 100p% наблюдений в данных обучения имеют отрицательные оценки.

    • Программное обеспечение реализует надежное обучение для двухклассного обучения. Другими словами, программное обеспечение пытается удалить 100p% наблюдений, когда алгоритм оптимизации сходится. Удаленные наблюдения соответствуют градиентам, которые являются большими по величине.

  • Если данные предиктора содержат категориальные переменные, то программное обеспечение обычно использует полную фиктивную кодировку для этих переменных. Программа создает одну фиктивную переменную для каждого уровня каждой категориальной переменной.

    • PredictorNames свойство сохраняет один элемент для каждого из исходных имен переменных предиктора. Например, предположим, что существует три предиктора, один из которых является категориальной переменной с тремя уровнями. Тогда PredictorNames является массивом ячеек 1 на 3 символьных векторов, содержащих исходные имена переменных предиктора.

    • ExpandedPredictorNames свойство сохраняет один элемент для каждой из переменных предиктора, включая фиктивные переменные. Например, предположим, что существует три предиктора, один из которых является категориальной переменной с тремя уровнями. Тогда ExpandedPredictorNames - клеточный массив символьных векторов, содержащий имена переменных предиктора и новых фиктивных переменных.

    • Аналогично, Beta свойство хранит один бета-коэффициент для каждого предиктора, включая фиктивные переменные.

    • SupportVectors свойство сохраняет предикторные значения для векторов поддержки, включая фиктивные переменные. Например, предположим, что существуют m векторов поддержки и три предиктора, один из которых является категориальной переменной с тремя уровнями. Тогда SupportVectors является матрицей n-by-5.

    • X свойство сохраняет данные обучения в качестве исходных данных и не включает фиктивные переменные. Если вводом является таблица, X содержит только столбцы, используемые в качестве предикторов.

  • Для предикторов, указанных в таблице, если какая-либо из переменных содержит упорядоченные (порядковые) категории, программное обеспечение использует кодировку порядковых номеров для этих переменных.

    • Для переменной с k упорядоченными уровнями программа создает k-1 фиктивных переменных. j-я фиктивная переменная равна -1 для уровней до j и + 1 для уровней j + 1-k.

    • Имена фиктивных переменных, сохраненных в ExpandedPredictorNames свойство указывает первый уровень со значением + 1. Программа сохраняет k-1 дополнительных предикторных имен для фиктивных переменных, включая имена уровней 2, 3,..., k.

  • Все решатели реализуют L1 минимизацию мягких полей.

  • Для одноклассного обучения программное обеспечение оценивает множители Лагранжа, α1,..., αn, такие, что

    ∑j=1nαj=nν.

Ссылки

[1] Хасти, Т., Р. Тибширани и Дж. Фридман. Элементы статистического обучения, второе издание. Нью-Йорк: Спрингер, 2008.

[2] Шолкопф, Б., Дж. С. Платт, Дж. С. Шаве-Тейлор, А. Дж. Смола и Р. К. Уильямсон. «Оценка поддержки высокоразмерного распределения». Нейронный компут., т. 13, номер 7, 2001, стр. 1443-1471.

[3] Кристианини, Н. и Дж. К. Шаве-Тейлор. Введение в поддержку векторных машин и других методов обучения на основе ядра. Кембридж, Великобритания: Cambridge University Press, 2000.

[4] Шолкопф, Б. и А. Смола. Обучение с ядрами: поддержка векторных машин, регуляризация, оптимизация и далее, адаптивные вычисления и машинное обучение. Кембридж, Массачусетс: MIT Press, 2002.

Расширенные возможности

.
Представлен в R2014a