线性回归
约 1096 个字 预计阅读时间 4 分钟
单变量线性回归
定义
线性回归(Linear Regression)是一种用于预测连续值的最基本的机器学习算法,它假设变量y
和x
之间存在线性关系,并试图找到一条最佳拟合直线来描述这种关系。即\(y = w\times x + b\),线性回归的目标是找到最佳参数,使得预测值与真实值的误差最小,常用误差函数是均方误差 MSE:$MSE = \frac{1}{n}\times (y_i-y_{pred_i})^2 $
求解
最小二乘法
这个应该很熟悉了,高中数学就有,最小二乘法的目标是最小化残差平方和(RSS),其公式为$RSS=\Sigma_{i=1}^n(y_i-\hat{y_i})^2 $
简单推导一下: 1. 先把\(\hat{y_i}\)用\(w\times x + b\)代入,可得$RSS=\Sigma_{i=1}^n(y_i - w\times x_i - b)^2 $ 2. 显然\(x_i,y_i\)都是已知值,所以对\(w,b\)分别求偏导可得$$\begin{cases} 2\Sigma_{i=1}^n(-x_i)(y_i-w\times x_i-b) \2\Sigma_{i=1}^n(-1)(y_i-w\times x_i-b) \end{cases} $$ 3. 直接令两个偏导数等于0求驻点,可得w和b
但是学过 NA 应该知道这种解法在高维状态下的复杂度会特别高,并且数值稳定性差,所以我们在机器学习中大部分时候并不会采用这种方法。
梯度下降法
梯度下降法的目标是优化损失函数$J(w,b)=\frac{1}{2m}\Sigma_1^m(y_i-\hat{y_i})^2 $,得到一个局部最小值(local search),这里分母不是m而是2m的主要原因是为了简化计算,因为乘除正常数并不会影响取最小值的点,选择2m当分母可以抵消求导之后产生的系数2。
梯度是损失函数的偏导,表示损失函数在空间中变化的方向,对于线性回归,梯度计算如下:$$\begin{cases} \frac{\partial J}{\partial w}=-\frac{1}{m}\Sigma_{i=1}^nx_i(y_i-\hat{y_i}) \\frac{\partial J}{\partial b}=-\frac{1}{m}\Sigma_{i=1}^n(y_i-\hat{y_i}) \end{cases} $$
然后就可以迭代更新w和b,迭代公式如下:$$\begin{cases} w_{i+1}=w_i-\alpha \frac{\partial J}{\partial w} \b_{i+1}=b_i-\alpha \frac{\partial J}{\partial b} \end{cases} $$
其中$\alpha $是学习率
准确说,上面这种梯度下降应该被称作批量梯度下降(batch gradient descent),指的是在每一步都用到了所有的训练样本,比如上面我们每一步都在对预测值求和。但同时其实有不关注整个训练集,而是只关注训练集中的一些微小子集的算法。
多变量线性回归
公式转化成了$h_{\theta}(x)=\theta_0 + \theta_1 x_1+\theta_2 x_2+...+\theta_n x_n \(,此时模型的参数是一个n+1维向量,特征矩阵X的维度是 m*(n+1),因此公式可以简化为\)h_{\theta}(x)=\theta^T X $,但是多维意味着问题求解复杂度的倍增,所以我们要设法优化求解方案。
多变量也是一样的梯度下降,只是要多求几个偏导
正规方程
多元的最小二乘可以写成矩阵形式,这里推导一下。损失函数\(J=(y-\theta^TX)^T(y-\theta^TX) \(,对\)J\)所有变量求偏导$\triangledown J=-2X^T(y-\theta^TX)=0 \(,然后就可以得到\)\theta= $
特征缩放
以两个特征为例,如果这两个特征的尺度差的特别远,一个的范围是0~5,而另一个是0~2000,那么如果绘制图像,显然图形是很扁的,梯度下降可能需要特别多次的迭代,所以我们要尽量让图形变得“圆润”,比如可以选择对所有特征进行标准化到-1~1之间,最简单的方案是$x_n=\frac{x_n-\mu_n}{s_n} $
学习率调整
ads里面也学习过local search,应该知道学习率其实等价于步长,过小迭代次数会很高,过大会错过局部最小值,所以我们需要选取一个合适的学习率,比如0.01,0.03,0.1,0.3,1等
非线性回归
线性回归并不适用于所有情况,很多时候拟合函数都是曲线,但是我们可以通过一些变换把它们转化为直线,比如对于指数形式我们可以取对数