Суперклассы: CompactRegressionSVM
Машина опорных векторов
RegressionSVM
является машина опорных векторов регрессионной моделью (SVM). Обучите RegressionSVM
модель с использованием fitrsvm
и выборочные данные.
RegressionSVM
модели сохраняют данные, значения параметров, векторы поддержки и информацию алгоритмической реализации. Можно использовать эти модели для:
Оцените предсказания реституции. Для получения дополнительной информации смотрите resubPredict
.
Спрогнозируйте значения для новых данных. Для получения дополнительной информации смотрите predict
.
Вычислите потери на реституцию. Для получения дополнительной информации смотрите resubLoss
.
Вычислите среднюю квадратную ошибку или нечувствительные к эпсилону потери. Для получения дополнительной информации смотрите loss
.
Создайте RegressionSVM
объект при помощи fitrsvm
.
Alpha
- Двойственные коэффициенты задачиДвойственные коэффициенты задачи, заданные как вектор числовых значений. Alpha
содержит m элементов, где m - количество поддержки векторов в обученной регрессионой модели SVM. Двойственная задача вводит два множителя Лагранжа для каждого вектора поддержки. Значения Alpha
являются различиями между двумя предполагаемыми множителями Лагранжа для поддерживающих векторов. Для получения дополнительной информации смотрите Понимание Машины опорных векторов регрессия.
Если вы задали, чтобы удалить дубликаты с помощью RemoveDuplicates
затем для определенного набора повторяющихся наблюдений, которые являются поддерживающими векторами, Alpha
содержит один коэффициент, соответствующий всему множеству. То есть MATLAB® приписывает ненулевый коэффициент одному наблюдению из множества дубликатов и коэффициенту 0
ко всем другим повторяющимся наблюдениям в наборе.
Типы данных: single
| double
Beta
- Основные линейные коэффициенты задачи'[]'
Основные линейные коэффициенты задачи, сохраненные как числовой вектор длины p, где p - количество предикторов в регрессионой модели SVM.
Значения в Beta
являются линейными коэффициентами для основной задачи оптимизации.
Если модель получена с помощью функции ядра, отличной от 'linear'
, это свойство пустое ('[]'
).
The predict
метод вычисляет предсказанные значения отклика для модели как YFIT = (X/S)×Beta + Bias
, где S
- значение шкалы ядра, сохраненное в KernelParameters.Scale
свойство.
Типы данных: single
| double
Bias
- Термин смещенияТермин смещения в регрессионной модели SVM, сохраненный в виде скалярного значения.
Типы данных: single
| double
BoxConstraints
- Прямоугольные ограничения для двойных коэффициентов задачиПрямоугольные ограничения для двойственных альфа-коэффициентов задачи, сохраненные как числовой вектор, содержащий n элементы, где n количество наблюдений в X
(Mdl.NumObservations
).
Абсолютное значение двойственного коэффициента Alpha
для наблюдения i не может превышать BoxConstraints(i)
.
Если вы задаете удаление дубликатов с помощью 'RemoveDuplicates'
затем для заданного набора повторяющихся наблюдений MATLAB суммирует прямоугольные ограничения, а затем приписывает сумму одному наблюдению и прямоугольным ограничениям 0
ко всем остальным наблюдениям в наборе.
Типы данных: single
| double
CacheInfo
- Информация о кэшированииИнформация о кэшировании, сохраненная как структура со следующими полями.
Область | Описание |
---|---|
'Size' | Положительное скалярное значение, указывающее размер кэша (в МБ), который программное обеспечение резервирует для хранения записей матрицы Gram. Установите размер кэша при помощи 'CacheSize' аргумент пары "имя-значение" в fitrsvm . |
'Algorithm' | Вектор символов, содержащий имя алгоритма, используемого для удаления записей из кэша при превышении его емкости. В настоящее время единственным доступным алгоритмом кэширования является 'Queue' . Вы не можете задать алгоритм кэширования. |
Типы данных: struct
CategoricalPredictors
- Индексы категориальных предикторовКатегориальные индексы предиктора, заданные как вектор положительных целых чисел. CategoricalPredictors
содержит значения индекса, соответствующие столбцам данных предиктора, которые содержат категориальные предикторы. Если ни один из предикторов не является категориальным, то это свойство пустое ([]
).
Типы данных: single
| double
ConvergenceInfo
- Информация о сходимостиИнформация о сходимости, сохраненная как структура со следующими полями.
Область | Описание |
---|---|
Converged | Логический флаг, указывающий, сходился ли алгоритм. Значение 1 указывает на сходимость. |
ReasonForConvergence | Вектор символов, указывающий критерий, используемый программным обеспечением для обнаружения сходимости. |
Gap | Скалярная погрешность осуществимости между двойственной и основной целевыми функциями. |
GapTolerance | Скалярный допуск для погрешности выполнимости. Вы можете задать этот допуск с помощью 'GapTolerance' аргумент пары "имя-значение" в fitrsvm . |
DeltaGradient | Скалярное различие градиентов между верхним и нижним нарушителями. |
DeltaGradientTolerance | Скалярный допуск для различия градиентов. Вы можете задать этот допуск с помощью DeltaGradientTolerance аргумент пары "имя-значение" в fitrsvm . |
LargestKKTViolation | Максимальный скаляр нарушения Каруша-Куна-Такера (KKT). |
KKTTolerance | Скалярный допуск для наибольшего нарушения KKT. Вы можете задать этот допуск с помощью 'KKTTolerance' аргумент пары "имя-значение" в fitrsvm . |
History | Структура, содержащая информацию о сходимости, записанную через периодические интервалы во время процесса обучения модели. Эта структура содержит следующие поля:
|
Objective | Числовое значение двойственной цели. |
Типы данных: struct
Epsilon
- Половина ширины эпсилонно-нечувствительной полосыПоловина ширины эпсилонно-нечувствительной полосы, сохраненная как неотрицательное скалярное значение.
Типы данных: single
| double
ExpandedPredictorNames
- Расширенные имена предикторовРасширенные имена предикторов, сохраненные как массив ячеек из векторов символов.
Если модель использует кодировку для категориальных переменных, то ExpandedPredictorNames
включает имена, которые описывают расширенные переменные. В противном случае ExpandedPredictorNames
то же, что и PredictorNames
.
Типы данных: cell
Gradient
- Значения градиента в обучающих данныхЗначения градиента в обучающих данных, сохраненные как числовой вектор, содержащий 2 n элемента, где n количество наблюдений в обучающих данных.
Элементный i Gradient
содержит значение градиента для Alpha
коэффициент, который соответствует верхнему контуру эпсилонно-нечувствительной полосы при наблюдении i в конце оптимизации.
Элементный i + NumObservations Gradient
содержит значение градиента для Alpha
коэффициент, который соответствует нижнему контуру эпсилонно-нечувствительной полосы при наблюдении i в конце оптимизации.
Типы данных: single
| double
HyperparameterOptimizationResults
- Оптимизация гиперпараметров перекрестной валидацииBayesianOptimization
таблица | объектаЭто свойство доступно только для чтения.
Оптимизация гиперпараметров перекрестной валидации, заданная как BayesianOptimization
объект или таблица гиперпараметров и связанных значений. Это свойство непусто, если 'OptimizeHyperparameters'
аргумент пары "имя-значение" не пуст при создании модели. Значение HyperparameterOptimizationResults
зависит от настройки Optimizer
поле в HyperparameterOptimizationOptions
структура при создании модели.
Значение Optimizer Область | Значение HyperparameterOptimizationResults |
---|---|
'bayesopt' (по умолчанию) | Объект BayesianOptimization классов |
'gridsearch' или 'randomsearch' | Таблица используемых гиперпараметров, наблюдаемых значений целевой функции (потери перекрестной валидации) и ранг наблюдений от самого низкого (лучшего) до самого высокого (худшего) |
IsSupportVector
- Флаг, указывающий, является ли наблюдение поддерживающим векторомФлаг, указывающий, является ли наблюдение поддерживающим вектором, сохраненным как n-на-1 логический вектор. n - количество наблюдений в X
(см. NumObservations
). Значение 1
указывает, что соответствующее наблюдение в обучающих данных является вектором поддержки.
Если вы задаете удаление дубликатов с помощью RemoveDuplicates
, затем для заданного набора повторяющихся наблюдений, которые являются поддерживающими векторами, IsSupportVector
флаги только один в качестве вектора- поддержка.
Типы данных: logical
KernelParameters
- Параметры функции ядраПараметры функции ядра, сохраненные как структура со следующими полями.
Область | Описание |
---|---|
Function
| Имя функции ядра (a вектора символов). |
Scale | Численный масштабный коэффициент, используемый для деления значений предиктора. |
Можно задать значения для KernelParameters.Function
и KernelParameters.Scale
при помощи KernelFunction
и KernelScale
аргументы пары "имя-значение" в fitrsvm
, соответственно.
Типы данных: struct
ModelParameters
- Значения параметровЗначения параметров, используемые для обучения регрессионой модели SVM, хранятся как объект параметра модели. Доступ к свойствам ModelParameters
использование записи через точку. Для примера получите доступ к значению Epsilon
используется для обучения модели следующим Mdl.ModelParameters.Epsilon
.
Mu
- Предиктор означает'[]'
Предиктор означает, сохраненный как вектор числовых значений.
Если предикторы стандартизированы, то Mu
является числовым вектором длины p, где p - количество предикторов, используемых для обучения модели. В этом случае predict
матрица предикторов центров методов X
путем вычитания соответствующего элемента Mu
из каждого столбца.
Если предикторы не стандартизированы, то Mu
пуст ('[]'
).
Если данные содержат категориальные предикторы, то Mu
включает элементы для фиктивных переменных для этих предикторов. Соответствующие записи в Mu
0, поскольку фиктивные переменные не центрированы или не масштабированы.
Типы данных: single
| double
NumIterations
- Количество итераций, необходимых для сходимостиКоличество итераций, необходимых для достижения сходимости в стандартной программе оптимизации, сохраненных в виде положительного целого значения.
Чтобы установить предел на количество итераций, используйте 'IterationLimit'
Аргумент пары "имя-значение" из fitrsvm
.
Типы данных: single
| double
NumObservations
- Количество наблюденийКоличество наблюдений в обучающих данных, сохраненных в виде положительного целого значения.
Типы данных: single
| double
PredictorNames
- Имена предикторовИмена предиктора, сохраненные как массив ячеек из векторов символов, содержащих имя каждого предиктора в том порядке, в котором они появляются X
. PredictorNames
имеет длину, равную количеству столбцов в X
.
Типы данных: cell
OutlierFraction
- Ожидаемая доля выбросовОжидаемая доля выбросов в набор обучающих данных, сохраненная в виде скалярного значения в область значений [0,1]. Можно задать ожидаемую долю выбросов с помощью 'OutlierFraction'
аргумент пары "имя-значение" в fitrsvm
.
Типы данных: double
ResponseName
- Имя переменной откликаИмя переменной отклика, сохраненное как вектор символов.
Типы данных: char
ResponseTransform
- Функция преобразования отклика'none'
| указатель на функциюФункция преобразования отклика, заданная как 'none'
или указатель на функцию. ResponseTransform
описывает, как программное обеспечение преобразует значения необработанного отклика.
Для функции MATLAB или функции, которую вы задаете, введите указатель на функцию. Для примера можно ввести Mdl.ResponseTransform = @function
, где function
принимает числовой вектор исходных откликов и возвращает числовой вектор того же размера, содержащий преобразованные отклики.
Типы данных: char
| function_handle
ShrinkagePeriod
- Количество итераций между сокращениями активного набораКоличество итераций между сокращениями активного множества во время оптимизации, сохраненное в виде неотрицательного целого значения.
Период усадки можно задать при помощи 'ShrinkagePeriod'
аргумент пары "имя-значение" в fitrsvm
.
Типы данных: single
| double
Sigma
- Стандартные отклонения предиктора'[]'
Стандартные отклонения предиктора, сохраненные как вектор числовых значений.
Если предикторы стандартизированы, то Sigma
является числовым вектором длины p, где p - количество предикторов, используемых для обучения модели. В этом случае predict
метод масштабирует матрицу предиктора X
путем деления каждого столбца на соответствующий элемент Sigma
, после центрирования каждого элемента с помощью Mu
.
Если предикторы не стандартизированы, то Sigma
пуст ('[]'
).
Если данные содержат категориальные предикторы, Sigma
включает элементы для фиктивных переменных для этих предикторов. Соответствующие записи в Sigma
1, потому что фиктивные переменные не центрированы или не масштабированы.
Типы данных: single
| double
Solver
- Имя алгоритма решателяИмя алгоритма решателя, используемого для решения задачи оптимизации, сохраненное как значение в этой таблице.
Значение | Описание |
---|---|
'SMO' | Последовательная минимальная оптимизация |
'ISDA' | Итерационный алгоритм единичных данных |
'L1QP' | L1 минимизацию мягкого запаса путем квадратичного программирования (требует лицензии Optimization Toolbox™). |
SupportVectors
- Поддерживающие векторыПоддерживающие векторы, сохраненные как m -by - p матрица числовых значений. m - количество векторов поддержки (sum(Mdl.IsSupportVector)
), и p количество предикторов в X
.
Если вы задали, чтобы удалить дубликаты с помощью RemoveDuplicates
, затем для заданного набора повторяющихся наблюдений, которые являются поддерживающими векторами, SupportVectors
содержит один уникальный вектор поддержки.
Типы данных: single
| double
W
- Веса наблюденийВеса наблюдений, используемые для обучения модели, сохраняются как числовой вектор, содержащий NumObservation
количество элементов. fitrsvm
нормализует веса, используемые для обучения, так, чтобы их сумма равнялась 1.
Типы данных: single
| double
X
- Значения предиктораПредикторные значения, используемые для обучения модели, хранятся в виде матрицы числовых значений, если модель обучена на матрице, или таблицы, если модель обучена на таблице. X
имеет размер n -by - p, где n - количество строк, а p - количество переменных предиктора или столбцов в обучающих данных.
Типы данных: single
| double
| table
Y
- Наблюдаемые значения откликаНаблюдаемые значения отклика, сохраненные как числовой вектор, содержащий NumObservations
количество элементов.
Типы данных: single
| double
compact | Компактная машина опорных векторов |
crossval | Перекрестная проверенная модель регрессии машины опорных векторов |
discardSupportVectors | Сбросьте поддерживающие векторы |
incrementalLearner | Преобразуйте машину опорных векторов (SVM) регрессионую модель в инкрементальную обучающуюся |
lime | Локальные интерпретируемые модели-агностические объяснения (LIME) |
loss | Ошибка регрессии для модели регрессии машины опорных векторов |
partialDependence | Вычисление частичной зависимости |
plotPartialDependence | Создайте график частичной зависимости (PDP) и отдельные графики условного ожидания (ICE) |
predict | Спрогнозируйте ответы, используя модель машины опорных векторов |
resubLoss | Реституционные потери для модели регрессии машины опорных векторов |
resubPredict | Предсказать ответ реституции модели регрессии машины опорных векторов |
resume | Возобновите обучение машины опорных векторов регрессионую модель |
shapley | Значения Shapley |
Значение. Чтобы узнать, как классы значений влияют на операции копирования, см. раздел «Копирование объектов».
Этот пример показывает, как обучить регрессионую модель линейной машины опорных векторов (SVM) с использованием выборочных данных, хранящихся в матрицах.
Загрузите carsmall
набор данных.
load carsmall rng default % for reproducibility
Задайте Horsepower
и Weight
как переменные предиктора (X
) и MPG
как переменная отклика (Y
).
X = [Horsepower,Weight]; Y = MPG;
Обучите линейную регрессионую модель SVM.
Mdl = fitrsvm(X,Y)
Mdl = RegressionSVM ResponseName: 'Y' CategoricalPredictors: [] ResponseTransform: 'none' Alpha: [75x1 double] Bias: 57.3958 KernelParameters: [1x1 struct] NumObservations: 93 BoxConstraints: [93x1 double] ConvergenceInfo: [1x1 struct] IsSupportVector: [93x1 logical] Solver: 'SMO' Properties, Methods
Командное окно показывает, что Mdl
является обученным RegressionSVM
модель и список ее свойств.
Проверьте модель на сходимость.
Mdl.ConvergenceInfo.Converged
ans = logical
0
0
указывает, что модель не сходилась.
MdlStd = fitrsvm(X,Y,'Standardize',true)
MdlStd = RegressionSVM ResponseName: 'Y' CategoricalPredictors: [] ResponseTransform: 'none' Alpha: [77x1 double] Bias: 22.9131 KernelParameters: [1x1 struct] Mu: [109.3441 2.9625e+03] Sigma: [45.3545 805.9668] NumObservations: 93 BoxConstraints: [93x1 double] ConvergenceInfo: [1x1 struct] IsSupportVector: [93x1 logical] Solver: 'SMO' Properties, Methods
Проверьте модель на сходимость.
MdlStd.ConvergenceInfo.Converged
ans = logical
1
1
указывает, что модель действительно сходилась.
Вычислите среднюю квадратичную невязку восстановления для новой модели.
lStd = resubLoss(MdlStd)
lStd = 17.0256
Обучите модель регрессии машины опорных векторов, используя данные abalone из репозитория машинного обучения UCI.
Загрузите данные и сохраните их в текущей папке с именем 'abalone.csv'
.
url = 'https://archive.ics.uci.edu/ml/machine-learning-databases/abalone/abalone.data'; websave('abalone.csv',url);
Считайте данные в таблицу. Задайте имена переменных.
varnames = {'Sex'; 'Length'; 'Diameter'; 'Height'; 'Whole_weight';... 'Shucked_weight'; 'Viscera_weight'; 'Shell_weight'; 'Rings'}; Tbl = readtable('abalone.csv','Filetype','text','ReadVariableNames',false); Tbl.Properties.VariableNames = varnames;
В выборочные данные содержится 4177 наблюдений. Все переменные предиктора непрерывны, кроме Sex
, которая является категориальной переменной с возможными значениями 'M'
(для мужчин), 'F'
(для женщин), и 'I'
(для младенцев). Цель состоит в том, чтобы предсказать количество звонков (хранящихся в Rings
) на абалоне и определить ее возраст с помощью физических измерений.
Обучите регрессионую модель SVM, используя функцию Гауссова ядра с автоматической шкалой ядра. Стандартизируйте данные.
rng default % For reproducibility Mdl = fitrsvm(Tbl,'Rings','KernelFunction','gaussian','KernelScale','auto',... 'Standardize',true)
Mdl = RegressionSVM PredictorNames: {1×8 cell} ResponseName: 'Rings' CategoricalPredictors: 1 ResponseTransform: 'none' Alpha: [3635×1 double] Bias: 10.8144 KernelParameters: [1×1 struct] Mu: [1×10 double] Sigma: [1×10 double] NumObservations: 4177 BoxConstraints: [4177×1 double] ConvergenceInfo: [1×1 struct] IsSupportVector: [4177×1 logical] Solver: 'SMO'
Командное окно показывает, что Mdl
является обученным RegressionSVM
Модель и отображения список свойств.
Отображение свойств Mdl
использование записи через точку. Для примера проверьте, сходилась ли модель и сколько итераций она завершила.
conv = Mdl.ConvergenceInfo.Converged iter = Mdl.NumIterations
conv = logical 1 iter = 2759
Возвращенные результаты указывают, что модель сходилась после 2759 итераций.
[1] Нэш, У. Дж., Т. Л. Селлерс, С. Р. Тальбот, А. Дж. Коуторн и У. Б. Форд. "Популяционная биология Абалоне (виды Haliotis) в Тасмании. I. Blacklip Abalone (H. rubra) с Северного побережья и островов пролива Басс ". Деление морского рыболовства, технический доклад № 48, 1994 год.
[2] Waugh, S. «Extending and Benchmarking Cascade-Correlation: Extensions to the Cascade-Correlation Architecture and Benchmarking of Feed-Forward Supervied Neural Networds». Тасманийский университет, кафедра компьютерных наук, 1995 год.
[3] Кларк, Д., З. Шретер, А. Адамс. «A Quantitative Comparison of Dystal and Backpropagation». представлено на Австралийской конференции по нейронным сетям, 1996.
[4] Лихман, M. UCI Machine Learning Repository, [http://archive.ics.uci.edu/ml]. Ирвин, Калифорнийский университет, Школа информации и компьютерных наук.
Указания и ограничения по применению:
Чтобы интегрировать предсказание регрессионой модели SVM в Simulink®, можно использовать блок RegressionSVM Predict в библиотеке Statistics and Machine Learning Toolbox™ или блок MATLAB Function с predict
функция.
Когда вы обучаете регрессионую модель SVM при помощи fitrsvm
, применяются следующие ограничения.
Значение 'ResponseTransform'
аргумент пары "имя-значение" должен быть 'none'
(по умолчанию).
Для генерации кода с фиксированной точкой, значение 'KernelFunction'
аргумент пары "имя-значение" должен быть 'gaussian'
, 'linear'
, или 'polynomial'
.
Генерация кода с фиксированной точкой и генерация кода с помощью конфигуратора кодера не поддерживают категориальные предикторы (logical
, categorical
, char
, string
, или cell
). Вы не можете использовать 'CategoricalPredictors'
аргумент имя-значение.
Чтобы включить категориальные предикторы в модель, предварительно обработайте их с помощью dummyvar
перед подгонкой модели.
Для получения дополнительной информации смотрите Введение в генерацию кода.
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.