Нелинейная регрессия — это мощный метод, используемый для подгонки сложных моделей к данным, не подчиняющимся линейной зависимости. MATLAB предоставляет надежные инструменты для выполнения нелинейного регрессионного анализа, позволяя вам находить наиболее подходящие параметры для вашей модели и делать прогнозы на основе подобранной модели. В этом руководстве мы рассмотрим процесс выполнения нелинейной регрессии в MATLAB с использованием набора данных, доступного в среде MATLAB.

Выбор набора данных

В этом уроке мы будем использовать встроенный набор данных MATLAB под названием «carbig». Набор данных «carbig» содержит информацию о различных моделях автомобилей, такую ​​как пробег, вес и мощность, а также другие атрибуты. Этот набор данных послужит хорошим примером для демонстрации нелинейной регрессии.



Шаг 1: Загрузка и изучение набора данных

Для начала давайте загрузим набор данных «carbig» и изучим его структуру и содержимое. Откройте MATLAB и введите следующие команды:

% Load the carbig dataset
load carbig; 

Это загрузит набор данных в рабочую область MATLAB. Найдите минутку, чтобы изучить переменные и их описания. Загруженный набор данных содержит следующие элементы структуры:

           Model: [406×36 char]
          Origin: [406×7 char]
             MPG: [406×1 double]
       Cylinders: [406×1 double]
    Displacement: [406×1 double]
      Horsepower: [406×1 double]
          Weight: [406×1 double]
    Acceleration: [406×1 double]
      Model_Year: [406×1 double]
            cyl4: [406×5 char]
             org: [406×7 char]
            when: [406×5 char]
             Mfg: [406×13 char]

Шаг 2: Предварительная обработка данных

Набор данных состоит из значений NaN в наборе данных. Мы будем использовать функцию isnan для выявления и исключения любых значений NaN перед выполнением линейной регрессии. Вот измененный код:

% Exclude NaN values
valid_indices = ~isnan(Weight) & ~isnan(Horsepower);
Weight = Weight(valid_indices);
Horsepower = Horsepower(valid_indices);

Вышеприведенный код проверяет значения NaN в обеих переменных: «Вес» и «Лошадиная сила» и исключает эти строки из анализа.



Шаг 3: Выбор переменных

В нелинейной регрессии мы обычно выбираем зависимую переменную и одну или несколько независимых переменных для построения нашей модели. Для этого руководства предположим, что мы хотим предсказать мощность автомобиля («лошадиные силы») на основе его веса («вес»). Мы будем использовать переменную «Лошадиная сила» в качестве нашей зависимой переменной и переменную «Вес» в качестве нашей независимой переменной.

Шаг 4: Определение модели

Далее нам нужно определить математическую модель, описывающую взаимосвязь между независимой переменной (переменными) и зависимой переменной. В этом случае мы будем использовать простую степенную модель:

% Define the power-law model
model = @(b, x) b(1) * x.^b(2);

Здесь «b» представляет параметры модели, а «x» представляет собой независимую переменную.



Шаг 5: Подгонка модели к данным

Теперь мы подгоним модель к данным, используя функцию «nlinfit», которая выполняет нелинейную регрессию в MATLAB. Введите следующий код:

% Perform nonlinear regression
[beta, ~, ~, ~, ~] = nlinfit(Weight, Horsepower, model, [1, 1]);

В приведенном выше коде «Вес» и «Мощность» — это выбранные независимые и зависимые переменные соответственно. Функция «nlinfit» оценивает оптимальные значения параметров («бета») для модели на основе предоставленных данных.

Шаг 6: Визуализация результатов

Чтобы визуализировать соответствие модели данным, мы построим исходные точки данных вместе с подобранной кривой. Введите следующий код:

% Create a scatter plot of the data
scatter(Weight, Horsepower, 'filled');
hold on;

% Generate points for the fitted curve
x = min(Weight):10:max(Weight);
y = model(beta, x);

% Plot the fitted curve
plot(x, y, 'r', 'LineWidth', 2);
xlabel('Weight');
ylabel('Horsepower');
legend('Data', 'Fitted Curve');
title('Nonlinear Regression: Power-Law Model');
grid on;
hold off;

Приведенный выше код строит точечную диаграмму исходных точек данных и накладывает подобранную кривую на тот же график. Результирующий график должен давать визуальное представление о том, насколько хорошо модель соответствует данным.



Шаг 7: Делаем прогнозы

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

Чтобы делать прогнозы с использованием подобранной модели, вы можете просто подставить новые значения независимой переменной в уравнение модели. Вот пример:

% Define a new weight value for prediction
newWeight = 3000;

% Make a prediction using the fitted model
predictedHorsepower = model(beta, newWeight);
fprintf('Predicted Horsepower for a car with weight %d: %.2f\n', newWeight, predictedHorsepower);

В приведенном выше коде мы определили новое значение веса (newWeight) и использовали подобранную модель для прогнозирования соответствующего значения мощности. Функция model принимает оценочные параметры модели (beta) и новое значение веса в качестве входных данных и возвращает прогнозируемую мощность.

Шаг 8: Оценка модели

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

% Calculate the residuals
residuals = Horsepower - model(beta, Weight);

% Calculate the mean squared error (MSE)
MSE = mean(residuals.^2);

% Calculate the coefficient of determination (R-squared)
SS_total = sum((Horsepower - mean(Horsepower)).^2);
SS_residual = sum(residuals.^2);
R_squared = 1 - (SS_residual / SS_total);

fprintf('Mean Squared Error (MSE): %.2f\n', MSE);
fprintf('R-squared: %.2f\n', R_squared);

В приведенном выше коде мы рассчитали остатки (разницы между фактическими и прогнозируемыми значениями), среднеквадратичную ошибку (MSE) и коэффициент детерминации (R-квадрат). MSE обеспечивает меру среднеквадратичной разницы между фактическими и прогнозируемыми значениями, в то время как R-квадрат представляет долю общего изменения зависимой переменной, которая объясняется моделью.

Заключение

В этом уроке мы узнали, как выполнять нелинейную регрессию в MATLAB, используя в качестве примера набор данных «carbig». Мы рассмотрели шаги, связанные с подгонкой сложной модели к данным, включая выбор набора данных, определение модели, подгонку модели, визуализацию, прогнозирование и оценку. Мощные инструменты MATLAB позволяют нам анализировать и моделировать сложные взаимосвязи в данных, обеспечивая ценную информацию и прогнозы.

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



Дополнительная литература по регрессиям с использованием MATLAB

Вот несколько связанных руководств по различным регрессионным анализам с использованием MATLAB:













Повышение уровня кодирования

Спасибо, что являетесь частью нашего сообщества! Перед тем, как ты уйдешь:

  • 👏 Хлопайте за историю и подписывайтесь на автора 👉
  • 📰 Смотрите больше контента в публикации Level Up Coding
  • 💰 Бесплатный курс собеседования по программированию ⇒ Просмотреть курс
  • 🔔 Подписывайтесь на нас: Twitter | ЛинкедИн | "Новостная рассылка"

🚀👉 Присоединяйтесь к коллективу талантов Level Up и найдите прекрасную работу