Полиномиальная регрессия в машинном обучении
Полиномиальная регрессия – это алгоритм машинного обучения, который используется для обучения линейной модели на нелинейных данных. Иногда ваши данные намного сложнее, чем прямая линия, и в таких случаях обучение на основе алгоритма линейной регрессии – не лучший вариант, но, мы можем использовать алгоритм полиномиальной регрессии, чтобы добавить производительности каждой функции, а затем обучить линейную модель на расширенном наборе функций. Вот так работает этот алгоритм. Чтобы вы лучше поняли, в этой статье я познакомлю вас с полиномиальной регрессией в машинном обучении и ее реализацией с использованием Python.
Полиномиальная регрессия в машинном обучении
В машинном обучении алгоритм полиномиальной регрессии позволяет использовать линейную модель, даже если данные имеют очень сильную нелинейность. Он работает, добавляя дополнительные функции к данным, при этом понимая существующие функции.
Чтобы реализовать этот алгоритм, вы должны сначала обучить линейную модель на нелинейном наборе данных, скажем, мы хотим обучить алгоритм линейной регрессии на нелинейных данных, что даст нам плохие результаты. Поэтому в таких случаях нужно добавить новые функции, учитывая существующие функции, чтобы сделать наш набор данных линейным. Для этой задачи нам нужно использовать алгоритм полиномиальной регрессии, который преобразует данные в расширенные, а затем, если мы снова будем использовать алгоритм линейной регрессии для вновь преобразованных данных, он даст нам идеальные результаты.
Полиномиальная регрессия с использованием Python
Чтобы реализовать этот алгоритм с использованием Python, я начну с импорта всех необходимых библиотек Python и набора данных, который нам нужен для этой задачи:
from sklearn.feature_selection import SelectFromModel from sklearn.datasets import load_boston from sklearn.preprocessing import PolynomialFeatures from sklearn.linear_model import LinearRegression from sklearn.model_selection import train_test_split boston = load_boston()
Теперь давайте разделим данные и обучим алгоритм линейной регрессии, чтобы увидеть, какой результат мы получим, прежде чем добавлять новые функции в этот нелинейный набор данных:
x_train, x_test, y_train, y_test = train_test_split(boston.data, boston.target, test_size=0.2) lr = LinearRegression(normalize=True) lr.fit(x_train, y_train) print(lr.score(x_test, y_test))
Результат:
0.6872187372194491
Поскольку набор данных, который мы используем, является нелинейным, мы получаем оценку 0,68, что довольно слабо, поэтому давайте посмотрим, какой результат мы получим после обучения алгоритма линейной регрессии на недавно преобразованном наборе данных с использованием полиномиальной регрессии:
pf = PolynomialFeatures(degree=2) xp = pf.fit_transform(boston.data) lr = LinearRegression(normalize=True) lr.fit(xp, boston.target) print(lr.score(xp, boston.target))
Результат:
0.9175312489759742
Таким образом, после обучения той же модели расширенным функциям мы получаем 0,91 балла, что уже неплохо.
Резюме
Вот как добавление новых полиномиальных функций помогает преобразовать существующие нелинейные данные в линейные. Надеюсь, вам понравилась эта статья о введении в алгоритм полиномиальной регрессии в машинном обучении и его реализации с использованием Python.