线性回归, 最简单的机器学习算法, 当你看完这篇文章, 你就会发现, 线性回归是多么的简单.
首先, 什么是线性回归. 简单的说, 就是在坐标系中有很多点, 线性回归的目的就是找到一条线使得这些点都在这条直线上或者直线的周围, 这就是线性回归(Linear Regression).
是不是有画面感了? 那么我们上图片:
那么接下来, 就让我们来看看具体的线性回归吧
首先, 我们以二维数据为例:
我们有一组数据\(x\)和\(y\), 其中\(x\)是我们的特征, \(y\)就是我们的真实值(也就是每一个x对应的值), 我们需要找到一个\(w\)和\(b\)从而得到一条直线\(y=wx+b\), 而这条直线的\(w\)和\(b\)就是我们线性回归所需要求的参数
那么, \(w\)和\(b\)需要怎样求得呢? 那么我们需要先来了解一下他的机制
如我们之前所说, 我们需要这条直线使得所有的点尽可能的在直线上或者直线的两边, 也就是说, 我们这些\(x\)在我们直线上对应的值与我们真实的值的差尽可能的小, 即\(|y-(wx+b)|\)尽可能的小, 因此就有了我们的损失函数:
\[L=\frac1n\sum^n_{i=1}(y-(wx+b))^2 \]
那么我们的目标就变成了使得\(L\)尽可能的小
首先我们对损失函数求导:
\[\frac{\partial L}{\partial\omega}=2\left(\omega\sum^n_{i=1}x_i^2-\sum^n_{i=1}(y_i-b)x_i\right)=0 \]
\[\frac{\partial L}{\partial b}=2\left(nb-\sum^n_{i=1}(y_i-\omega x_i)\right)=0 \]
求解以后可得:
\[\omega=\frac{\sum^n_{i=1}y_i(x_i-\overline x)}{\sum^n_{i=1}x^2_i-\frac1m\left(\sum^m_{i=1}x_i\right)^2} \]
\[b = \frac1m\sum^n_{i=1}(y_i-\omega x_i) \]
其中\(\overline x=\frac1n\sum^n_{i=1}x_i\)即\(\overline x\)是\(x\)的均值
而这就是我们的最小二乘法, 求解得到的\(w\)和\(b\)就是我们拟合出来的直线的参数.
那么就下来, 我们来看一看当\(X\)为多维的情况, 也就是多元线性回归
与上面的一样, 我们需要拟合一个直线\(w^TX+b\)使得大多数的点在直线上或者在直线周围, 不同的是, 现在我们的\(w\)是多维的, 而我们的损失函数也就变成了
\[L=\frac1n\sum^n_{i=1}(y-(w^TX+b))^2 \]
根据上面的经验, 我们需要对损失函数求偏导, 在这里就不赘述了, 大家可以参考https://xiaoxiablogs.top/index.php/机器学习/least-square-method.html
以上, 就是我们的线性回归以及使用最小二乘法求线性回归了