ClassificationSVM

Машина вектора поддержки (SVM) для и бинарной классификации одного класса

Описание

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

Создание

Создайте объект ClassificationSVM при помощи fitcsvm.

Свойства

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

Свойства SVM

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

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

Alpha содержит обученные коэффициенты классификатора от двойной проблемы, то есть, предполагаемых множителей Лагранжа. Если вы удаляете копии при помощи аргумента пары "имя-значение" RemoveDuplicates fitcsvm, то для данного набора дублирующихся наблюдений, которые являются векторами поддержки, Alpha содержит один коэффициент, соответствующий целому набору. That is, 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 отмечает только одно наблюдение как вектор поддержки.

Типы данных: логический

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

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

Поле Описание
Функция

Функция ядра раньше вычисляла элементы матрицы Грамма. Для получения дополнительной информации смотрите '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 содержит индексные значения, соответствующие столбцам данных о предикторе, которые содержат категориальные предикторы. Если ни один из предикторов не является категориальным, то это свойство пусто ([]).

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

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

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

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

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

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 совпадает с PredictorNames.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Для получения дополнительной информации см. Алгоритмы.

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

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

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

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

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

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

Типы данных: логический

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

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

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

Если вы задаете '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Максимальное скалярное значение нарушения Karush-Kuhn-Tucker (KKT).
KKTToleranceСкалярный допуск к самому большому нарушению KKT. Установите этот допуск, например, к к, 1e-3, при помощи аргумента пары "имя-значение" 'KKTTolerance',1e-3 fitcsvm.
History

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

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

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

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

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

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

  • Цель: числовой вектор значений 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Уменьшайте размер классификатора машины вектора поддержки (SVM)
compareHoldoutСравните точность двух моделей классификации с помощью новых данных
crossvalПерекрестный подтвердите классификатор машины вектора поддержки (SVM)
discardSupportVectorsОтбросьте векторы поддержки для линейного классификатора машины вектора поддержки (SVM)
edgeНайдите ребро классификации для классификатора машины вектора поддержки (SVM)
fitPosteriorПодходящие апостериорные вероятности для классификатора машины вектора поддержки (SVM)
lossНайдите ошибку классификации для классификатора машины вектора поддержки (SVM)
marginНайдите поля классификации для классификатора машины вектора поддержки (SVM)
predictКлассифицируйте наблюдения с помощью классификатора машины вектора поддержки (SVM)
resubEdgeНайдите ребро классификации для классификатора машины вектора поддержки (SVM) перезаменой
resubLossНайдите потерю классификации для классификатора машины вектора поддержки (SVM) перезаменой
resubMarginНайдите поля классификации для классификатора машины вектора поддержки (SVM) перезаменой
resubPredictКлассифицируйте наблюдения на классификатор машины вектора поддержки (SVM)
resumeВозобновите учебный классификатор машины вектора поддержки (SVM)

Примеры

свернуть все

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

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 array
    {'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

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

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

Загрузите набор данных 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%.

Больше о

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

Алгоритмы

  • Для математической формулировки бинарного алгоритма классификации SVM смотрите Машины Вектора Поддержки для Бинарной Классификации и Понимающий Машины Вектора Поддержки.

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

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

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

    А именно, fitcsvm завершает эти шаги:

    1. Вычислить pc=pC.

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

      pc=1j=1Kpc,jpc.

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

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

      C=[0110].

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

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

    wj=wjjКласс kwjpc,k.

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

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

    Cj=nC0wj.

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

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

    xj=xjμjσj.

    μj=1kwkkwkxjk.

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

    (σj)2=v1v12v2kwk(xjkμj)2.

    v1=jwj.

    v2=j(wj)2.

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

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

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

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

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

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

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

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

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

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

    • Поскольку переменная с k заказала уровни, программное обеспечение создает k – 1 фиктивная переменная. j th фиктивная переменная –1 для уровней до j, и +1 для уровней j + 1 через k.

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

  • Все решатели реализуют L 1 мягко-граничная минимизация.

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

    j=1nαj=nν.

Ссылки

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

[2] Scholkopf, B., Дж. К. Платт, Дж. К. Шейв-Тейлор, А. Дж. Смола и Р. К. Уильямсон. “Оценивая Поддержку Высоко-размерного Распределения”. Нейронный Comput., Издание 13, Номер 7, 2001, стр 1443–1471.

[3] Christianini, N. и Дж. К. Шейв-Тейлор. Введение, чтобы поддержать векторные машины и другое основанное на ядре изучение методов. Кембридж, Великобритания: Издательство Кембриджского университета, 2000.

[4] Scholkopf, B. и A. Смола. Изучение с ядрами: поддержите векторные машины, регуляризацию, оптимизацию и вне, адаптивное вычисление и машинное обучение. Кембридж, MA: нажатие MIT, 2002.

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

Введенный в R2014a