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

Оглавление

  1. Введение в полиномиальную регрессию
  2. Подготовка набора данных
  3. Создание модели полиномиальной регрессии
  4. Визуализация результатов
  5. Заключение


1. Введение в полиномиальную регрессию

Полиномиальная регрессия — это форма регрессионного анализа, в которой взаимосвязь между независимой переменной (X) и зависимой переменной (Y) моделируется как полином n-й степени. Он может фиксировать более сложные отношения, которые невозможно представить простой прямой линией. Уравнение полиномиальной регрессии имеет вид:

Y = b0 + b1*X + b2*X^2 + b3*X^3 + ... + bn*X^n

В этом уравнении X представляет собой независимую переменную, Y представляет собой зависимую переменную, а b0, b1, b2, ..., bn представляют собой коэффициенты, определяющие форму полиномиальной кривой.

2. Подготовка набора данных

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

% Generate a synthetic dataset
rng(0);  % Set random seed for reproducibility
X = linspace(-10, 10, 100)';
Y_true = 2*X.^3 - 3*X.^2 + 4*X - 1;  % True underlying relationship
Y = Y_true + randn(size(X));  % Add random noise

В приведенном выше коде мы генерируем независимую переменную X в диапазоне от -10 до 10 со 100 равномерно распределенными точками. Затем мы вычисляем соответствующую зависимую переменную Y_true, используя уравнение кубического полинома, и добавляем случайный шум, чтобы получить наблюдаемые значения Y.



3. Создание модели полиномиальной регрессии

Чтобы выполнить полиномиальную регрессию в MATLAB, мы будем использовать функцию polyfit. Функция polyfit подгоняет полиномиальную кривую заданной степени к данным и возвращает коэффициенты полинома. Затем мы можем использовать эти коэффициенты для создания модели.

Давайте подгоним полином степени 3 (кубический) к нашему синтетическому набору данных.

% Perform polynomial regression
degree = 3;
coefficients = polyfit(X, Y, degree);

В приведенном выше коде мы указываем степень полинома как 3 и используем polyfit, чтобы подогнать полином к нашему набору данных. Полученные коэффициенты сохраняются в переменной coefficients.



4. Визуализация результатов

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

% Create a range of X values for plotting
X_range = linspace(min(X), max(X), 100);

% Evaluate the polynomial equation for the range of X values
Y_pred = polyval(coefficients, X_range);

% Plot the original data and the fitted polynomial curve
figure;
plot(X, Y, 'o', 'MarkerFaceColor', 'b', 'MarkerEdgeColor', 'b');
hold on;
plot(X_range, Y_pred, 'r', 'LineWidth', 2);
xlabel('X');
ylabel('Y');
legend('Data', 'Polynomial Curve');
title('Polynomial Regression');
grid on;
hold off;

В приведенном выше коде мы создаем диапазон значений X (`X_range`), используя `linspace`, чтобы обеспечить плавную кривую при построении графика. Затем мы используем функцию «polyval» с коэффициентами, полученными из «polyfit», для оценки уравнения полинома для диапазона значений X, в результате чего получаются предсказанные значения «Y» («Y_pred»).

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



Полный код

Вот полный код:

% Generate a synthetic dataset
rng(0);  % Set random seed for reproducibility
X = linspace(-10, 10, 100)';
Y_true = 2*X.^3 - 3*X.^2 + 4*X - 1;  % True underlying relationship
Y = Y_true + randn(size(X));  % Add random noise

% Perform polynomial regression
degree = 3;
coefficients = polyfit(X, Y, degree);

% Create a range of X values for plotting
X_range = linspace(min(X), max(X), 100);

% Evaluate the polynomial equation for the range of X values
Y_pred = polyval(coefficients, X_range);

% Plot the original data and the fitted polynomial curve
figure;
plot(X, Y, 'o', 'MarkerFaceColor', 'b', 'MarkerEdgeColor', 'b');
hold on;
plot(X_range, Y_pred, 'r', 'LineWidth', 2);
xlabel('X');
ylabel('Y');
legend('Data', 'Polynomial Curve');
title('Polynomial Regression');
grid on;
hold off;


5. Вывод

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

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

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

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



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

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