Класс RegressionSVM

Суперклассы: CompactRegressionSVM

Поддержите векторную модель регрессии машины

Описание

RegressionSVM является моделью регрессии машины вектора поддержки (SVM). Обучите модель RegressionSVM с помощью fitrsvm и выборочных данных.

Модели RegressionSVM хранят данные, значения параметров, поддерживают векторы и алгоритмическую информацию о реализации. Можно использовать эти модели для:

  • Оцените прогнозы перезамены. Для получения дополнительной информации смотрите resubPredict.

  • Предскажите значения для новых данных. Для получения дополнительной информации смотрите predict.

  • Вычислите потерю перезамены. Для получения дополнительной информации смотрите resubLoss.

  • Вычислите среднеквадратичную погрешность или нечувствительную к эпсилону потерю. Для получения дополнительной информации смотрите loss.

Конструкция

Создайте объект RegressionSVM при помощи fitrsvm.

Свойства

развернуть все

Двойные проблемные коэффициенты, заданные как вектор числовых значений. Alpha содержит элементы m, где m является количеством векторов поддержки в обученной модели регрессии SVM. Двойная проблема вводит два множителя Лагранжа для каждого вектора поддержки. Значения Alpha являются различиями между двумя предполагаемыми множителями Лагранжа для векторов поддержки. Для получения дополнительной информации смотрите Регрессию Машины Вектора Поддержки Понимания.

Если вы задали, чтобы удалить копии с помощью RemoveDuplicates, то, для определенного набора дублирующихся наблюдений, которые являются векторами поддержки, Alpha содержит один коэффициент, соответствующий целому набору. That is, MATLAB® приписывает ненулевой коэффициент одному наблюдению от набора копий и коэффициент 0 ко всем другим дублирующимся наблюдениям в наборе.

Типы данных: single | double

Основные коэффициенты линейной задачи, сохраненные как числовой вектор длины p, где p является количеством предикторов в модели регрессии SVM.

Значения в Beta являются линейными коэффициентами для основной задачи оптимизации.

Если модель получена с помощью функции ядра кроме 'linear', это свойство пусто ('[]').

Метод predict вычисляет предсказанные значения ответа для модели как YFIT = (X/S)×Beta + Bias, где S является значением шкалы ядра, сохраненной в свойстве KernelParameters.Scale.

Типы данных: single | double

Сместите термин в модели регрессии SVM, сохраненной как скалярное значение.

Типы данных: single | double

Ограничения поля для двойных проблемных альфа-коэффициентов, сохраненных как числовой вектор, содержащий элементы n, где n является количеством наблюдений в X (Mdl.NumObservations).

Абсолютное значение двойного коэффициента Alpha для наблюдения i не может превысить BoxConstraints(i).

Если вы задаете копии удаления с помощью 'RemoveDuplicates', то для данного набора дублирующихся наблюдений, MATLAB суммирует ограничения поля, и затем приписывает сумму одному наблюдению и ограничениям поля 0 ко всем другим наблюдениям в наборе.

Типы данных: single | double

Кэширование информации, хранившей как структура со следующими полями.

Поле Описание
'Size'Значение положительной скалярной величины, указывающее на размер кэша (в Мбайте), который программное обеспечение резервирует, чтобы сохранить записи матрицы Грамма. Установите размер кэша при помощи аргумента пары "имя-значение" 'CacheSize' в fitrsvm.
'Algorithm'Вектор символов, содержащий имя алгоритма, используемого, чтобы удалить записи из кэша, когда его способность превышена. В настоящее время единственным доступным алгоритмом кэширования является 'Queue'. Вы не можете установить алгоритм кэширования.

Типы данных: struct

Категориальные индексы предиктора, заданные как вектор положительных целых чисел. CategoricalPredictors содержит индексные значения, соответствующие столбцам данных о предикторе, которые содержат категориальные предикторы. Если ни один из предикторов не является категориальным, то это свойство пусто ([]).

Типы данных: single | double

Информация сходимости, хранившая как структура со следующими полями.

Поле Описание
ConvergedЛогический флаг, указывающий, сходился ли алгоритм. Значение 1 указывает на сходимость.
ReasonForConvergenceВектор символов, указывающий на критерий программное обеспечение раньше, обнаруживал сходимость.
GapСкалярный разрыв выполнимости между двойными и основными целевыми функциями.
GapToleranceСкалярный допуск к разрыву выполнимости. Можно установить этот допуск с помощью аргумента пары "имя-значение" 'GapTolerance' в fitrsvm.
DeltaGradientСкалярное различие в градиенте между верхними и более низкими нарушителями.
DeltaGradientToleranceСкалярный допуск к различию в градиенте. Можно установить этот допуск с помощью аргумента пары "имя-значение" DeltaGradientTolerance в fitrsvm.
LargestKKTViolationМаксимальное скалярное значение нарушения Karush-Kuhn-Tucker (KKT).
KKTToleranceСкалярный допуск к самому большому нарушению KKT. Можно установить этот допуск с помощью аргумента пары "имя-значение" 'KKTTolerance' в fitrsvm.
History

