多项式回归(Polynomial Regression)是一种回归分析方法,它将自变量 xx 和因变量 yy 之间的关系建模为 nn 次多项式。多项式回归的目的是找到一个 nn 次多项式函数,使得这个函数能够最好地拟合给定的数据点。
多项式回归的数学表达式为:
其中:
- yy 是因变量。
- xx 是自变量。
- β0,β1,…,βnβ0,β1,…,βn 是回归系数。
- ϵϵ 是误差项,表示模型无法解释的随机误差。
多项式回归可以看作是线性回归的扩展,因为线性回归是 n=1n=1 时的特殊情况。当数据点之间的关系不是线性的,而是曲线时,多项式回归可以提供更好的拟合。
多项式回归的参数估计通常使用最小二乘法(Least Squares Method),该方法通过最小化误差项的平方和来找到最佳的回归系数。最小二乘法的数学表达式为:
其中 mm 是数据点的数量。
多项式回归模型的评估通常使用以下指标:
- 决定系数(R-squared):表示模型解释的因变量的方差比例。
- 调整后的决定系数(Adjusted R-squared):考虑了自变量数量对决定系数的影响。
- 均方误差(Mean Squared Error, MSE):表示预测值与实际值之间的平均平方误差。
- 均方根误差(Root Mean Squared Error, RMSE):MSE的平方根,表示预测值与实际值之间的平均误差。
例子:
注册了 18 辆经过特定收费站的汽车。假设已经记录了汽车的速度和通过时间(小时)。
x 轴表示一天中的小时,y 轴表示速度:
Python 有一些方法可以找到数据点之间的关系并画出多项式回归线。
// 导入所需模块:
import numpy
import matplotlib.pyplot as plt
// 创建表示 x 和 y 轴值的数组:
x = [1,2,3,5,6,7,8,9,10,12,13,14,15,16,18,19,21,22]
y = [100,90,80,60,60,55,60,65,70,70,75,76,78,79,90,99,99,100]
// NumPy 有一种方法可以让我们建立多项式模型:
mymodel = numpy.poly1d(numpy.polyfit(x, y, 3))
// 然后指定行的显示方式,我们从位置 1 开始,到位置 22 结束:
myline = numpy.linspace(1, 22, 100)
// 绘制原始散点图:
plt.scatter(x, y)
// 画出多项式回归线:
plt.plot(myline, mymodel(myline))
// 显示图表:
plt.show()
结果: