10-简单线性回归

说在前面

  在之前的博客中,已经系统学习了处理分类问题的一种简单的机器学习算法 k近邻算法。下面我将系统的学习机器学习领域的另一个重要算法:线性回归法

  线性回归法与 k近邻算法不同,kNN 算法主要用于解决分类问题,而线性回归算法主要用于解决回归问题。对于线性回归算法来说,它也是一种思想简单,实现容易的机器学习算法。通过之后的学习,就会看到它实现容易是和它背后具有非常强的数学性质是相关的。所以这个相应的数学推导就会稍微复杂一点,但是也并不是特别难。但是由于有这种数学的支撑,使得我们计算机的实现上是很容易的。与此同时,线性回归法虽然非常简单,但是我们之后就会看到它是许多强大的非线性模型的基础。那么,我个人认为,无论是多项式回归,逻辑回归,甚至是 SVM,从某种程度上来讲,都可以理解为是线性回归算法的一种拓展。最重要的是,线性回归算法的结果具有很好的可解释性。也就是说我们能够通过线性回归算法通过对数据的分析,模型的建立,学习到真实世界真正的知识。也正是因为如此,在很多学界领域的研究中,很多时候都会先尝试使用线性回归算法这样一个最基本,最简单的方式。最后,通过对线性回归算法的学习,还可以看到蕴含机器学习中的很多重要思想。


线性回归法(Linear Regression)

  首先,我们来看一下,什么是线性回归算法?

  我还是举出一个例子来说明,下图 x 轴代表的是房屋的面积,y 轴代表的是房屋地价格,相应的每一个点都表示一个数据。
在这里插入图片描述
  那么,对于每一个房屋的来说,就表示成每一个点,每一个房屋有自己房屋的面积和房屋的价格,于是就可以在二维平面上形成一个点。那么用线性回归算法来说,我们认为房屋的面积和价格之间呈一定的线性关系,也就是随着房屋面积的增加,价格也会增大,并且这个增大的趋势是线性的,没有指数级的增大那么夸张。那么在这样的假设下,我们就在想可不可以找到一条直线,我们希望这条直线可以最大程度的 “拟合” 样本特征和样本输出标记之间的关系,在我们举出的这个例子中,每个样本只有一个特征,它就是房屋的面积,而每一个样本的输出标记就是它的价格。
在这里插入图片描述

  那么在这里,一定要注意,我们同样是画了一个二维平面图,但是现在我们这个二维平面图跟我们之前所学习的分类问题的二维平面图有很大的区别,这个区别在于之前所学习的分类问题横轴和纵轴都是样本的特征,比如之前所举出的肿瘤的例子,横轴代表肿瘤的大小,纵轴代表发现的天数。那么这个样本的输出标记就是该点的颜色,即该点是蓝色还是红色,蓝色代表恶性肿瘤,红色代表良性肿瘤。
在这里插入图片描述
  但是我们在这举出的房屋的例子中,只有横轴是样本的特征,就是房屋的面积,纵轴就已经是样本的输出标记了,也就是房屋的价格。这是因为在回归问题中,我们真正要预测的是一个具体的数值,这个具体的数值是在一个连续的空间里的,而不是简单的可以用不同的颜色来代替的不同的类别,所以它需要占用一个坐标轴的位置。
在这里插入图片描述
  如果我们想要看两个样本特征的回归问题的话,那么就需要在三维空间中进行观察了。由于我是初学,我就只学习只有一个特征的线性回归问题。对于样本特征只有一个的这种情况,我们称做简单线性回归。通过对简单线性回归的学习,其实可以学习到线性回归算法相应的很多内容,之后我们再将它推广到样本特征有多个这种情况下,通常样本特征有多个的情况就叫做多元线性回归。

  现在,我们先来看看简单线性回归问题。我们说想要找一条直线,这条直线最大程度的拟合这些样本的特征点,在这里,在二维平面中,这条直线方程就应该表示成 y = ax + b,其中 a 表示斜率,b 表示截距。相应地,对于每一个点来说,它就对应每一个样本特征 x(i),i 表示第 i 个样本点,相应的,它对应的输出标记就是对应的 y(i)在这里插入图片描述
  如果对于这条直线,我们找到了 a 和 b,相应地,我们就可以将 x(i) 这个特征值带入直线方程中,得到的 y 就是我们使用简单线性回归法预测出来的对于 x(i) 对应的这个特征,也就是对于 x(i) 这个房屋的面积它的价格是多少,这里我将它叫做 y 的预测值。相应的,我们的预测值和真值之间就会有一个差距。
在这里插入图片描述
  这里我们总结一下,对于简单线性回归问题,我们假设找到了最佳拟合的直线方程 y = ax + b,那么对于每一个样本点 x(i) 来说,根据我们的直线方程,预测值为:
在这里插入图片描述
  而对于每一个 x(i) 来说,它又有一个真值 y(i),那么在这种情况下,我们想要寻找最佳拟合的直线方程,就应该使得:
在这里插入图片描述
  那么我们怎么表示两者之间的差距呢?一个简单的方式是它俩做减法:
在这里插入图片描述
  但是这里显然是不正确的,因为有可能预测的值比真值大,也有可能小于真值,那么做减法得出的值有可能为负值,也有可能为正值,那么这样的正正负负这样相加得出来的结果有可能为0,这显然是不符合我们的要求的。比如说,举个简单的例子,这有两个样本,我们找到一条直线,对于这条直线来说,预测 a 样本差值为 +100,预测 b 样本差值为 -100,那么这两个样本预测的差值的和是0,此时我们说这条直线完全拟合了这个样本显然是不合理的。那么很显然的一个表示方法就是取它们差值的绝对值:
在这里插入图片描述
  使用绝对值表示差距其实是可以的,但是我们在后面计算具体的 a 和 b 的时候,使用绝对值是非常不方便的。因为 y = |x| 这个函数它不是一个处处可导的函数,但是我们后续要计算这个 a 和 b 的值需要找到一个方程的极值,所以需要整个函数可导,所以我们这里不使用绝对值。

  那么不使用绝对值,相信我们都想到了一个非常简单的思路,就是将它们的差值进行平方。通过平方之后,我们也解决了两个值相减的正负号问题,同时 y = x * x 这个函数是一个非常好的处处可导的连续函数。我们可以用它来衡量 y 的预测值和真值之间的差距。
在这里插入图片描述
  相应的,我们如果考虑所有的样本,就会得到这么一个式子:
在这里插入图片描述
  下面,我用一张图来总结一下整个过程。
在这里插入图片描述

  对于最后得出的求和式子,也就是 i 从 1 到 m 所有的这 m 个样本,都计算一下 y 的预测值和真值之间差距的平方,现在我们得出了这个式子,我们的目标就是使这个式子的值尽可能地小。
在这里插入图片描述
  通过上图地推导,我们得出了式子(2),现在我们的目标就是找到 a 和 b,使得式子(2) 尽可能小。而且对于式子(2) 来说,只有 a 和 b 两个未知数,x(i) 和 y(i) 是已知数,因为我们是监督学习。

  在这里,我们先不着急求这个式子,我们先来看看我们推导出来的这个目标:
在这里插入图片描述
  我要现在要做的就是找到某一些参数值,使得某一个函数尽可能地小。这是典型地一种机器学习算法的基本思路。换句话说,我们所谓的建模的过程,其实就是找到一个模型最大程度地拟合我们的数据,那么在线性回归算法中,这个模型就是一个直线方程,所谓最大的拟合我们的数据,其实本质就是找到这么一个函数:
在这里插入图片描述
  在这里,我们称这个函数为损失函数(loss function)。也就是说,度量出我们这个模型没有拟合住我们的样本的这一部分我们叫做损失的那一部分。但是在有的算法中,有可能度量的是拟合的程度,那么在这种情况下,称这种函数为效用函数(utility function)。那么不管是损失函数还是效用函数,我们的机器学习算法都是通过分析问题,确定问题的损失函数或者效用函数,并且通过最优化损失函数或者效用函数(希望损失函数尽可能小,效用函数尽可能大),来获得机器学习的模型。近乎可以说所有参数学习的算法都是这样的套路。

在这里插入图片描述
  正是因为机器学习中大部分的算法都拥有这样的思路,所以有一个学科叫做最优化原理。实际上,最优化原理绝对不仅仅是机器学习算法中使用的一个思路,在经典的传统的计算机算法领域最优化原理也发挥了重要的作用。其实仔细思考一下就会发现,我们使用计算机解决的非常多的问题它们的本质都是一个最优化问题。比如说,我们对最短的路径感兴趣,对最小生成树感兴趣,我们求解背包问题总是希望总价值是最大的等等等等。那么,对于这些传统的算法它们背后的思想其实抽象出来也都可以在最优化原理这个领域中找到相关的答案。那么相应的,在最优化领域还有一个分支领域叫做凸优化,它解决的是一类特殊的优化问题。

  我们继续回到简单线性回归问题。我们就是要找到 a 和 b,使得得到的式子尽可能地小。
在这里插入图片描述
  这是一个典型地最小二乘法问题,有可能你对最小二乘法不是特别的熟悉,但是只需要知道它处理的就是最小化误差的平方。a 和 b 都有直接的数学表达式。
在这里插入图片描述
  有些小朋友可能对背后的数学不感兴趣,那么就直接看这个式子就好了。但是我个人认为,这个式子也不需要背,主要是现在的信息很发达,只要上网一搜,就可以搜到,直接去使用就好了。另一方面,如果你对 a 和 b 怎么得到这个结果感兴趣的话,那么可以仔细地推导一遍。


下一篇博客中,我将对这个过程进行推导~~

猜你喜欢

转载自blog.csdn.net/qq_41033011/article/details/108997659