Поддержка шаблона векторной машины
возвращает шаблон обучающегося вспомогательного векторного устройства (SVM), подходящий для обучающих моделей многоклассных выходных кодов с исправлением ошибок (ECOC).t = templateSVM()
Если указан шаблон по умолчанию, то программа использует значения по умолчанию для всех входных аргументов во время обучения.
Определить t как двоичный ученик, или один в наборе двоичных учеников, в fitcecoc для обучения мультиклассового классификатора ECOC.
возвращает шаблон с дополнительными параметрами, заданными одним или несколькими аргументами пары имя-значение.t = templateSVM(Name,Value)
Например, можно указать ограничение поля, функцию ядра или необходимость стандартизации предикторов.
При отображении t в окне команд все параметры отображаются пустыми ([]), за исключением тех, которые указаны с помощью аргументов пары имя-значение. Во время обучения программа использует значения по умолчанию для пустых параметров.
Использовать templateSVM для указания шаблона SVM по умолчанию.
t = templateSVM()
t =
Fit template for classification SVM.
Alpha: [0x1 double]
BoxConstraint: []
CacheSize: []
CachingMethod: ''
ClipAlphas: []
DeltaGradientTolerance: []
Epsilon: []
GapTolerance: []
KKTTolerance: []
IterationLimit: []
KernelFunction: ''
KernelScale: []
KernelOffset: []
KernelPolynomialOrder: []
NumPrint: []
Nu: []
OutlierFraction: []
RemoveDuplicates: []
ShrinkagePeriod: []
Solver: ''
StandardizeData: []
SaveSupportVectors: []
VerbosityLevel: []
Version: 2
Method: 'SVM'
Type: 'classification'
Все свойства объекта шаблона пусты, кроме Method и Type. Когда вы проходите t для функции обучения программа заполняет пустые свойства соответствующими значениями по умолчанию. Например, программное обеспечение заполняет KernelFunction свойство с 'linear'. Дополнительные сведения о других значениях по умолчанию см. в разделе fitcsvm.
t является планом для учащегося SVM, и никакие вычисления не выполняются при его указании. Вы можете пройти t кому fitcecoc определение двоичных обучающихся SVM для многоклассного обучения ECOC. Однако по умолчанию fitcecoc использует двоичных учеников SVM по умолчанию.
Создание шаблона SVM по умолчанию для использования в fitcecoc.
Загрузите набор данных радужки Фишера.
load fisheririsСоздайте шаблон для двоичных классификаторов SVM и укажите использование функции ядра Гаусса.
t = templateSVM('KernelFunction','gaussian')
t =
Fit template for classification SVM.
Alpha: [0x1 double]
BoxConstraint: []
CacheSize: []
CachingMethod: ''
ClipAlphas: []
DeltaGradientTolerance: []
Epsilon: []
GapTolerance: []
KKTTolerance: []
IterationLimit: []
KernelFunction: 'gaussian'
KernelScale: []
KernelOffset: []
KernelPolynomialOrder: []
NumPrint: []
Nu: []
OutlierFraction: []
RemoveDuplicates: []
ShrinkagePeriod: []
Solver: ''
StandardizeData: []
SaveSupportVectors: []
VerbosityLevel: []
Version: 2
Method: 'SVM'
Type: 'classification'
Все свойства объекта шаблона пусты, кроме DistributionNames, Method, и Type. После обучения программа заполняет пустые свойства соответствующими значениями по умолчанию.
Определить t как двоичный ученик для многоклассовой модели ECOC.
Mdl = fitcecoc(meas,species,'Learners',t);Mdl является ClassificationECOC мультиклассовый классификатор. По умолчанию программное обеспечение проходит Mdl использование конструкции кодирования «один против одного».
Просмотрите ошибку неправильной классификации в выборке (повторная выборка).
L = resubLoss(Mdl,'LossFun','classiferror')
L = 0.0200
При обучении модели ECOC с линейными двоичными учениками SVM fitcecoc опустошает Alpha, SupportVectorLabels, и SupportVectors свойства двоичных учеников по умолчанию. Вместо этого можно сохранить векторы поддержки и связанные значения, а затем удалить их из модели.
Загрузите набор данных радужки Фишера.
load fisheriris rng(1); % For reproducibility
Обучение модели ECOC с использованием всего набора данных. Укажите сохранение векторов поддержки путем передачи соответствующего шаблона SVM.
t = templateSVM('SaveSupportVectors',true); MdlSV = fitcecoc(meas,species,'Learners',t);
MdlSV является обученным ClassificationECOC модель с линейными двоичными учащимися SVM. По умолчанию fitcecoc реализует схему кодирования «один против одного», которая требует трех двоичных учеников для трехклассного обучения.
Доступ к расчетным значениям α (alpha) с помощью точечного обозначения.
alpha = cell(3,1);
alpha{1} = MdlSV.BinaryLearners{1}.Alpha;
alpha{2} = MdlSV.BinaryLearners{2}.Alpha;
alpha{3} = MdlSV.BinaryLearners{3}.Alpha;
alphaalpha=3×1 cell array
{ 3x1 double}
{ 3x1 double}
{23x1 double}
alpha - массив ячеек 3 на 1, в котором хранятся оцененные значения .
Удалите векторы поддержки и связанные значения из модели ECOC.
Mdl = discardSupportVectors(MdlSV);
Mdl аналогичен MdlSV, за исключением того, что Alpha, SupportVectorLabels, и SupportVectors свойства всех линейных двоичных учеников SVM пусты ([]).
areAllEmpty = @(x)isempty([x.Alpha x.SupportVectors x.SupportVectorLabels]); cellfun(areAllEmpty,Mdl.BinaryLearners)
ans = 3x1 logical array
1
1
1
Сравните размеры двух моделей ECOC.
vars = whos('Mdl','MdlSV'); 100*(1 - vars(1).bytes/vars(2).bytes)
ans = 4.7075
Mdl примерно на 5% меньше, чем MdlSV.
Сократите использование памяти за счет сжатия Mdl а затем очистка Mdl и MdlSV из рабочей области.
CompactMdl = compact(Mdl); clear Mdl MdlSV;
Прогнозирование метки для случайной строки обучающих данных с использованием более эффективной модели SVM.
idx = randsample(size(meas,1),1)
idx = 63
predictedLabel = predict(CompactMdl,meas(idx,:))
predictedLabel = 1x1 cell array
{'versicolor'}
trueLabel = species(idx)
trueLabel = 1x1 cell array
{'versicolor'}
Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.
'BoxConstraint',0.1,'KernelFunction','gaussian','Standardize',1 задает ограничение поля для 0.1, для использования ядра Gaussian (RBF) и стандартизации предикторов.'BoxConstraint' - Ограничение коробкиОграничение поля, указанное как пара, разделенная запятыми, состоящая из 'BoxConstraint' и положительный скаляр.
Для одноклассного обучения программа всегда устанавливает ограничение поля на 1.
Для получения более подробной информации о взаимоотношениях и алгоритмическом поведении BoxConstraint, Cost, Prior, Standardize, и Weights, см. Алгоритмы.
Пример: 'BoxConstraint',100
Типы данных: double | single
'CacheSize' - Размер кэша1000 (по умолчанию) | 'maximal' | положительный скалярРазмер кэша, указанный как разделенная запятыми пара, состоящая из 'CacheSize' и 'maximal' или положительный скаляр.
Если CacheSize является 'maximal', то программное обеспечение резервирует достаточно памяти для хранения всей матрицы n-на-n Gram.
Если CacheSize является положительным скаляром, то программное обеспечение резервирует CacheSize мегабайт памяти для обучения модели.
Пример: 'CacheSize','maximal'
Типы данных: double | single | char | string
'ClipAlphas' - Флаг для отсечения альфа-коэффициентовtrue (по умолчанию) | falseФлаг для отсечения альфа-коэффициентов, указанный как разделенная запятыми пара, состоящая из 'ClipAlphas' и либо true или false.
Предположим, что альфа-коэффициент для наблюдения j равен αj, а ограничение поля для наблюдения j равно Cj, j = 1,..., n, где n - размер обучающей выборки.
| Стоимость | Описание |
|---|---|
true | При каждой итерации, если αj находится вблизи 0 или около Cj, MATLAB ® устанавливает αj в 0 или Cj соответственно. |
false | MATLAB не изменяет альфа-коэффициенты во время оптимизации. |
MATLAB сохраняет конечные значения α в Alpha свойство обучаемого объекта модели SVM.
ClipAlphas может влиять на сходимость SMO и ISDA.
Пример: 'ClipAlphas',false
Типы данных: logical
'DeltaGradientTolerance' - Допуск для разницы градиентовДопуск для разности градиентов между верхними и нижними нарушителями, полученный с помощью последовательной минимальной оптимизации (SMO) или итерационного алгоритма одиночных данных (ISDA), указанного как пара, разделенная запятыми, состоящая из 'DeltaGradientTolerance' и неотрицательный скаляр.
Если DeltaGradientTolerance является 0, то программа не использует допуск для разности градиентов для проверки сходимости оптимизации.
Значения по умолчанию:
1e-3 если решателем является SMO (например, задается 'Solver','SMO')
0 если решателем является ISDA (например, задается 'Solver','ISDA')
Пример: 'DeltaGradientTolerance',1e-2
Типы данных: double | single
'GapTolerance' - Допуск разрыва в осуществимости0 (по умолчанию) | неотрицательный скалярДопустимая величина зазора, полученная SMO или ISDA, указанная как пара, разделенная запятыми, состоящая из 'GapTolerance' и неотрицательный скаляр.
Если GapTolerance является 0, то программное обеспечение не использует допуск зазора выполнимости для проверки сходимости оптимизации.
Пример: 'GapTolerance',1e-2
Типы данных: double | single
'IterationLimit' - Максимальное число итераций числовой оптимизации1e6 (по умолчанию) | положительное целое числоМаксимальное число итераций числовой оптимизации, указанное как пара, разделенная запятыми, состоящая из 'IterationLimit' и положительное целое число.
Программное обеспечение возвращает обученную модель независимо от того, успешно ли сходится процедура оптимизации. Mdl.ConvergenceInfo содержит информацию о сходимости.
Пример: 'IterationLimit',1e8
Типы данных: double | single
'KernelFunction' - Функция ядра'linear' | 'gaussian' | 'rbf' | 'polynomial' | имя функцииФункция ядра, используемая для вычисления элементов матрицы Gram, определяемая как разделенная запятыми пара, состоящая из 'KernelFunction' и имя функции ядра. Предположим, что G (xj, xk) является элементом (j, k) матрицы Gram, где xj и xk являются p-мерными векторами, представляющими наблюдения j и k вX. В этой таблице описываются поддерживаемые имена функций ядра и их функциональные формы.
| Имя функции ядра | Описание | Формула |
|---|---|---|
'gaussian' или 'rbf' | Ядро гауссовой или радиальной базовой функции (RBF), по умолчанию для одноклассного обучения |
−‖xj−xk‖2)
|
'linear' | Линейное ядро, по умолчанию для двухклассного обучения |
=xj′xk
|
'polynomial' | Полиномиальное ядро. Использовать 'PolynomialOrder', для указания ядра полинома порядка q. |
1+xj′xk) q
|
Можно задать собственную функцию ядра, например: kernel, путем установки 'KernelFunction','kernel'. Стоимость kernel должна иметь эту форму.
function G = kernel(U,V)
kernel.m должен находиться в пути MATLAB.
Рекомендуется избегать использования общих имен для функций ядра. Например, вызовите функцию sigmoid kernel 'mysigmoid' вместо 'sigmoid'.
Пример: 'KernelFunction','gaussian'
Типы данных: char | string
'KernelOffset' - Параметр смещения ядраПараметр смещения ядра, указанный как разделенная запятыми пара, состоящая из 'KernelOffset' и неотрицательный скаляр.
Программное обеспечение добавляет KernelOffset к каждому элементу матрицы Gram.
Значения по умолчанию:
0 если решателем является SMO (то есть задается 'Solver','SMO')
0.1 если решателем является ISDA (то есть задается 'Solver','ISDA')
Пример: 'KernelOffset',0
Типы данных: double | single
'KernelScale' - Параметр масштаба ядра1 (по умолчанию) | 'auto' | положительный скалярПараметр масштаба ядра, заданный как разделенная запятыми пара, состоящая из 'KernelScale' и 'auto' или положительный скаляр. Программное обеспечение делит все элементы матрицы предиктора X по значению KernelScale. Затем программное обеспечение применяет соответствующую норму ядра для вычисления матрицы Gram.
При указании 'auto'затем программное обеспечение выбирает соответствующий масштабный коэффициент с использованием эвристической процедуры. Эта эвристическая процедура использует субдискретизацию, поэтому оценки могут варьироваться от одного вызова к другому. Поэтому для воспроизведения результатов установите начальное число случайного числа, используя rng перед тренировкой.
При указании KernelScale и свою собственную функцию ядра, например, 'KernelFunction','kernel', то программное обеспечение выдает ошибку. Необходимо применить масштабирование в пределах kernel.
Пример: 'KernelScale','auto'
Типы данных: double | single | char | string
'KKTTolerance' - Допуск нарушения условий комплементарности Каруша-Куна-ТакераKarush-Kuhn-Tucker (KKT) условия комплементарности условия нарушения допуска, указанные как разделенная запятыми пара, состоящая из 'KKTTolerance' и неотрицательный скаляр.
Если KKTTolerance является 0, то программное обеспечение не использует допуск нарушения условий комплементарности KKT для проверки сходимости оптимизации.
Значения по умолчанию:
0 если решателем является SMO (например, задается 'Solver','SMO')
1e-3 если решателем является ISDA (например, задается 'Solver','ISDA')
Пример: 'KKTTolerance',1e-2
Типы данных: double | single
'NumPrint' - Количество итераций между выводом диагностического сообщения оптимизации1000 (по умолчанию) | неотрицательное целое числоКоличество итераций между выводом диагностического сообщения оптимизации, указанного как пара, разделенная запятыми, состоящая из 'NumPrint' и неотрицательное целое число.
При указании 'Verbose',1 и 'NumPrint',numprint, то программное обеспечение отображает все диагностические сообщения оптимизации от SMO и ISDA каждый numprint итерации в окне команд.
Пример: 'NumPrint',500
Типы данных: double | single
'OutlierFraction' - Ожидаемая доля отклонений в данных обучения0 (по умолчанию) | числовой скаляр в интервале [0,1)Ожидаемая доля отклонений в данных обучения, указанная как пара, разделенная запятыми, состоящая из 'OutlierFraction' и числовой скаляр в интервале [0,1).
Предположим, что вы установили 'OutlierFraction',outlierfraction, где outlierfraction значение больше 0.
Для двухклассного обучения программное обеспечение реализует надежное обучение. Другими словами, программное обеспечение пытается удалить 100 *outlierfraction% наблюдений, когда алгоритм оптимизации сходится. Удаленные наблюдения соответствуют градиентам, которые являются большими по величине.
Для одноклассного обучения программное обеспечение находит соответствующий термин смещения, такой, что outlierfraction из наблюдений в обучающем наборе имеют отрицательные оценки.
Пример: 'OutlierFraction',0.01
Типы данных: double | single
'PolynomialOrder' - Порядок полиномиальных функций ядра3 (по умолчанию) | положительное целое числоПорядок полиномиальных функций ядра, указанный как пара, разделенная запятыми, состоящая из 'PolynomialOrder' и положительное целое число.
Если установить 'PolynomialOrder' и KernelFunction не является 'polynomial', то программное обеспечение выдает ошибку.
Пример: 'PolynomialOrder',2
Типы данных: double | single
'SaveSupportVectors' - Хранить векторы поддержки, их метки и оцененные α-коэффициентыtrue | falseХраните векторы поддержки, их метки и оцененные α-коэффициенты как свойства результирующей модели, заданной как разделенная запятыми пара, состоящая из 'SaveSupportVectors' и true или false.
Если SaveSupportVectors является true, полученная модель хранит векторы поддержки в SupportVectors свойства, их метки в SupportVectorLabels свойство и оцененные α коэффициенты в Alpha свойство компактного, SVM учащихся.
Если SaveSupportVectors является false и KernelFunction является 'linear'результирующая модель не хранит векторы поддержки и связанные оценки.
Чтобы уменьшить потребление памяти компактными моделями SVM, укажите SaveSupportVectors.
Для линейных двоичных учеников SVM в модели ECOC значением по умолчанию является false. В противном случае значением по умолчанию является true.
Пример: 'SaveSupportVectors',true
Типы данных: logical
'ShrinkagePeriod' - количество итераций между сокращениями активного набора;0 (по умолчанию) | неотрицательное целое числоЧисло итераций между сокращениями активного набора, указанного как пара, разделенная запятыми, состоящая из 'ShrinkagePeriod' и неотрицательное целое число.
Если установить 'ShrinkagePeriod',0, то программное обеспечение не сжимает активный аппарат.
Пример: 'ShrinkagePeriod',1000
Типы данных: double | single
'Solver' - Процедура оптимизации'ISDA' | 'L1QP' | 'SMO'Процедура оптимизации, заданная как пара, разделенная запятыми, состоящая из 'Solver' и значение в этой таблице.
| Стоимость | Описание |
|---|---|
'ISDA' | Итеративный алгоритм одиночных данных (см. [30]) |
'L1QP' | Использование quadprog (Optimization Toolbox) для реализации L1 мягкой минимизации полей с помощью квадратичного программирования. Для этого параметра требуется лицензия Optimization Toolbox™. Дополнительные сведения см. в разделе Определение квадратного программирования (панель инструментов оптимизации). |
'SMO' | Последовательная минимальная оптимизация (см. [17]) |
Значение по умолчанию: 'ISDA' при установке 'OutlierFraction' к положительному значению для двухклассного обучения, и 'SMO' в противном случае.
Пример: 'Solver','ISDA'
'Standardize' - Флаг для стандартизации данных предиктораfalse (по умолчанию) | trueФлаг для стандартизации данных предиктора, указанный как пара, разделенная запятыми, состоящая из 'Standardize' и true (1) или false (0).
Если установить 'Standardize',true:
Программное обеспечение центрирует и масштабирует каждый столбец данных предиктора (X) по средневзвешенному столбцу и стандартному отклонению соответственно (для получения подробной информации о взвешенной стандартизации см. Алгоритмы). MATLAB не стандартизирует данные, содержащиеся в фиктивных столбцах переменных, созданных для категориальных предикторов.
Программное обеспечение обучает классификатор, используя стандартизированную матрицу предиктора, но сохраняет нестандартные данные в свойстве классификатора X.
Пример: 'Standardize',true
Типы данных: logical
'Verbose' - Уровень детализации0 (по умолчанию) | 1 | 2Уровень детализации, указанный как разделенная запятыми пара, состоящая из 'Verbose' и 0, 1, или 2. Значение Verbose управляет объемом информации об оптимизации, отображаемой программой в окне команд, и сохраняет эту информацию в виде структуры в Mdl.ConvergenceInfo.History.
В этой таблице представлены доступные параметры уровня детализации.
| Стоимость | Описание |
|---|---|
0 | Программа не отображает и не сохраняет информацию о сходимости. |
1 | Программа отображает диагностические сообщения и сохраняет критерии сходимости каждый numprint итерации, где numprint - значение аргумента пары имя-значение 'NumPrint'. |
2 | Программа отображает диагностические сообщения и сохраняет критерии сходимости на каждой итерации. |
Пример: 'Verbose',1
Типы данных: double | single
t - шаблон классификации SVMШаблон классификации SVM, пригодный для обучения многоклассовым моделям кода вывода с исправлением ошибок (ECOC), возвращается как объект шаблона. Проход t кому fitcecoc для указания способа создания классификатора SVM для модели ECOC.
При отображении t в окне команд все неустановленные параметры отображаются пустыми ([]). Однако во время обучения программа заменяет пустые опции соответствующими значениями по умолчанию.
По умолчанию и для эффективности, fitcecoc опустошает Alpha, SupportVectorLabels, и SupportVectors свойства для всех линейных двоичных учеников SVM. fitcecoc списки Beta, а не Alpha, на экране модели.
Сохранить Alpha, SupportVectorLabels, и SupportVectors, передать линейный шаблон SVM, который задает сохранение векторов поддержки в fitcecoc. Например, введите:
t = templateSVM('SaveSupportVectors',true) Mdl = fitcecoc(X,Y,'Learners',t);
Можно удалить векторы поддержки и связанные значения, передав результирующие ClassificationECOC модель в discardSupportVectors.
[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.
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.