线性回归与多项式回归

线性回归是最简单的一种机器学习算法,可分为一元线性回归和多元线性回归(也就是特征数量不同),这里先主要介绍一元线性回归。举一个简单的例子,有一组带标签样本(xi,yi),x是特征y是响应变量(标签),认为他们服从线性方程:
$$y_i=a+bx_i+c$$
其中b是回归系数,a+bxi是回归函数,c则是随机误差。

我们要做的就是估计a、b,使得函数对数据尽可能好地拟合,同时也具有较好的泛化能力。虽然实际上我们可以从理论上推导出a、b的最优值,但是既然是机器学习,就应该把这些工作交给计算机完成。按照机器学习的流程,我们首先为ab定义一个初始点(比如(0,0)),然后定义损失函数,这里我们采取最小二乘法,定义每点的误差再相加,得到的函数称为RSS(Residual Sum of squares):
$$RSS = (y_1 - \hat\beta_0 - \hat\beta_1 x_1)^2 + (y_2 - \hat\beta_0 - \hat\beta_1 x_2)^2 + ... + (y_n - \hat\beta_0 - \hat\beta_1 x_n)^2$$
通过RSS进一步构建损失函数MSE(均方误差)。得到损失函数和初始点之后,就可以采取梯度下降法,计算梯度,然后得到新的a、b取值,不断重复这个过程,直到最后MSE小于一定值,即可完成对ab的估计。

针对更一般的多元线性回归,可把多个变量写成矩阵形式,并得到更一般的回归方程:
$$f(x_i) = w^T x_i +b$$
虽然特征变多了,本质上我们还是估计参数,让MSE变小,所以只是改变了输入格式,整个流程还是一样的。

我们可以扩展一下线性回归,之前假设特征和响应变量之间服从一元一次方程的关系,可是如果遇到一元函数没办法很好拟合数据的情况,就需要多项式回归了。

多项式回归主要是加入了特征的更高次项,相当于增加了模型的自由度,或者说增加了模型的复杂度,使得模型可以更好更灵活地拟合数据(正则化里有讲述相关模型复杂度和特征次数的关系)。

假如现在有一个特征,那么多项式回归方程为:
$$\hat h = \theta_0 + \theta_1 x^1 + ... + \theta_n x^n$$
也可以写成向量形式:
$$\hat h = X·\theta_0 $$
有了向量形式,即使我们考虑多个特征,也可以很简洁地写出来了。

事实上,线性回归就是特殊的多项式回归,这很好理解,最后,我想说的是,不考虑过拟合之类的问题,理论上来说,多项式回归应该是可以拟合任何的数据的,因为我们有泰勒定理,任意的函数都可以通过泰勒级数逼近,或许我们构建的多项式过于复杂,有很多项是不需要的(因为多项式回归必须把同一次项的所有情况都要考虑,比如两个特征的三次多项式,只要是特征的幂是三就需要称为多项式的项,而不仅仅是每个特征的一二三次幂),但是我们也要知道,在训练模型的过程中,对数据影响不大的项的参数是会最终趋于零的,所以不考虑计算量、过拟合等问题,哪怕我们只用多项式回归这个方法,也足够拟合任意的数据集了。