Обучите классификатор машины опорных векторов (SVM) и бинарной классификации одного класса
fitcsvm
обучает или перекрестный подтверждает модель машины опорных векторов (SVM) для одного класса и 2D класса (двоичный файл) классификация на низко-размерном или умеренно-размерном наборе данных предиктора. fitcsvm
поддержки, сопоставляющие данные о предикторе с помощью функций ядра, и последовательной минимальной оптимизации (SMO) поддержек, итеративного одного алгоритма данных (ISDA) или L 1 мягко-граничная минимизация через квадратичное программирование для минимизации целевой функции.
Чтобы обучить линейную модель SVM бинарной классификации на высоко-размерном наборе данных, то есть, набор данных, который включает много переменных предикторов, использует fitclinear
вместо этого.
Для мультикласса, учащегося с объединенными бинарными моделями SVM, используйте выходные коды с коррекцией ошибок (ECOC). Для получения дополнительной информации смотрите fitcecoc
.
Чтобы обучить модель регрессии SVM, смотрите fitrsvm
для низко-размерных и умеренно-размерных наборов данных предиктора, или fitrlinear
для высоко-размерных наборов данных.
возвращает классификатор машины опорных векторов (SVM)
Mdl
= fitcsvm(Tbl
,ResponseVarName
)Mdl
обученное использование выборочных данных содержится в таблице Tbl
. ResponseVarName
имя переменной в Tbl
это содержит метки класса для классификации 2D классов или одного класса.
Если переменная метки класса содержит только один класс (например, вектор из единиц), fitcsvm
обучает модель классификации одного класса. В противном случае функция обучает модель классификации 2D классов.
задает опции с помощью одного или нескольких аргументов пары "имя-значение" в дополнение к входным параметрам в предыдущих синтаксисах. Например, можно задать тип перекрестной проверки, стоимости для misclassification и типа функции преобразования счета.Mdl
= fitcsvm(___,Name,Value
)
fitcsvm
обучает классификаторы SVM одного класса или приложениям изучения 2D класса. Чтобы обучить классификаторы SVM с помощью данных больше чем с двумя классами, использовать fitcecoc
.
fitcsvm
поддерживает низко-размерные и умеренно-размерные наборы данных. Для высоко-размерных наборов данных использовать fitclinear
вместо этого.
Если ваш набор данных не является большим, всегда пытайтесь стандартизировать предикторы (см. Standardize
). Стандартизация делает предикторы нечувствительными к шкалам, по которым они измеряются.
Это - хорошая практика, чтобы перекрестный подтвердить использование KFold
аргумент пары "имя-значение". Результаты перекрестной проверки определяют, как хорошо классификатор SVM делает вывод.
Для изучения одного класса:
Настройка по умолчанию для аргумента пары "имя-значение" Alpha
может привести к долгим учебным временам. Чтобы ускорить обучение, установите Alpha
к вектору, в основном состоявшему из 0
s.
Установите аргумент пары "имя-значение" 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
удаляет наблюдения, которые имеют нулевой вес или априорную вероятность.
Для изучения 2D класса, если вы задаете матрицу стоимости (см. Cost
), затем обновления программного обеспечения априорные вероятности класса p (см. Prior
) к pc путем слияния штрафов, описанных в .
А именно, fitcsvm
завершает эти шаги:
Вычислить
Нормируйте pc* так, чтобы обновленные априорные вероятности суммировали к 1.
K является количеством классов.
Сбросьте матрицу стоимости к значению по умолчанию
Удалите наблюдения из обучающих данных, соответствующих классам с нулевой априорной вероятностью.
Для изучения 2D класса, fitcsvm
нормирует все веса наблюдения (см. Weights
) суммировать к 1. Функция затем повторно нормирует нормированные веса, чтобы суммировать до обновленной априорной вероятности класса, которому принадлежит наблюдение. Таким образом, общая масса для наблюдения j в классе k
wj является нормированным весом для наблюдения j; p c, k является обновленной априорной вероятностью класса k (см. предыдущий маркер).
Для изучения 2D класса, fitcsvm
присваивает ограничение поля каждому наблюдению в обучающих данных. Формула для ограничения поля наблюдения j
n является размером обучающей выборки, C 0 является начальным ограничением поля (см. 'BoxConstraint'
аргумент пары "имя-значение"), и общая масса наблюдения j (см. предыдущий маркер).
Если вы устанавливаете 'Standardize',true
и 'Cost'
, 'Prior'
, или 'Weights'
аргумент пары "имя-значение", затем fitcsvm
стандартизирует предикторы с помощью их соответствующих взвешенных средних и взвешенных стандартных отклонений. Таким образом, fitcsvm
стандартизирует предиктор j (xj) использование
xjk является наблюдением k (строка) предиктора j (столбец).
Примите тот 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, такой что
[1] Christianini, N. и Дж. К. Шейв-Тейлор. Введение в машины опорных векторов и другое основанное на ядре изучение методов. Кембридж, Великобритания: Издательство Кембриджского университета, 2000.
[2] Вентилятор, R.-E., P.-H. Чен и C.-J. Лин. “Выбор рабочего набора с помощью информации о втором порядке для учебных машин опорных векторов”. Журнал Исследования Машинного обучения, Издания 6, 2005, стр 1889–1918.
[3] Hastie, T., Р. Тибширэни и Дж. Фридман. Элементы статистического изучения, второго выпуска. Нью-Йорк: Спрингер, 2008.
[4] Кекмен V, T.-M. Хуан и М. Вогт. “Итеративный Один Алгоритм Данных для Учебных Машин Ядра от Огромных Наборов данных: Теория и Эффективность”. Машины опорных векторов: Теория и Приложения. Отредактированный Липо Ваном, 255–274. Берлин: Springer-Verlag, 2005.
[5] Scholkopf, B., Дж. К. Платт, Дж. К. Шейв-Тейлор, А. Дж. Смола и Р. К. Уильямсон. “Оценивая Поддержку Высоко-размерного Распределения”. Нейронный Comput., Издание 13, Номер 7, 2001, стр 1443–1471.
[6] Scholkopf, B. и A. Смола. Изучение с ядрами: машины опорных векторов, регуляризация, оптимизация и вне, адаптивный расчет и машинное обучение. Кембридж, MA: нажатие MIT, 2002.
ClassificationSVM
| CompactClassificationSVM
| ClassificationPartitionedModel
| predict
| fitSVMPosterior
| rng
| quadprog
(Optimization Toolbox) | fitcecoc
| fitclinear
| IsolationForest