В этом примере показано, как обучить регрессионную модель поддерживающей векторной машины (SVM) с помощью приложения Regression Learner, а затем использовать блок RegingSVM Predict для прогнозирования ответа в Simulink ®. Блок принимает наблюдение (данные предиктора) и возвращает предсказанный отклик для наблюдения с использованием обученной модели регрессии SVM .
Обучение регрессионной модели SVM с помощью оптимизации гиперпараметров в приложении Regression Learner App.
1. В окне команд MATLAB ® загрузите carbig и создают матрицу, содержащую большинство переменных предиктора и вектор переменной отклика.
load carbig
X = [Acceleration,Cylinders,Displacement,Horsepower,Model_Year,Weight];
Y = MPG;2. Открыть обучающегося регрессии. На вкладке Приложения в разделе Приложения щелкните стрелку Показать другие, чтобы отобразить галерею приложений. В группе Machine Learning and Deep Learning выберите Regression Learner.
3. На вкладке «Regression Learner» в разделе «File» выберите «New Session» и выберите «From Workspace»..
4. В диалоговом окне Создать сессию из рабочей области (New Session from Workspace) выберите матрицу X из списка «Переменная набора данных». В разделе Ответ (Response) нажмите кнопку Из рабочей области (From workspace) и выберите вектор Y из рабочей области. Для защиты от переоборудования по умолчанию используется пятикратная перекрестная проверка. В этом примере не изменяйте параметры по умолчанию.

5. Чтобы принять параметры по умолчанию и продолжить, щелкните Начать сеанс (Start Session).
6. Выберите оптимизируемую модель SVM для обучения. На вкладке Обучающийся регрессии (Regression Learner) в разделе Тип модели (Model Type) щелкните стрелку Показать дополнительные (Show more), чтобы открыть галерею. В группе Поддерживаемые векторные машины щелкните Оптимизируемый SVM. Приложение отключает кнопку «Использовать параллель» при выборе оптимизируемой модели.

7. В разделе Обучение щелкните Обучение. Приложение отображает график Minimum MSE при выполнении процесса оптимизации. При каждой итерации приложение пробует различную комбинацию значений гиперпараметров и обновляет график с минимальной среднеквадратичной ошибкой (MSE), наблюдаемой до этой итерации, обозначенной темно-синим цветом. Когда приложение завершает процесс оптимизации, оно выбирает набор оптимизированных гиперпараметров, обозначенных красным квадратом. Дополнительные сведения см. в разделе Минимальный график MSE.
Приложение перечисляет оптимизированные гиперпараметры в разделе «Результаты оптимизации» справа от графика и в разделе «Оптимизированные гиперпараметры» панели «Сводка текущей модели». В общем, результаты оптимизации не воспроизводимы.
8. Экспортируйте модель в рабочую область MATLAB. На вкладке «Регрессионный обучающийся» в разделе «Экспорт» нажмите «Экспорт модели» и выберите «Экспорт модели», затем нажмите кнопку «ОК». Имя экспортируемой модели по умолчанию: trainedModel.
Кроме того, можно создать код MATLAB, который обучает регрессионную модель с теми же настройками, которые используются для обучения модели SVM в приложении. На вкладке Обучающийся регрессии (Regression Learner) в разделе Экспорт (Export) щелкните Создать функцию (Generate Function). Приложение генерирует код из сеанса и отображает файл в редакторе MATLAB. Файл определяет функцию, которая принимает переменные предиктора и ответа, обучает регрессионную модель и выполняет перекрестную проверку. Измените имя функции на trainRegressionSVMModel и сохраните файл функции. Обучение модели SVM с помощью trainRegressionSVMModel функция.
trainedModel = trainRegressionSVMModel(X,Y);
9. Извлеките обученную модель SVM из trainedModel переменная. trainedModel содержит RegressionSVM объект модели в RegressionSVM поле.
svmMdl = trainedModel.RegressionSVM;
Поскольку оптимизация гиперпараметров может привести к переполнению модели, рекомендуется создать отдельный тестовый набор перед импортом данных в приложение Regression Learner и посмотреть, как оптимизированная модель работает с тестовым набором. Дополнительные сведения см. в разделе Модель регрессии поезда с использованием оптимизации гиперпараметров в приложении для обучения регрессии.
В этом примере представлена модель Simulink slexCarDataRegressionSVMPredictExample.slx, который включает в себя блок прогнозирования RegingSVM. Можно открыть модель Simulink или создать новую модель, как описано в этом разделе.
Открытие модели Simulink slexCarDataRegressionSVMPredictExample.slx.
SimMdlName = 'slexCarDataRegressionSVMPredictExample';
open_system(SimMdlName)
PreLoadFcn функция обратного вызова slexCarDataRegressionSVMPredictExample включает в себя код для загрузки данных выборки, обучения модели SVM и создания входного сигнала для модели Simulink. При открытии модели Simulink программа запускает код в PreLoadFcn перед загрузкой модели Simulink. Чтобы просмотреть функцию обратного вызова, в разделе Настройка (Setup) на вкладке Моделирование (Modeling) щелкните Параметры модели (Model Settings) и выберите Свойства модели (Model Properties). Затем на вкладке Callbacks выберите PreLoadFcn функция обратного вызова на панели Обратные вызовы модели.
Чтобы создать новую модель Simulink, откройте шаблон Пустой модели (Blank Model) и добавьте блок прогнозирования RegingSVM. Добавьте блоки Inport и Outport и подключите их к блоку RegingSVM Predict.
Чтобы открыть диалоговое окно «Параметры блока», дважды щелкните на блоке «Прогноз RegingSVM». Можно указать имя переменной рабочей области, содержащей обученную модель SVM. Имя переменной по умолчанию: svmMdl. "Нажмите кнопку ""Обновить""". В диалоговом окне отображаются опции, используемые для обучения модели SVM. svmMdl в разделе Обучаемая модель машинного обучения.

