多次多项式回归
线性回归的核心是描述直线关系,适用于变量间的简单线性关系,而多次多项式回归则赋予模型描述非线性的回归模型(比如曲线以及更复杂的曲线),它本质上是在线性回归基础上扩展的,增加模型的灵活性,更好的拟合非线性的数据趋势,多次多项式根据需要拟合的数据趋势要求不同,可以进行包含一次、两次、三次等多项式的回归,而每次增加次项,则会增加线条的波动能力。
多项式回归
一次多项式(线性回归)
- 作用:a0,决定了线条的“斜率”,描述x增加时,y的线性变化。
- 特性:斜率是均匀的,整个线条是直的。
- 适用场景:适合于简单的线性增长或者减少。
二次多项式
- 作用:a1x决定了线条是否“弯曲”,即呈现出正U(a2 > 0)或者倒U(a2 < 0)的形状
- 特性:解释数据中整体的加速或减速的趋势,比如汽车加速(a2 > 0 ),速度逐渐变快。
- 适用场景:适用于简单非线性趋势。
三次及以上的多项式
- 作用:a2x^2决定了线条的“波动”能力,描述线条的多个拐点。
- 特性:增加了对于细节的捕捉能力,允许在数据中不同区域出现不同趋势
- 适用场景:复杂的非线性趋势。
在使用多项式回归的时候,需要根据数据的特性,优先选择低阶多项式,如果数据趋势较为负责,可以逐步增加项式,但需要注意的是过高的项次会导致曲线过渡的贴合每个数据,导致模型预测的时候无法泛化到新数据,即过拟合。
多次多项式公式为:
$$
y = a_0 + a_1x + a_2x^2 + a_3x^3 + \dots + a_nx^n
$$
公式的每部分含义:
- y:目标变量(预测值)。
- x:自变量(输入值)。
- $a_0,$ $a_1$, $a_2$, …:系数(模型需要学习的权重)。
- $x^2,$ $x^3$ …, $x^n$:自变量的高次项,用于拟合非线性数据。
下面通过一个外卖的例子来说明一次多项式、二次多项式以及三次多项式的不同之处:
距离(公里,自变量x) | 配送时间(分钟,因变量y) |
---|---|
1 | 10 |
2 | 15 |
3 | 20 |
4 | 35 |
5 | 70 |
观测数据方面,可以明显看见数据是非线性增长,即距离越远,配送时间越长,所以使用线性回归(即一次多项式)来拟合数据,会出现部分特征无法拟合,下面用不同的多项式来拟合数据。
一次多项式回归
一次多项式回归,即线性回归,公式为:
$$
y = a * x + b
$$
结合数据做简单的平均变化法可以得斜率(系数)a,公式:
$$
a = (70 – 10) / (5 – 1) = 15
$$
再算出截率b:
$$
10 = 15 * 1 + a1 \newline
等于 \newline
a1 = -5
$$
最终预测公式为:
$$
y = 15 * x + (-5)
$$
当距离为3公里的时候,预测为40分钟。
二次多项式回归
二次多项式回归是考虑了整体加速和加速的趋势,就拿当前的例子来看,因为明显存在当距离越长,时间越久的加速情况,二次多项式的公式如下:
$$
y = a_0 + a_1x + a_2x^2
$$
但是因为二次、三次手动计算较为繁琐,不能像一次多项式这样,但可以将其公式转换为矩阵计算,即:
$$
X \cdot \beta = Y
$$
其中X为:
$$
\begin{bmatrix}
1 & 1 & 1^2 \newline
1 & 2 & 2^2 \newline
1 & 3 & 3^2 \newline
1 & 4 & 4^2 \newline
1 & 5 & 5^2 \newline
\end{bmatrix} =
\begin{bmatrix}
1 & 1 & 1 \newline
1 & 2 & 4 \newline
1 & 3 & 9 \newline
1 & 4 & 16 \newline
1 & 5 & 35 \newline
\end{bmatrix}
$$
其中beta为,也就是包含要求解的系数:
$$
\beta =
\begin{bmatrix}
a_0 \newline
a_1 \newline
a_2
\end{bmatrix}
$$
其中Y为,也就是包含已知实际值的结果:
$$
Y =
\begin{bmatrix}
10 \newline
15 \newline
20 \newline
35 \newline
70
\end{bmatrix}
$$
其中beta的计算方式可以根据数据的特征、情况以及业务背景等选择合适的系数算法,这里采用的最小二乘法来计算相关的系数(上面一次多项式采用的是平均变化法),公式为:
$$
\beta = (X^TX)^{-1} \cdot X^{T}Y
$$
其中X^T为X矩阵的转置,即行转列,而矩阵^-1则代表的是矩阵逆,X^T*Y代表用矩阵的转置乘以矩阵Y,先计算前面的一部分:
$$
X^T \cdot X =
\begin{bmatrix}
1 & 1 & 1 & 1 & 1 \newline
1 & 2 & 3 & 4 & 5 \newline
1 & 4 & 9 & 16 & 35 \newline
\end{bmatrix} \cdot
\begin{bmatrix}
1 & 1 & 1 \newline
1 & 2 & 4 \newline
1 & 3 & 9 \newline
1 & 4 & 16 \newline
1 & 5 & 35 \newline
\end{bmatrix}
$$
计算其矩阵逆结果为:
$$
(X^T \cdot X)^{-1} =
\begin{bmatrix}
2.38 & -1.23 & 0.11 \newline
-1.23 & 0.78 & -0.08 \newline
0.11 & -0.08 & 0.01
\end{bmatrix}
$$
然后再计算后面的一部分:
$$
X^{T} \cdot Y =
\begin{bmatrix}
150 \newline
590 \newline
3260
\end{bmatrix}
$$
最后得到其beta为如下,其中a0系数为10.23,a1为-2.17,a2为2.02:
$$
\beta =
\begin{bmatrix}
10.23 \newline
-2.17 \newline
2.02
\end{bmatrix}
$$
然后就可以带入公式进行预测:
$$
y = 10.23 + (-2.17) * x2 + 2.02 * x^2
$$
然后就可以使用上述的公式来预测3公里配送的时间,这次使用了二次多项式进行拟合数据,预测的数据也比较准确:
$$
10.23 + (-2.17) * 3 + 2.02 * 9 = 21.9
$$
三次多项式回归
三次多项式考虑了更多曲线波动的能力,但计算过程依旧和二次多项式是一致的吗,三次多项式的公式为:
$$
y = a_0 + a_1x + a_2x^2 + a_3x^3
$$
将公式转换为矩阵计算为:
$$
X \cdot \beta = Y
$$
将每个矩阵拆开来看为:
$$
Y =
\begin{bmatrix}
y_1 \newline
y_2 \newline
y_3 \newline
y_4 \newline
y_5
\end{bmatrix}
$$
$$
X =
\begin{bmatrix}
1 & x_1 & x_1^2 & x_1^3 \newline
1 & x_2 & x_2^2 & x_2^3 \newline
1 & x_3 & x_3^2 & x_3^3 \newline
1 & x_4 & x_4^2 & x_4^3 \newline
1 & x_5 & x_5^2 & x_5^3 \newline
\end{bmatrix}
$$
$$
\beta =
\begin{bmatrix}
a_0 \newline
a_1 \newline
a_2 \newline
a_3
\end{bmatrix}
$$
按照最小二乘法的方式计算beta得到数据:
$$
\beta =
\begin{bmatrix}
11.62 \newline
-2.68 \newline
1.49 \newline
0.15
\end{bmatrix}
$$
最后得到预测模型:
$$
y = 11.62 + -2.68 \cdot x + 1.49 \cdot x^2 + 0.15 \cdot x^3
$$
预测3公里配送时间为21.04分钟。
多维多项式回归
多维多项式回归是基于多项式回归的扩展,用于多个自变量对于一个因变量的关系建模,虽然多维复杂度更高,但本质原理是类似的,下面是一个二次二维多项式公式为:
$$
y = a_0 + a_1x_1 + a_2x_2 + a_3x^2_1 + a_4x^2_1 + a_5x_1x_2
$$
含义:
- 常数项 a_0: 表示当所有自变量为 0 时的 y 值(基础影响)。
- 一次项 a_1x_1, a_2x_2: 表示每个自变量线性变化对 y 的直接影响。
- 二次项 a_3x_1^2, a_4x_2^2: 表示每个自变量的加速或减速趋势。
- 交互项 a_5x_1x_2: 表示两个变量之间的交互效应,即 x_1 和 x_2 如何共同影响 y。
其计算方式同样是差不多的,都是通过转换矩阵,然后通过计算beta来得到所有的系数:
$$
X \cdot \beta = Y
$$