LinearRegression的思想
线性回归是用来解决回归类问题的最简单最基础的算法,虽然简单,但是它也是之后逻辑回归,多项式回归等复杂算法的基础。我相信大部分人在高中都已经接触过简单的一元线性回归,那就先让我们从简单的一元线性回归开始,来感受一下线性回归算法的主要思想。首先我们拿出一组数据,这些数据只具有一个特征,然后假设这些特征值与结果之间具有某种线性关系,我们试图找出一条直线,来最大拟合这组数据,从而达到预测的目的。
假设现在我们已经找到了这条直线,就是图中的那一条直线,那么要使这条直线最大拟合训练数据,我们就需要使真实数据的值与直线预测的值之间的差距达到最小,我们可以定义如下损失函数(loss function)
$$\sum^{m}_{i = 1}{|\hat{y}^{(i)}-y^{(i)}|}$$
我们的目的即使找到这个损失函数最小时所对应的a,b,但是显然,含有绝对值的式子是不可导的,所以我们想到了一个很简单的方法—用平方
$$\sum^{m}{i = 1}{(y^{(i)}-\hat{y}^{(i)})^{2}} = \sum^{m}{i = 1}{(y^{(i)}-ax^{(i)}-b)^{2}}$$
对以上的式子分别对a、b求导即可得出最小二乘法公式,求导过程我们不再一一赘述。
到这里我们已经得到了式子中的所有未知数,现在我们就可以直接把事物的特征值代入预测结果了。
简单一元回归的向量化计算
我们再对最小二乘法中的a的计算公式加以观察可以发现,式子的分子分母都是可以看作两个向量的点乘结果,于是我们可以用向量化的方法优化计算过程,减少算法拟合所需要的时间。
评价线性回归的指标
- 均方根误差RMSE(均方根误差MSE的开根)
- 平均绝对误差MAE
- R Squared这个指标是在线性回归中用的最广泛的指标。R Squared具有一下特点:
1.R^2 <= 1
2.R^2越大越好,当预测模型不犯任何错误的时候R^ = 1
3.当我们的模型等于基准模型的时候,R^2=0
多元线性回归与正规方程解
以上我们了解了简单一元线性回归的思路与实现。那么我们很容易能类比得出多元线性回归的预测表达式的形式
$$\hat{y}^{(i)} = \theta_{0}+\theta_{1}X_{1}^{(i)}+\theta_{2}X_{2}^{(i)}+…+\theta_{n}X_{n}^{(i)}$$
式子中的θ0代表截距,X是物体的特征值向量,为了统一,我们虚拟出来一个X0,使它与截距相乘,这样上面的式子就可以表示成一个θ系数向量与一个X特征值向量的星乘(*)θ代表参数向量,Xb代表物体的特征值向量
$$\hat{y}^{(i)} = \theta_{0}X_{0}^{(i)}+\theta_{1}X_{1}^{(i)}+\theta_{2}X_{2}^{(i)}+…+\theta_{n}X_{n}^{(i)}$$
$$\hat{y}^{(i)} = X_b*\theta$$
求解上面的损失函数总体思想和最小二乘法类似,但是步骤比较繁琐,且需要较高阶的线性代数的知识,所以这里就不一一证明,我们直接得出最后的答案,也就是正规方程解
部分底层代码实现
在这里我只给出简单一元线性回归的算法手写实现,多元的原理一致,直接把公式代入即可