Блок прогнозирования RegingSVM ожидает наблюдения, содержащего 6 предикторных значений. Дважды щелкните блок «Inport» и установите для параметра «Port dimensions» значение 6 на вкладке «Signal Attributes».
Создайте входной сигнал в виде массива структуры для модели Simulink. Структурный массив должен содержать следующие поля:
time - моменты времени, в которые наблюдения входят в модель. Ориентация должна соответствовать наблюдениям в данных предиктора. Так, в этом примере, time должен быть вектором столбца.
signals - Структурный массив 1 к 1, описывающий входные данные и содержащий поля values и dimensions, где values является матрицей данных предиктора, и dimensions - количество переменных предиктора.
Создайте соответствующий структурный массив для slexCarDataRegressionSVMPredictExample модель из carsmall набор данных.
load carsmall
testX = [Acceleration,Cylinders,Displacement,Horsepower,Model_Year,Weight];
testX = rmmissing(testX);
carsmallInput.time = (0:size(testX,1)-1)';
carsmallInput.signals(1).values = testX;
carsmallInput.signals(1).dimensions = size(testX,2);Чтобы импортировать данные сигнала из рабочей области:
Откройте диалоговое окно «Параметры конфигурации». На вкладке Моделирование (Modeling) щелкните Параметры модели (Model Settings).
На панели Импорт/экспорт данных установите флажок Ввод и введите carsmallInput в соседнем текстовом поле.
На панели Решатель (Solver) в разделе Время моделирования (Simulation time) задайте для параметра Время остановки (Stop time) значение carsmallInput.time(end). В разделе Выбор решателя (Solver selection) задайте для параметра Тип (Type) значение Fixed-stepи установите для решателя значение discrete (no continuous states).
Дополнительные сведения см. в разделе Загрузка данных сигналов для моделирования (Simulink).
Моделирование модели.
sim(SimMdlName);
Когда блок Inport обнаруживает наблюдение, он направляет его в блок прогнозирования RegingSVM. Инспектор данных моделирования (Simulation Data Inspector, Simulink) можно использовать для просмотра зарегистрированных данных блока исходящего трафика.