Предсказание откликов с использованием блока RegressionSVM

В этом примере показано, как обучить регрессионую модель векторной машины поддержки (SVM) с помощью приложения Regression Learner, а затем использовать блок RegressionSVM Predict для предсказания отклика в Simulink ®. Блок принимает наблюдение (данные предиктора) и возвращает предсказанный ответ для наблюдения, используя обученную регрессионую модель SVM .

Обучите регрессионую модель в приложении Regression Learner

Обучите регрессионую модель SVM с помощью оптимизации гипероптимизации параметров управления в приложении Regression Learner.

1. В Командном Окне MATLAB ® загрузите carbig набор данных и создайте матрицу, содержащую большинство переменных предиктора и вектор переменной отклика.

load carbig
X = [Acceleration,Cylinders,Displacement,Horsepower,Model_Year,Weight];
Y = MPG;

2. Откройте Regression Learner. На вкладке Apps, в разделе Apps, нажмите Показ больше стрела, чтобы отобразить галерею Apps. В группе Машинное обучение и Глубокое Обучение нажмите Regression Learner.

3. На вкладке Regression Learner, в Разделе файла, выберите New Session и выберите From Workspace.

4. В диалоговом окне New Session from Workspace выберите матрицу X из списка Переменная набора данных. В разделе Response нажмите кнопку From опции рабочей области и выберите вектор Y из рабочей области. Опция валидации по умолчанию является 5-кратной перекрестной валидацией, чтобы защитить от сверхподбора кривой. В данном примере не изменяйте настройки по умолчанию.

5. Чтобы принять опции по умолчанию и продолжить, нажмите кнопку «» Начать сеанс «».

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

7. В разделе «Обучение» нажмите кнопку Train. Приложение отображает Минимальный график MSE, когда запускает процесс оптимизации. При каждой итерации приложение пробует различную комбинацию значений гиперзначений параметров и обновляет график с минимальной средней квадратичной невязкой валидации (MSE), наблюдаемой до этой итерации, обозначенной темно-синим цветом. Когда приложение завершает процесс оптимизации, оно выбирает набор оптимизированных гиперпараметров, обозначенных красным квадратом. Для получения дополнительной информации смотрите Минимальный график MSE.

Приложение приводит оптимизированные гиперпараметры как в разделе Результаты оптимизации справа от графика, так и в разделе Оптимизированные гиперпараметры на панели Сводных данных текущей модели. В целом результаты оптимизации не воспроизводимы.

8. Экспортируйте модель в рабочее пространство MATLAB. На вкладке Регрессионное обучение (Regression Learner) в разделе Экспорт (Export) щелкните Экспорт модели (Export Model) и выберите Экспорт модели (Export Model), затем нажмите OK. Имя по умолчанию для экспортированной модели 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 и увидеть, как оптимизированная модель работает на вашем тестовом наборе. Для получения дополнительной информации смотрите Обучите Регрессионую Модель Используя Гипероптимизацию параметров управления в Приложении Regression Learner.

Создайте модель Simulink

Этот пример предоставляет модель Simulink slexCarDataRegressionSVMPredictExample.slx, который включает блок RegressionSVM Predict. Можно открыть модель Simulink или создать новую модель, как описано в этом разделе.

Откройте модель Simulink slexCarDataRegressionSVMPredictExample.slx.

SimMdlName = 'slexCarDataRegressionSVMPredictExample'; 
open_system(SimMdlName)

The PreLoadFcn функция обратного вызова от slexCarDataRegressionSVMPredictExample включает код для загрузки выборочных данных, обучения модели SVM и создания входного сигнала для модели Simulink. Если вы открываете модель Simulink, то программное обеспечение запускает код в PreLoadFcn перед загрузкой модели Simulink. Чтобы просмотреть функцию обратного вызова, в разделе Setup на вкладке Modeling, нажмите Model Settings и выберите Model Properties. Затем на вкладке Callbacks выберите PreLoadFcn функция обратного вызова на панели обратных коллбэков Model.

Чтобы создать новую модель Simulink, откройте шаблон Blank Model и добавьте блок RegressionSVM Predict. Добавьте блоки Inport и Outport и соедините их с блоком RegressionSVM Predict.

Дважды кликните блок RegressionSVM Predict, чтобы открыть диалоговое окно Параметров блоков. Можно задать имя переменной рабочей области, которая содержит обученную модель SVM. Имя переменной по умолчанию svmMdl. "Нажмите кнопку ""Обновить""". В диалоговом окне отображаются опции, используемые для обучения модели SVM svmMdl в рамках модели обученного машинного обучения.

Блок RegressionSVM Predict ожидает наблюдения, содержащего 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 в соседнем текстовом поле.

  • На панели « Решатели» в разделе «Время симуляции» установите значение «Время остановки» carsmallInput.time(end). В группе «Выбор решателя» установите для параметра «Тип» значение Fixed-step, и установите решатель на discrete (no continuous states).

Для получения дополнительной информации смотрите Загрузку Данных Сигнала для Симуляции (Simulink).

Симулируйте модель.

sim(SimMdlName);

Когда блок Inport обнаруживает наблюдение, он направляет наблюдение в блок RegressionSVM Predict. Можно использовать Данные моделирования Inspector (Simulink), чтобы просмотреть записанные данные блока Outport.

См. также

Похожие темы