В этом руководстве мы рассмотрим, как использовать полиномиальную регрессию для моделирования нелинейных отношений в MATLAB. Полиномиальная регрессия — это расширение линейной регрессии, которое позволяет нам подгонять полиномиальное уравнение к данным, что позволяет нам для захвата нелинейных закономерностей. К концу этого руководства вы сможете выполнять полиномиальную регрессию в MATLAB и визуализировать результаты.
Оглавление
- Введение в полиномиальную регрессию
- Подготовка набора данных
- Создание модели полиномиальной регрессии
- Визуализация результатов
- Заключение
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: