Суперклассы: CompactRegressionSVM
Модель регрессии машины опорных векторов
RegressionSVM
модель регрессии машины опорных векторов (SVM). Обучите RegressionSVM
использование модели fitrsvm
и выборочные данные.
RegressionSVM
модели хранят данные, значения параметров, поддерживают векторы и алгоритмическую информацию о реализации. Можно использовать эти модели для:
Оцените предсказания перезамены. Для получения дополнительной информации смотрите resubPredict
.
Предскажите значения для новых данных. Для получения дополнительной информации смотрите predict
.
Вычислите потерю перезамены. Для получения дополнительной информации смотрите resubLoss
.
Вычислите среднеквадратичную погрешность или нечувствительную к эпсилону потерю. Для получения дополнительной информации смотрите loss
.
Создайте RegressionSVM
объект при помощи fitrsvm
.
Alpha
— Двойные проблемные коэффициентыДвойные проблемные коэффициенты в виде вектора из числовых значений. Alpha
содержит элементы m, где m является количеством векторов поддержки в обученной модели регрессии SVM. Двойная проблема вводит два множителя Лагранжа для каждого вектора поддержки. Значения Alpha
различия между двумя предполагаемыми множителями Лагранжа для векторов поддержки. Для получения дополнительной информации смотрите Регрессию Машины опорных векторов Понимания.
Если вы задали, чтобы удалить копии с помощью RemoveDuplicates
, затем, для определенного набора дублирующихся наблюдений, которые являются векторами поддержки, Alpha
содержит один коэффициент, соответствующий целому набору. That is, MATLAB® приписывает ненулевой коэффициент одному наблюдению от набора копий и коэффициент 0
ко всем другим дублирующимся наблюдениям в наборе.
Типы данных: single
| double
Beta
— Основные коэффициенты линейной задачи'[]'
Основные коэффициенты линейной задачи, сохраненные как числовой вектор из длины p, где p является количеством предикторов в модели регрессии SVM.
Значения в Beta
линейные коэффициенты для основной задачи оптимизации.
Если модель получена с помощью функции ядра кроме 'linear'
, это свойство пусто ('[]'
).
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' | Значение положительной скалярной величины, указывающее на размер кэша (в Мбайте), который программное обеспечение резервирует, чтобы сохранить записи матрицы Грамма. Установите размер кэша при помощи 'CacheSize' аргумент пары "имя-значение" в fitrsvm . |
'Algorithm' | Вектор символов, содержащий имя алгоритма, используемого, чтобы удалить записи из кэша, когда его способность превышена. В настоящее время единственным доступным алгоритмом кэширования является 'Queue' . Вы не можете установить алгоритм кэширования. |
Типы данных: struct
CategoricalPredictors
— Индексы категориальных предикторовКатегориальные индексы предиктора в виде вектора из положительных целых чисел. CategoricalPredictors
содержит значения индекса, соответствующие столбцам данных о предикторе, которые содержат категориальные предикторы. Если ни один из предикторов не является категориальным, то это свойство пусто ([]
).
Типы данных: single
| double
ConvergenceInfo
— Информация о сходимостиИнформация сходимости, хранившая как структура со следующими полями.
Поле | Описание |
---|---|
Converged | Логический флаг, указывающий, сходился ли алгоритм. Значение 1 указывает на сходимость. |
ReasonForConvergence | Вектор символов, указывающий на критерий программное обеспечение раньше, обнаруживал сходимость. |
Gap | Скалярный разрыв выполнимости между двойными и основными целевыми функциями. |
GapTolerance | Скалярный допуск к разрыву выполнимости. Можно установить эту погрешность с помощью 'GapTolerance' аргумент пары "имя-значение" в fitrsvm . |
DeltaGradient | Скалярное различие в градиенте между верхними и более низкими нарушителями. |
DeltaGradientTolerance | Скалярный допуск к различию в градиенте. Можно установить эту погрешность с помощью DeltaGradientTolerance аргумент пары "имя-значение" в fitrsvm . |
LargestKKTViolation | Максимальное скалярное значение нарушения Karush-Kuhn-Tucker (KKT). |
KKTTolerance | Скалярный допуск к самому большому нарушению KKT. Можно установить эту погрешность с помощью 'KKTTolerance' аргумент пары "имя-значение" в fitrsvm . |
History | Структура, содержащая информацию о сходимости, зарегистрирована в периодических интервалах во время учебного процесса модели. Эта структура содержит следующие поля:
|
Objective | Числовое значение двойной цели. |
Типы данных: struct
Epsilon
— Половина ширины нечувствительной к эпсилону полосыПоловина ширины нечувствительной к эпсилону полосы, сохраненной как неотрицательное скалярное значение.
Типы данных: single
| double
ExpandedPredictorNames
— Расширенные имена предиктораРасширенные имена предиктора, сохраненные как массив ячеек из символьных векторов.
Если кодирование использования модели для категориальных переменных, то ExpandedPredictorNames
включает имена, которые описывают расширенные переменные. В противном случае, ExpandedPredictorNames
совпадает с PredictorNames
.
Типы данных: cell
Gradient
— Значения градиента в обучающих данныхЗначения градиента в обучающих данных, хранимых как числовой вектор, содержащий 2n элементы, где 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-by-1 логический вектор. n является количеством наблюдений в X
(см. NumObservations
). Значение 1
указывает, что соответствующее наблюдение в обучающих данных является вектором поддержки.
Если вы задаете копии удаления с помощью RemoveDuplicates
, затем для данного набора дублирующихся наблюдений, которые являются векторами поддержки, IsSupportVector
флаги только один как вектор поддержки.
Типы данных: логический
KernelParameters
— Параметры функции ядраПараметры функции ядра, сохраненные как структура следующими полями.
Поле | Описание |
---|---|
Function
| Имя функции ядра (вектор символов). |
Scale | Числовой масштабный коэффициент раньше делил значения предиктора. |
Можно задать значения для KernelParameters.Function
и KernelParameters.Scale
при помощи KernelFunction
и KernelScale
аргументы пары "имя-значение" в fitrsvm
, соответственно.
Типы данных: struct
ModelParameters
— Значения параметровЗначения параметров раньше обучали модель регрессии SVM, сохраненную как объект параметра модели. Доступ к свойствам ModelParameters
использование записи через точку. Например, получите доступ к значению Epsilon
используемый, чтобы обучить модель как Mdl.ModelParameters.Epsilon
.
Mu
— Средние значения предиктора'[]'
Средние значения предиктора, сохраненные как вектор из числовых значений.
Если предикторы стандартизированы, то Mu
числовой вектор из длины p, где p является количеством предикторов, используемых, чтобы обучить модель. В этом случае, predict
метод сосредотачивает матрицу предиктора X
путем вычитания соответствующего элемента Mu
из каждого столбца.
Если предикторы не стандартизированы, то Mu
isempty
).
Если данные содержат категориальные предикторы, то 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
isempty
).
Если данные содержат категориальные предикторы, 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) в инкрементного ученика |
loss | Ошибка регрессии для модели регрессии машины опорных векторов |
partialDependence | Вычислите частичную зависимость |
plotPartialDependence | Создайте графики отдельного условного ожидания (ICE) и частичный график зависимости (PDP) |
predict | Предскажите ответы с помощью модели регрессии машины опорных векторов |
resubLoss | Потеря перезамены для модели регрессии машины опорных векторов |
resubPredict | Предскажите ответ перезамены модели регрессии машины опорных векторов |
resume | Возобновите учебную модель регрессии машины опорных векторов |
Значение. Чтобы узнать, как классы значений влияют на операции копирования, см. раздел "Копирование объектов".
В этом примере показано, как обучить линейную модель регрессии машины опорных векторов (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.3800 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
Обучите модель регрессии машины опорных векторов использование данных о морском ушке из Репозитория Машинного обучения 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;
Выборочные данные содержат 4 177 наблюдений. Все переменные предикторы непрерывны за исключением 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
Возвращенные результаты показывают, что модель сходилась после 2 759 итераций.
[1] Нэш, W.J., Т. Л. Селлерс, С. Р. Тэлбот, А. Дж. Которн и В. Б. Форд. Биология Населения Морского ушка (разновидности Haliotis) на Тасмании. I. Морское ушко Blacklip (H. rubra) от Северного Побережья и Островов Пролива Басса, Морского Деления Рыболовства, Технического отчета № 48, 1994.
[2] Во, S. Расширяя и Каскадная Корреляция сравнительного тестирования, Ph.D. тезис, Кафедра информатики, Университет Тасмании, 1995.
[3] Кларк, D., З. Шретер, А. Адамс. Количественное Сравнение Dystal и Backpropagation, представленного австралийской Конференции по Нейронным сетям, 1996.
[4] Личмен, M. Репозиторий Машинного обучения UCI, [http://archive.ics.uci.edu/ml]. Ирвин, CA: Калифорнийский университет, Школа Информатики и вычислительной техники.
Указания и ограничения по применению:
Чтобы интегрировать предсказание модели регрессии SVM в Simulink®, можно использовать блок RegressionSVM Predict в библиотеке Statistics and Machine Learning Toolbox™ или блоке MATLAB function с predict
функция.
Когда вы обучаете модель регрессии SVM при помощи fitrsvm
, следующие ограничения применяются.
Генерация кода не поддерживает категориальные предикторы (logical
категориальный
'char'
Строка
, или cell
). Если вы снабжаете обучающими данными в таблице, предикторы должны быть числовыми (double
или single
). Кроме того, вы не можете использовать 'CategoricalPredictors'
пара "имя-значение" argument.To включает категориальные предикторы в модель, предварительно обрабатывает категориальные предикторы при помощи dummyvar
прежде, чем подбирать модель.
Значение 'ResponseTransform'
аргументом пары "имя-значение" должен быть 'none'
(значение по умолчанию).
Для генерации фиксированной точки, значения 'KernelFunction'
аргументом пары "имя-значение" должен быть 'gaussian'
, 'linear'
, или 'polynomial'
.
Для получения дополнительной информации смотрите Введение в Генерацию кода.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.