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