ClassificationSVM

Машина опорных векторов (SVM) для одноклассовой и двоичной классификации

Описание

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

Создание

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

Свойства

расширить все

Свойства SVM

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

Обученные коэффициенты классификатора, заданные как s-на-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-на-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

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

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

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

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

Шкала

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

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

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

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

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

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

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

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

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

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

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

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

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

Поддерживайте метки класса вектора, заданные как числовой вектор s -на 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 если его класс true 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'журнал (x/( 1 - x))
    'ismax'Устанавливает счет для класса с самым большим счетом равным 1 и устанавливает счета для всех других классов равным 0
    'logit'1/(1 + ex)
    'none' или 'identity'x (без преобразования)
    'sign'-1 для x < 0
    0 для x = 0
    1 для x > 0
    'symmetric'2 x – 1
    'symmetricismax'Устанавливает счет для класса с самым большим счетом равным 1 и устанавливает счета для всех других классов равной -1
    'symmetriclogit'2/(1 + ex) – 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-на-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Скалярный допуск для наибольшего нарушения KKT. Установите этот допуск, например, равным 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Значения 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=pC.

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

      pc=1j=1Kpc,jpc.

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

    3. Обнулите матрицу затрат по умолчанию

      C=[0110].

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

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

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

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

  • Для двухклассного обучения, 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.

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

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

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

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

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

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

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

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

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

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

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

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

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

    j=1nαj=nν.

Ссылки

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

[2] Scholkopf, B., J. C. Platt, J. C. Shawe-Taylor, A. J. Smola, and R. C. Williamson. Оценка поддержки высокомерного распределения. Нейронный компут., Vol. 13, Number 7, 2001, pp. 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.

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

.
Введенный в R2014a