Поддержите векторный шаблон машины
t = templateSVM()
t = templateSVM(Name,Value)
возвращает шаблон ученика машины вектора поддержки (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 = 3x1 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.8583
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
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: 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 1000
(значение по умолчанию) | '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'
— Допуск разрыва выполнимости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'
| имя функцииФункция ядра раньше вычисляла элементы матрицы Грамма, заданной как пара, разделенная запятой, состоящая из 'KernelFunction'
и имени функции ядра. Предположим, что G (xj, xk) является элементом (j, k) матрицы Грамма, где xj и xk является p - размерные векторы, представляющие наблюдения j и k в X
. Эта таблица описывает поддерживаемые имена функций ядра и их функциональные формы.
Имя функции ядра | Описание | Формула |
---|---|---|
'gaussian' или 'rbf' | Ядро гауссовой или Радиальной основной функции (RBF), значение по умолчанию для изучения одного класса |
|
'linear' | Линейное ядро, значение по умолчанию для изучения 2D класса |
|
'polynomial' | Полиномиальное ядро. Используйте , чтобы задать полиномиальное ядро порядка 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'
— Масштабный коэффициент ядра1
(значение по умолчанию) | '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'
— Количество итераций между сообщением диагностики оптимизации выводится1000
(значение по умолчанию) | неотрицательное целое числоКоличество итераций между сообщением диагностики оптимизации вывод, заданный как пара, разделенная запятой, состоящая из 'NumPrint'
и неотрицательным целым числом.
Если вы задаете 'Verbose',1
и 'NumPrint',numprint
, то программное обеспечение отображает все сообщения диагностики оптимизации от SMO и ISDA каждый numprint
итерации в Командном окне.
Пример: 'NumPrint',500
Типы данных: double | single
'OutlierFraction'
— Ожидаемая пропорция выбросов в данных тренировки0
(значение по умолчанию) | числовой скаляр в интервале [0,1)Ожидаемая пропорция выбросов в данных тренировки, заданных как пара, разделенная запятой, состоящая из 'OutlierFraction'
и числового скаляра в интервале [0,1).
Предположим, что вы устанавливаете 'OutlierFraction',outlierfraction
, где outlierfraction
является значением, больше, чем 0.
Для изучения 2D класса программное обеспечение реализует robust learning. Другими словами, программное обеспечение пытается удалить 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
Типы данных: логический
'ShrinkagePeriod'
— Количество итераций между сокращениями активного набора0
(значение по умолчанию) | неотрицательное целое числоКоличество итераций между сокращениями активного набора, заданного как пара, разделенная запятой, состоящая из 'ShrinkagePeriod'
и неотрицательного целого числа.
Если вы устанавливаете 'ShrinkagePeriod',0
, то программное обеспечение не уменьшает активный набор.
Пример: 'ShrinkagePeriod',1000
Типы данных: double | single
'Solver'
— Стандартная программа оптимизации'ISDA'
| 'L1QP'
| 'SMO'
Стандартная программа оптимизации, заданная как пара, разделенная запятой, состоящая из 'Solver'
и значения в этой таблице.
Значение | Описание |
---|---|
'ISDA' | Итеративный один алгоритм данных (см. [30]), |
'L1QP' | Использование quadprog , чтобы реализовать L 1 мягко-граничная минимизация квадратичным программированием. Эта опция требует лицензии Optimization Toolbox™. Для получения дополнительной информации см. Определение Квадратичного программирования (Optimization Toolbox). |
'SMO' | Последовательная минимальная оптимизация (см. [17]), |
Значением по умолчанию является 'ISDA'
для изучения 2D класса или если вы устанавливаете 'OutlierFraction'
на положительное значение и 'SMO'
в противном случае.
Пример: 'Solver','ISDA'
'Standardize'
— Отметьте, чтобы стандартизировать данные о предиктореfalse
(значение по умолчанию) | true
Отметьте, чтобы стандартизировать данные о предикторе, заданные как пара, разделенная запятой, состоящая из 'Standardize'
и true
(1
) или false
(0)
.
Если вы устанавливаете 'Standardize',true
:
Центры программного обеспечения и шкалы каждый столбец данных о предикторе (X
) взвешенным столбцом среднее и стандартное отклонение, соответственно (для получения дополнительной информации о взвешенной стандартизации, видят Алгоритмы). MATLAB не стандартизирует данные, содержавшиеся в фиктивных переменных столбцах, сгенерированных для категориальных предикторов.
Программное обеспечение обучает классификатор с помощью стандартизированной матрицы предиктора, но хранит нестандартизированные данные в свойстве X
классификатора.
Пример: 'Standardize',true
Типы данных: логический
'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] 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.