Структура, содержащая информацию о сходимости, зарегистрирована в периодических интервалах во время образцового учебного процесса. Эта структура содержит следующие поля:

  • 'NumIterations' Массив индексов итерации, в которых программное обеспечение записало критерии сходимости.

  • Gap — значения Gap в этих итерациях.

  • DeltaGradient — значения DeltaGradient в этих итерациях.

  • LargestKKTViolation — значения LargestKKTViolation в этих итерациях.

  • NumSupportVectors — Количество векторов поддержки в этих итерациях.

  • Цель значения Objective в этих итерациях.

ObjectiveЧисловое значение двойной цели.

Типы данных: struct

Половина ширины нечувствительной к эпсилону полосы, сохраненной как неотрицательное скалярное значение.

Типы данных: single | double

Расширенные имена предиктора, сохраненные как массив ячеек из символьных векторов.

Если образцовое кодирование использования для категориальных переменных, то ExpandedPredictorNames включает имена, которые описывают расширенные переменные. В противном случае ExpandedPredictorNames совпадает с PredictorNames.

Типы данных: cell

Значения градиента в данных тренировки, хранимых как числовой вектор, содержащий 2n элементы, где n является количеством наблюдений в данных тренировки.

i элемента Gradient содержит значение градиента для коэффициента Alpha, который соответствует верхнему контуру нечувствительной к эпсилону полосы при наблюдении i в конце оптимизации.

i + NumObservations элемента Gradient содержит значение градиента для коэффициента Alpha, который соответствует нижней границе нечувствительной к эпсилону полосы при наблюдении i в конце оптимизации.

Типы данных: single | double

Описание оптимизации перекрестной проверки гиперпараметров, заданных как объект BayesianOptimization или таблица гиперпараметров и присваиваемых значений. Это свойство непусто, если аргумент пары "имя-значение" 'OptimizeHyperparameters' непуст, когда вы создаете модель. Значение HyperparameterOptimizationResults зависит от установки поля Optimizer в структуре HyperparameterOptimizationOptions, когда вы создаете модель, как описано в этой таблице.

Значение поля OptimizerЗначение HyperparameterOptimizationResults
'bayesopt' (значение по умолчанию)Объект класса BayesianOptimization
'gridsearch' или 'randomsearch'Таблица гиперпараметров используемые, наблюдаемые значения целевой функции (потеря перекрестной проверки), и ранг наблюдений от самого низкого (лучше всего) к (худшему) самому высокому

Отметьте указание, является ли наблюдение вектором поддержки, сохраненным как n-by-1 логический вектор. n является количеством наблюдений в X (см. NumObservations). Значение 1 указывает, что соответствующее наблюдение в данных тренировки является вектором поддержки.

Если вы задаете копии удаления с помощью RemoveDuplicates, то для данного набора дублирующихся наблюдений, которые являются векторами поддержки, IsSupportVector отмечает только один как вектор поддержки.

Типы данных: логический

Параметры функции ядра, сохраненные как структура следующими полями.

Поле Описание
Function Имя функции ядра (вектор символов).
ScaleЧисловой масштабный коэффициент раньше делил значения предиктора.

Можно задать значения для KernelParameters.Function и KernelParameters.Scale при помощи аргументов пары "имя-значение" KernelFunction и KernelScale в fitrsvm, соответственно.

Типы данных: struct

Значения параметров раньше обучали модель регрессии SVM, сохраненную как объект параметра модели. Доступ к свойствам ModelParameters с помощью записи через точку. Например, получите доступ к значению Epsilon, используемого, чтобы обучить модель как Mdl.ModelParameters.Epsilon.

Средние значения предиктора, сохраненные как вектор числовых значений.

Если предикторы стандартизированы, то Mu является числовым вектором длины p, где p является количеством предикторов, используемых, чтобы обучить модель. В этом случае метод predict сосредотачивает матрицу предиктора X путем вычитания соответствующего элемента Mu из каждого столбца.

Если предикторы не стандартизированы, то Mu пуст ('[]').

Если данные содержат категориальные предикторы, то Mu включает элементы для фиктивных переменных для тех предикторов. Соответствующие записи в Mu 0, потому что фиктивные переменные не сосредотачиваются или масштабируются.

Типы данных: single | double

Количество итераций, требуемых для стандартной программы оптимизации достигнуть сходимости, сохраненной как положительное целочисленное значение.

Чтобы установить предел для количества итераций, используйте аргумент пары "имя-значение" 'IterationLimit' fitrsvm.

Типы данных: single | double

Количество наблюдений в данных тренировки, хранимых как положительное целочисленное значение.

Типы данных: single | double

