Обучите классификатор машины опорных векторов (SVM) для одноклассовой и двоичной классификации
fitcsvm
обучает или перекрестно проверяет модель машины опорных векторов (SVM) для классовой и двухклассной (двоичной) классификации на низкомерном или умеренно-размерном наборе данных предиктора. fitcsvm
Поддержки отображения данных предиктора с помощью функций ядра и поддержек последовательной минимальной оптимизации (SMO), итерационного алгоритма одиночных данных (ISDA) или L 1 минимизации мягкого запаса посредством квадратичного программирования для минимизации целевой функции.
Чтобы обучить линейную модель SVM для двоичной классификации на высоко-размерном наборе данных, то есть наборе данных, который включает много переменные, используйте fitclinear
вместо этого.
Для многоклассового обучения с комбинированными двоичными моделями SVM используйте исправляющие ошибки выходные коды (ECOC). Для получения дополнительной информации см. fitcecoc
.
Для обучения регрессионной модели SVM см. fitrsvm
для низкомерных и умеренно-размерных наборов данных предиктора, или fitrlinear
для высоко-размерных наборов данных.
возвращает классификатор машины опорных векторов (SVM)
MdlMdl
= fitcsvm(Tbl
,ResponseVarName
) обучен с использованием выборочных данных, содержащихся в таблице
Tbl
. ResponseVarName
- имя переменной в Tbl
который содержит метки классов для классификации одного или двух классов.
задает опции, использующие один или несколько аргументы пары "имя-значение" в дополнение к входным параметрам в предыдущих синтаксисах. Для примера можно задать тип перекрестной проверки, затраты на неправильную классификацию и тип функции преобразования счета.Mdl
= fitcsvm(___,Name,Value
)
fitcsvm
обучает классификаторы SVM для одноклассных или двухклассных приложений обучения. Для обучения классификаторов SVM с использованием данных с более чем двумя классами используйте fitcecoc
.
fitcsvm
поддерживает низкомерные и умеренно-размерные наборы данных. Для высоко-размерных наборов данных используйте fitclinear
вместо этого.
Если ваш набор данных не велик, всегда старайтесь стандартизировать предикторы (см Standardize
). Стандартизация делает предикторы нечувствительными к шкалам, на которых они измеряются.
Это хорошая практика для перекрестной проверки с использованием KFold
аргумент пары "имя-значение". Результаты перекрестной валидации определяют, насколько хорошо обобщается классификатор SVM.
Для одноклассного обучения:
Настройка по умолчанию для аргумента пары "имя-значение" Alpha
может привести к длительным временам обучения. Чтобы ускорить обучение, установите Alpha
к вектору, в основном состоящему из 0
с.
Установите аргумент пары "имя-значение" Nu
к значению ближе к 0
для получения меньшего количества векторов поддержки и, следовательно, более плавной, но грубого контура принятия решений.
Разреженность в поддерживающих векторах является желаемым свойством классификатора SVM. Чтобы уменьшить количество поддерживающих векторов, установите BoxConstraint
к большому значению. Это действие увеличивает время обучения.
Для оптимального времени обучения установите CacheSize
так высоко, как позволяет предел памяти вашего компьютера.
Если вы ожидаете гораздо меньше векторов поддержки, чем наблюдений в наборе обучающих данных, то можно значительно ускорить сходимость, сократив активное множество с помощью аргумента пары "имя-значение" 'ShrinkagePeriod'
. Это хорошая практика, чтобы определить 'ShrinkagePeriod',1000
.
Дублирующие наблюдения, которые находятся далеко от контура принятия решения, не влияют на сходимость. Однако лишь несколько повторяющихся наблюдений, которые происходят вблизи контура принятия решения, могут значительно замедлить сходимость. Чтобы ускорить сходимость, задайте 'RemoveDuplicates',true
если:
Ваш набор данных содержит много повторяющихся наблюдений.
Вы подозреваете, что несколько повторяющихся наблюдений находятся вблизи контура принятия решения.
Ведение исходного набора данных во время обучения, fitcsvm
необходимо временно хранить отдельные наборы данных: оригинал и один без повторяющихся наблюдений. Поэтому, если вы задаете true
для наборов данных, содержащих несколько дубликатов, тогда fitcsvm
потребляет близкую к удвоенной память исходных данных.
После обучения модели можно сгенерировать код C/C + +, который предсказывает метки для новых данных. Для генерации кода C/C + + требуется MATLAB Coder™. Для получения дополнительной информации смотрите Введение в генерацию кода .
Для математической формулировки алгоритма двоичной классификации SVM, смотрите Машины опорных векторов для двоичной классификации и Машин опорных векторов понимания.
NaN
, <undefined>
, пустой символьный вектор (''
), пустая строка (""
), и <missing>
значения указывают на отсутствующие значения. fitcsvm
удаляет целые строки данных, соответствующих отсутствующему ответу. При вычислении общих весов (см. следующие пули) fitcsvm
игнорирует любой вес, относящийся к наблюдению, по крайней мере, с одним отсутствующим предиктором. Это действие может привести к несбалансированным предшествующим вероятностям в задачах сбалансированного класса. Следовательно, ограничения ящика наблюдений могут не равняться BoxConstraint
.
fitcsvm
удаляет наблюдения, которые имеют нулевой вес или предшествующую вероятность.
Для двухклассного обучения, если вы задаете матрицу затрат (см. Cost
), затем программное обеспечение обновляет класс априорных вероятностей p (см Prior
) для pc путем включения штрафов, описанных в .
В частности, fitcsvm
завершает следующие шаги:
Вычислить
Нормализуйте pc* так что обновленные предыдущие вероятности равны 1.
K - количество классов.
Обнулите матрицу затрат по умолчанию
Удалите наблюдения из обучающих данных, соответствующих классам с нулевой предшествующей вероятностью.
Для двухклассного обучения, fitcsvm
нормализует все веса наблюдений (см Weights
) в сумме до 1. Затем функция перенормирует нормированные веса, чтобы суммировать до обновленной предыдущей вероятности класса, к которому принадлежит наблюдение. То есть, общий вес для j наблюдений в классе k,
wj - нормированный вес для j наблюдений; p c k является обновленной предыдущей вероятностью k класса (см. Предыдущий буллит).
Для двухклассного обучения, fitcsvm
присваивает прямоугольное ограничение каждому наблюдению в обучающих данных. Формула для прямоугольного ограничения j наблюдений
n - размер обучающей выборки, C 0 - начальное прямоугольное ограничение (см. 'BoxConstraint'
аргумент пары "имя-значение"), и - общий вес j наблюдения (см. предыдущую пулю).
Если вы задаете 'Standardize',true
и 'Cost'
, 'Prior'
, или 'Weights'
аргумент пары "имя-значение", затем fitcsvm
стандартизирует предикторы с помощью их соответствующих взвешенных средств и взвешенных стандартных отклонений. То есть fitcsvm
стандартизирует предиктор j (xj), используя
xjk - k наблюдения (строка) предиктора j (столбец).
Предположим, что 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, такие, что
[1] Christianini, N., and J. C. Shawe-Taylor. Введение в машины опорных векторов и других основанных на ядре методов обучения. Кембридж, Великобритания: Cambridge University Press, 2000.
[2] Вентилятор, R.-E., P.-H. Чен и К.-Ж. Lin. «Работа набора с использованием информации второго порядка для обучения машин опорных векторов». Journal of Машинного обучения Research, Vol. 6, 2005, pp. 1889-1918.
[3] Хасти, Т., Р. Тибширани и Дж. Фридман. Элементы статистического обучения, второе издание. Нью-Йорк: Спрингер, 2008.
[4] Кечман В., Т. -М. Хуан и М. Фогт. Итерационный алгоритм единичных данных для обучения машин ядра из огромных наборов данных: теория и эффективность. Машины опорных векторов: теория и приложения. Под редакцией Липо Ван, 255-274. Берлин: Springer-Verlag, 2005.
[5] Scholkopf, B., J. C. Platt, J. C. Shawe-Taylor, A. J. Smola, and R. C. Williamson. Оценка поддержки высокомерного распределения. Нейронный компут., Vol. 13, Number 7, 2001, pp. 1443-1471.
[6] Scholkopf, B., and A. Smola. Обучение с ядерными ядрами: Машины опорных векторов, регуляризация, оптимизация и далее, адаптивные расчеты и машинное обучение. Cambridge, MA: The MIT Press, 2002.
ClassificationPartitionedModel
| ClassificationSVM
| CompactClassificationSVM
| fitcecoc
| fitclinear
| fitSVMPosterior
| predict
| rng
| quadprog
(Optimization Toolbox)