线性回归算法原理与总结

什么是线性回归

和之前介绍的K*邻算法不同,K*邻主要是解决分类问题,而线性回归顾名思义是用来解决回归问题的。而线性回归具有如下特征:

解决回归问题

思想简单,实现容易

许多强大的非线性模型的基础,比如逻辑回归、多项式回归、svm等等

结果具有很好的可解释性

蕴含机器学*中的很多重要思想

那么什么是线性回归呢?我们画一张图:

线性回归算法原理与总结

图中是房屋的面积与价格之间的对应关系,不同的面积对应不同的价格,由此在二维平面中便形成了多个点。我们的目的就是要找到一条直线,最大程度上来拟合这些点。

但是在之前的K*邻中,横轴和纵轴都是样本的特征,而标签则是由这个点是红色还是蓝色决定的。但是在线性回归中,由于是房产数据,我们必须要预测出一个具体的数值,而不能像分类问题那样,用简单的颜色来代表类别。而这些数据显然是在一个连续的样本空间中,因此需要一个坐标轴来表示。也正因为如此,在二维平面中只能有一个特征,要是多个特征,我们就要在更高的维度上进行观察了。

如果样本的特征只有一个,我们称之为简单线性回归。

我们的目的是要找到一个直线来尽可能多的拟合这些点,而在二维平面上显然是 \(y = ax + b\) ,那么对于每一个样本 \(x\),都会有一个真实值 \({y}\) 和使用拟合曲线预测出来的预测值 \(\hat {y}\) ,因此我们的真实值和预测值就会有一个差距。而 \(y = ax + b\) 可以对应平面中的任何曲线,我们的目的显然是找到真实值和预测值之间的差距能达到最小的那根曲线。

因此如果使用数学来描述的话就是:对于每一个样本点 \(x^{i}\) ,都有一个真实值 \(y^{i}\) ,和一个预测值 \(\hat {y}^{i} = ax^{i} + b\) ,而我们希望 \(y^{i}\) 和 \(\hat y^{i}\) 之间的差距尽量小。如果考虑所有样本的话,那么就是所有样本的预测值和真实值之差的平方和 \(\displaystyle\sum^{m}_{i=1}(y^{i} - {\hat y^{i}})^{2}\) 最小。

既然有真实值和预测值,那么评价一个直线的拟合程度,就看所有样本的真实值和预测值之差。但是显然我们不能直接将两者之差加在一起,那么两者之差可能有正有负,会抵消掉;若是取绝对值的话,那么我们知道,这不是一个处处可导的函数,因为我们后面在求系数和截距的时候,是需要函数处处可导的。那么显然容易想到取两者之差的平方,而且也将正负的问题解决了,然后再将m个样本进行相加即可。

因此我们最终的目的就是找到一个合适的 \(a\) 和 \(b\) ,使得 \(\displaystyle\sum^{m}_{i=1}(y^{i} - ax^{i} - b)^{2}\) 达到最小,然后通过 \(a\) 和 \(b\) 来确定我们的拟合曲线。

我们可以对式子进行化简,但是我们先不着急这么做,我们可以先看看机器学*的思路。

我们的目标是找到 \(a\) 和 \(b\) ,使得 \(\displaystyle\sum^{m}_{i=1}(y^{i} - ax^{i} - b)^{2}\) 达到最小,而 \(\displaystyle\sum^{m}_{i=1}(y^{i} - ax^{i} - b)^{2}\) 便被称为"损失函数(loss function)",与之相对的还有一个"效用函数(utility function)"。

*乎所有的参数学*算法,都是这个模式。得出一个损失函数或者一个效用函数,两者统称为目标函数。通过不断地优化,使得损失函数的值达到最小,或者效用函数的值达到最大。这不是特定的某个算法,而是*乎所有的参数学*都是这个套路,比如:线性回归、多项式回归、逻辑回归、SVM、神经网络等等。本质上,都是在学*参数,来最优化目标函数。只不过由于模型的不同,因此建立的参数、优化的方式也不同。

也正因为机器学*的大部分算法都拥有这个特征,于是有了一门学科,叫最优化原理。

回到我们的问题,那么我们如何才能求出 \(a\) 和 \(b\) 呢?显然要通过求导的方式,如果你还记得高中学*过的数学知识,那么你会发现这不就是最小二乘法嘛。下面我们就来推导一下,当然啦,如果不感兴趣可以只看结论,但是最好还是要掌握一下推导过程,对自身是有帮助的。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwsxyz.html