Имена предиктора, сохраненные как массив ячеек из символьных векторов, содержащий имя каждого предиктора в порядке, они появляются в X. PredictorNames имеет длину, равную количеству столбцов в X.

Типы данных: cell

Ожидаемая часть выбросов в наборе обучающих данных, сохраненном как скалярное значение в области значений [0,1]. Можно задать ожидаемую часть выбросов с помощью аргумента пары "имя-значение" 'OutlierFraction' в fitrsvm.

Типы данных: double

Имя переменной отклика, сохраненное как вектор символов.

Типы данных: char

Функция преобразования ответа, заданная как 'none' или указатель на функцию. ResponseTransform описывает, как программное обеспечение преобразовывает необработанные значения ответа.

Для функции MATLAB или функции, которую вы задаете, вводят ее указатель на функцию. Например, можно ввести Mdl.ResponseTransform = @function, где function принимает числовой вектор исходных ответов и возвращает числовой вектор, одного размера содержащий преобразованные ответы.

Типы данных: char | function_handle

Количество итераций между сокращениями активного набора во время оптимизации, сохраненной как неотрицательное целочисленное значение.

Можно установить период уменьшения при помощи аргумента пары "имя-значение" 'ShrinkagePeriod' в fitrsvm.

Типы данных: single | double

Стандартные отклонения предиктора, сохраненные как вектор числовых значений.

Если предикторы стандартизированы, то Sigma является числовым вектором длины p, где p является количеством предикторов, используемых, чтобы обучить модель. В этом случае метод predict масштабирует матрицу предиктора X путем деления каждого столбца на соответствующий элемент Sigma после центрирования каждого элемента с помощью Mu.

Если предикторы не стандартизированы, то Sigma пуст ('[]').

Если данные содержат категориальные предикторы, Sigma включает элементы для фиктивных переменных для тех предикторов. Соответствующие записи в Sigma равняются 1, потому что фиктивные переменные не сосредотачиваются или масштабируются.

Типы данных: single | double

Имя алгоритма решателя раньше решало задачу оптимизации, сохраненную как значение в этой таблице.

ЗначениеОписание
'SMO'Последовательная минимальная оптимизация
'ISDA'Итеративный один алгоритм данных
'L1QP'Минимизация мягкого поля L1 квадратичным программированием (требует лицензии Optimization Toolbox™).

Поддержите векторы, сохраненные как m-by-p матрица числовых значений. m является количеством векторов поддержки (sum(Mdl.IsSupportVector)), и p является количеством предикторов в X.

Если вы задали, чтобы удалить копии с помощью RemoveDuplicates, то для данного набора дублирующихся наблюдений, которые являются векторами поддержки, SupportVectors содержит один уникальный вектор поддержки.

Типы данных: single | double

Веса наблюдения раньше обучали модель, сохраненную как числовой вектор, содержащий число элементов NumObservation. fitrsvm нормирует веса, используемые для обучения так, чтобы они суммировали к 1.

Типы данных: single | double

Значения предиктора раньше обучали модель, сохраненную как матрица числовых значений, если модель обучена на матрице или таблице, если модель обучена на таблице. X имеет размер n-by-p, где n является количеством строк, и p является количеством переменных прогноза или столбцов в данных тренировки.

Типы данных: single | double | table

Наблюдаемые значения ответа, сохраненные как числовой вектор, содержащий число элементов NumObservations.

Типы данных: single | double

Методы

компактныйКомпактная модель регрессии машины вектора поддержки
crossvalПерекрестная подтвержденная модель регрессии машины вектора поддержки
resubLossПотеря перезамены для модели регрессии машины вектора поддержки
resubPredictПредскажите ответ перезамены модели регрессии машины вектора поддержки
резюмеВозобновите учебную поддержку векторная модель регрессии машины

Унаследованные методы

discardSupportVectorsОтбросьте векторы поддержки
потеряОшибка регрессии для модели регрессии машины вектора поддержки
предсказатьПредскажите ответы с помощью модели регрессии машины вектора поддержки

Копировать семантику

Значение. Чтобы изучить, как классы значения влияют на операции копии, смотрите Копирование Объектов (MATLAB).

Примеры

свернуть все

Этот пример показывает, как обучить линейную модель регрессии машины вектора поддержки (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: [76x1 double]
                     Bias: 43.1920
         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. Расширяя и Каскадная Корреляция сравнительного тестирования, кандидатская диссертация, Кафедра информатики, Университет Тасмании, 1995.

[3] Кларк, D., З. Шретер, А. Адамс. Количественное Сравнение Dystal и Backpropagation, представленного австралийской Конференции по Нейронным сетям, 1996.

[4] Личмен, M. Репозиторий машинного обучения UCI, [http://archive.ics.uci.edu/ml]. Ирвин, CA: Калифорнийский университет, школа информатики и вычислительной техники.

Расширенные возможности

Введенный в R2015b