Шаблон машины опорных векторов
возвращает шаблон ученика машины опорных векторов (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
использование одного по сравнению с одного кодирующего проекта.
Отобразите в выборке (перезамена) misclassification ошибка.
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 = cell(3,1); alpha{1} = MdlSV.BinaryLearners{1}.Alpha; alpha{2} = MdlSV.BinaryLearners{2}.Alpha; alpha{3} = MdlSV.BinaryLearners{3}.Alpha; alpha
alpha=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
, использовать Гауссово ядро (RBF) и стандартизировать предикторы.'BoxConstraint'
— Ограничение поляОграничение поля в виде разделенной запятой пары, состоящей из 'BoxConstraint'
и положительная скалярная величина.
Для изучения одного класса программное обеспечение всегда устанавливает ограничение поля на 1
.
Для получения дополнительной информации об отношениях и алгоритмическом поведении BoxConstraint
, Cost
, Prior
, Standardize
, и Weights
, см. Алгоритмы.
Пример: 'BoxConstraint',100
Типы данных: double |
single
'CacheSize'
CacheSize
(значение по умолчанию) | 'maximal'
| положительная скалярная величинаРазмер кэша в виде разделенной запятой пары, состоящей из 'CacheSize'
и 'maximal'
или положительная скалярная величина.
Если CacheSize
'maximal'
, затем программное обеспечение резервирует достаточно памяти, чтобы содержать целый n-by-n матрица Грамма.
Если 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
Типы данных: логический
'DeltaGradientTolerance'
— Допуск к различию в градиентеДопуск к различию в градиенте между верхними и более низкими нарушителями, полученными Последовательной минимальной оптимизацией (SMO) или Итеративным одним алгоритмом данных (ISDA) в виде разделенной запятой пары, состоящей из 'DeltaGradientTolerance'
и неотрицательный скаляр.
Если DeltaGradientTolerance
0
, затем программное обеспечение не использует допуск к различию в градиенте, чтобы проверять на сходимость оптимизации.
Значения по умолчанию:
1e-3
если решатель является SMO (например, вы устанавливаете 'Solver','SMO'
)
0 если решатель является ISDA (например, вы устанавливаете
'Solver','ISDA'
)
Пример: 'DeltaGradientTolerance',1e-2
Типы данных: double |
single
'GapTolerance'
— Допуск разрыва выполнимости
(значение по умолчанию) | неотрицательный скалярДопуск разрыва выполнимости получен SMO или ISDA в виде разделенной запятой пары, состоящей из 'GapTolerance'
и неотрицательный скаляр.
Если GapTolerance
0
, затем программное обеспечение не использует допуск разрыва выполнимости, чтобы проверять на сходимость оптимизации.
Пример: 'GapTolerance',1e-2
Типы данных: double |
single
'IterationLimit'
— Максимальное количество числовых итераций оптимизации1e6
(значение по умолчанию) | положительное целое числоМаксимальное количество числовых итераций оптимизации в виде разделенной запятой пары, состоящей из 'IterationLimit'
и положительное целое число.
Программное обеспечение возвращает обученную модель независимо от того, сходится ли стандартная программа оптимизации успешно. Mdl.ConvergenceInfo
содержит информацию о сходимости.
Пример: 'IterationLimit',1e8
Типы данных: double |
single
'KernelFunction'
— Функция ядра'linear'
| 'gaussian'
| 'rbf'
| 'polynomial'
| имя функцииФункция ядра использовалась для расчета элементов матрицы Грамма в виде разделенной запятой пары, состоящей из 'KernelFunction'
и имя функции ядра. Предположим, что G (xj, xk) является элементом (j, k) матрицы Грамма, где xj и xk является p - размерные векторы, представляющие наблюдения j и k в X
. Эта таблица описывает поддерживаемые имена функций ядра и их функциональные формы.
Имя функции ядра | Описание | Формула |
---|---|---|
'gaussian' или 'rbf' | Ядро гауссовой или Радиальной основной функции (RBF), значение по умолчанию для изучения одного класса |
|
'linear' | Линейное ядро, значение по умолчанию для изучения 2D класса |
|
'polynomial' | Полиномиальное ядро. Используйте 'PolynomialOrder', задавать полиномиальное ядро порядка q . |
|
Можно установить собственную функцию ядра, например, kernel
, установкой 'KernelFunction','kernel'
. Значение kernel
должен иметь эту форму.
function G = kernel(U,V)
U
m-by-p матрица. Столбцы соответствуют переменным предикторам, и строки соответствуют наблюдениям.
V
n-by-p матрица. Столбцы соответствуют переменным предикторам, и строки соответствуют наблюдениям.
G
m-by-n
матрица Грамма строк U
и V
.
kernel.m
должен быть на пути MATLAB.
Это - хорошая практика, чтобы избегать использования родовых названий для функций ядра. Например, вызовите сигмоидальную функцию ядра 'mysigmoid'
вместо 'sigmoid'
.
Пример: 'KernelFunction','gaussian'
Типы данных: char |
string
'KernelOffset'
— Ядро возместило параметрЯдро возместило параметр в виде разделенной запятой пары, состоящей из 'KernelOffset'
и неотрицательный скаляр.
Программное обеспечение добавляет KernelOffset
к каждому элементу матрицы Грамма.
Значения по умолчанию:
0 если решатель является SMO (то есть, вы устанавливаете
'Solver','SMO'
)
0.1 если решатель является ISDA (то есть, вы устанавливаете
'Solver','ISDA'
)
Пример: 'KernelOffset',0
Типы данных: double |
single
'KernelScale'
— Масштабный коэффициент ядра
(значение по умолчанию) | 'auto'
| положительная скалярная величинаМасштабный коэффициент ядра в виде разделенной запятой пары, состоящей из 'KernelScale'
и 'auto'
или положительная скалярная величина. Программное обеспечение делит все элементы матрицы предиктора X
значением KernelScale
. Затем программное обеспечение применяет соответствующую норму ядра, чтобы вычислить матрицу Грамма.
Если вы задаете 'auto'
, затем программное обеспечение выбирает соответствующий масштабный коэффициент с помощью эвристической процедуры. Эта эвристическая процедура использует подвыборку, таким образом, оценки могут варьироваться от одного вызова до другого. Поэтому, чтобы воспроизвести результаты, установите использование seed случайных чисел rng
перед обучением.
Если вы задаете KernelScale
и ваша собственная функция ядра, например, 'KernelFunction','kernel'
, затем программное обеспечение выдает ошибку. Необходимо применить масштабирование в kernel
.
Пример: 'KernelScale','auto'
Типы данных: double |
single
| char
| string
'KKTTolerance'
— Допуск нарушения условий взаимозависимости Karush-Kuhn-TuckerДопуск нарушения условий взаимозависимости Karush-Kuhn-Tucker (KKT) в виде разделенной запятой пары, состоящей из 'KKTTolerance'
и неотрицательный скаляр.
Если KKTTolerance
0
, затем программное обеспечение не использует допуск нарушения условий взаимозависимости KKT, чтобы проверять на сходимость оптимизации.
Значения по умолчанию:
0 если решатель является SMO (например, вы устанавливаете
'Solver','SMO'
)
1e-3
если решатель является ISDA (например, вы устанавливаете 'Solver','ISDA'
)
Пример: 'KKTTolerance',1e-2
Типы данных: double |
single
'NumPrint'
— Количество итераций между сообщением диагностики оптимизации выводится
(значение по умолчанию) | неотрицательное целое числоКоличество итераций между сообщением диагностики оптимизации выход в виде разделенной запятой пары, состоящей из 'NumPrint'
и неотрицательное целое число.
Если вы задаете 'Verbose',1
и 'NumPrint',numprint
, затем программное обеспечение отображает все сообщения диагностики оптимизации от SMO и ISDA каждый numprint
итерации в Командном окне.
Пример: 'NumPrint',500
Типы данных: double |
single
'OutlierFraction'
— Ожидаемая пропорция выбросов в обучающих данных
(значение по умолчанию) | числовой скаляр в интервале [0,1)Ожидаемая пропорция выбросов в обучающих данных в виде разделенной запятой пары, состоящей из 'OutlierFraction'
и числовой скаляр в интервале [0,1).
Предположим, что вы устанавливаете 'OutlierFraction',outlierfraction
, где outlierfraction
значение, больше, чем 0.
Для изучения 2D класса программное обеспечение реализует robust learning. Другими словами, программное обеспечение пытается удалить 100*outlierfraction
% из наблюдений, когда алгоритм оптимизации сходится. Удаленные наблюдения соответствуют градиентам, которые являются большими в величине.
Для изучения одного класса программное обеспечение находит, что соответствующее смещение называет таким образом что outlierfraction
из наблюдений в наборе обучающих данных имеют отрицательные баллы.
Пример: 'OutlierFraction',0.01
Типы данных: double |
single
'PolynomialOrder'
— Полиномиальный порядок функции ядра
(значение по умолчанию) | положительное целое числоПолиномиальный порядок функции ядра в виде разделенной запятой пары, состоящей из '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
Типы данных: логический
'ShrinkagePeriod'
— Количество итераций между сокращениями активного набора
(значение по умолчанию) | неотрицательное целое числоКоличество итераций между сокращениями активного набора в виде разделенной запятой пары, состоящей из 'ShrinkagePeriod'
и неотрицательное целое число.
Если вы устанавливаете 'ShrinkagePeriod',0
, затем программное обеспечение не уменьшает активный набор.
Пример: 'ShrinkagePeriod',1000
Типы данных: double |
single
'Solver'
— Стандартная программа оптимизации'ISDA'
| 'L1QP'
| 'SMO'
Стандартная программа оптимизации в виде разделенной запятой пары, состоящей из 'Solver'
и значение в этой таблице.
Значение | Описание |
---|---|
'ISDA' | Итеративный один алгоритм данных (см. [30]), |
'L1QP' | Использование quadprog (Optimization Toolbox), чтобы реализовать L 1 мягко-граничная минимизация квадратичным программированием. Эта опция требует лицензии Optimization Toolbox™. Для получения дополнительной информации см. Определение Квадратичного программирования (Optimization Toolbox). |
'SMO' | Последовательная минимальная оптимизация (см. [17]), |
Значением по умолчанию является 'ISDA'
если вы устанавливаете 'OutlierFraction'
к положительному значению для изучения 2D класса и 'SMO'
в противном случае.
Пример: 'Solver','ISDA'
'Standardize'
— Отметьте, чтобы стандартизировать данные о предиктореfalse
(значение по умолчанию) | true
Отметьте, чтобы стандартизировать данные о предикторе в виде разделенной запятой пары, состоящей из 'Standardize'
и true
(1 ) или
false
(0) .
Если вы устанавливаете 'Standardize',true
:
Центры программного обеспечения и шкалы каждый столбец данных о предикторе (X
) взвешенным столбцом среднее и стандартное отклонение, соответственно (для получения дополнительной информации о взвешенной стандартизации, см. Алгоритмы). MATLAB не стандартизирует данные, содержавшиеся в фиктивных переменных столбцах, сгенерированных для категориальных предикторов.
Программное обеспечение обучает классификатор с помощью стандартизированной матрицы предиктора, но хранит нестандартизированные данные в свойстве X
классификатора.
Пример: 'Standardize',true
Типы данных: логический
'Verbose'
— Уровень многословия
(значение по умолчанию) | 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] Christianini, N. и Дж. К. Шейв-Тейлор. Введение в машины опорных векторов и другое основанное на ядре изучение методов. Кембридж, Великобритания: Издательство Кембриджского университета, 2000.
[2] Вентилятор, R.-E., P.-H. Чен и C.-J. Лин. “Выбор рабочего набора с помощью информации о втором порядке для учебных машин опорных векторов”. Журнал Исследования Машинного обучения, Vol 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.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.