В этом примере показано, как обучить модель регрессии машины опорных векторов (SVM) использование приложения Regression Learner, и затем использовать блок RegressionSVM Predict для предсказания ответа в Simulink®. Блок принимает наблюдение (данные о предикторе) и возвращает предсказанный ответ для наблюдения с помощью обученной модели регрессии SVM.
Обучите модель регрессии SVM при помощи гипероптимизации параметров управления в Приложении Regression Learner.
1. В Командном окне MATLAB® загрузите carbig
набор данных, и создает матрицу, содержащую большинство переменных предикторов и вектор из переменной отклика.
load carbig
X = [Acceleration,Cylinders,Displacement,Horsepower,Model_Year,Weight];
Y = MPG;
2. Открытый Regression Learner. На вкладке Apps, в разделе Apps, нажимают Show больше стрелы, чтобы отобразить галерею Apps. В группе Машинного обучения и Глубокого обучения нажмите Regression Learner.
3. На вкладке Regression Learner, в Разделе файла, выбирают New Session и выбирают From Workspace..
4. В диалоговом окне New Session from Workspace выберите матричный X
из Списка переменных Набора данных. При Ответе нажмите переключатель рабочей области From и выберите вектор Y из рабочей области. Опция валидации по умолчанию является 5-кратной перекрестной проверкой, чтобы защитить от сверхподбора кривой. В данном примере не изменяйте настройки по умолчанию.
5. Чтобы принять опции по умолчанию и продолжиться, нажмите Start Session.
6. Выберите optimizable модель SVM, чтобы обучаться. На вкладке Regression Learner, в разделе Model Type, нажимают Show больше стрелы, чтобы открыть галерею. В группе Машин опорных векторов нажмите Optimizable SVM. Приложение отключает кнопку Use Parallel, когда вы выбираете optimizable модель.
7. В разделе Training нажмите Train. Отображения приложения Минимальный График MSE, когда это запускает процесс оптимизации. В каждой итерации приложение пробует различную комбинацию гиперзначений параметров и обновляет график с минимальной среднеквадратической ошибкой (MSE) валидации, наблюдаемой до той итерации, обозначенной в темно-синем. Когда приложение завершает процесс оптимизации, оно выбирает набор оптимизированных гиперпараметров, обозначенных красным квадратом. Для получения дополнительной информации см. Минимальный График MSE.
Списки приложений оптимизированные гиперпараметры и в разделе Optimization Results справа от графика и в разделе Optimized Hyperparameters панели Сводных данных Текущей модели. В общем случае результаты оптимизации не восстанавливаемы.
8. Экспортируйте модель в рабочее пространство MATLAB. На вкладке Regression Learner, в Разделе экспорта, нажимают Export Model и выбирают Export Model, затем нажимают ОК. Именем по умолчанию для экспортируемой модели является trainedModel
.
В качестве альтернативы можно сгенерировать код MATLAB, который обучает модель регрессии с теми же настройками, используемыми, чтобы обучить модель SVM в приложении. На вкладке Regression Learner, в Разделе экспорта, нажимают Generate Function. Приложение генерирует код от вашего сеанса и отображает файл в редакторе MATLAB. Файл задает функцию, которая принимает переменные прогноза и переменные отклика, обучает модель регрессии и выполняет перекрестную проверку. Поменяйте имя функции на trainRegressionSVMModel
и сохраните файл функции. Обучите модель SVM при помощи trainRegressionSVMModel
функция.
trainedModel = trainRegressionSVMModel(X,Y);
9. Извлеките обученную модель SVM из trainedModel
переменная. trainedModel
содержит RegressionSVM
объект модели в RegressionSVM
поле .
svmMdl = trainedModel.RegressionSVM;
Поскольку гипероптимизация параметров управления может привести к сверхподобранной модели, рекомендуемый подход должен создать отдельный набор тестов прежде, чем импортировать ваши данные в приложение Regression Learner и видеть, как оптимизированная модель выполняет на вашем наборе тестов. Для получения дополнительной информации смотрите, Обучают Модель Регрессии Используя Гипероптимизацию параметров управления в Приложении Regression Learner.
Этот пример предоставляет модели Simulink slexCarDataRegressionSVMPredictExample.slx
, который включает блок RegressionSVM Predict. Можно открыть модель 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 и добавьте блок RegressionSVM Predict. Добавьте блоки Inport и Outport и соедините их с блоком RegressionSVM Predict.
Дважды кликните блок RegressionSVM Predict, чтобы открыть диалоговое окно Block Parameters. Можно задать имя переменной рабочей области, которая содержит обученную модель SVM. Именем переменной по умолчанию является svmMdl
. Нажмите Кнопку Обновить. Диалоговое окно отображается, опции раньше обучали модель SVM svmMdl
в соответствии с обученной моделью машинного обучения.
Блок RegressionSVM Predict ожидает наблюдение, содержащее 6 значений предиктора. Дважды кликните Inport блок и установите размерности Порта на 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);
Импортировать данные сигнала из рабочей области:
Откройте диалоговое окно Configuration Parameters. На вкладке Modeling нажмите Model Settings.
В панели Импорта/Экспорта Данных установите флажок Input и введите carsmallInput
в смежном текстовом поле.
В панели Решателя, под Временем симуляции, Временем остановки набора к carsmallInput.time(end)
. При выборе Решателя, Типе набора к Fixed-step
, и Решатель набора к discrete (no continuous states)
.
Для получения дополнительной информации смотрите Данные сигнала Загрузки для Симуляции (Simulink).
Симулируйте модель.
sim(SimMdlName);
Когда Inport блок обнаруживает наблюдение, он направляет наблюдение в блок RegressionSVM Predict. Можно использовать Инспектора Данных моделирования (Simulink), чтобы просмотреть записанные данные блока Outport.