人工智能系列(八)机器学习方法之线性回归

原力君在前面系列中简单介绍了机器学习中的神经网络与深度学习,这也是目前媒体炒作最热门的一种机器学习方法。之所以热门,是因为很多大厂都基于深度学习完成了一些令人印象深刻的应用实例。为什么是大厂?因为深度学习需要雄厚的硬件、丰富的数据、和过硬的技术支持,而一般的小厂不具备这个能力。深度学习虽然火爆,但是目前的大厂大都在堆积GPU/TPU硬件、加深神经网络层数、增加训练样本量,其理论基础并没有出现多少创新。不管多么高深的技术,都是从最基础的理论发展而来的。今天,我们聊聊机器学习中最基础的线性回归。

人工智能系列(八)机器学习方法之线性回归

<strong>最简单的线性回归方程

我们在前面的系列中提到过,高中时候学过一种叫线性拟合的东西,其基本内容是:给你一组数据对(xi,yi),i=1,2,…,n;是否有一种方法可以将y与x之间的关系拟合出来。换句话说,是否可以找到一个函数关系f(x),能够满足yi=f(xi)。当然,高中时候学习到的内容比较简单,所以给的数据对通常都是线性关系,这种线性关系可以用线性回归方程y=ax+b来表示。

人工智能系列(八)机器学习方法之线性回归

高中学过的线性回归方程中变量都是实数是一维的,因此常称为一元线性回归。但是实际中经常遇到变量是多个维度的问题,即yi还是实数,但是xi变成了一个响亮xi=[xi1 xi2 … xin],这个时候如何进行线性回归呢?

<strong>机器学习中的线性回归

机器学习中经常处理多维变量的线性回归问题,也常称为多元线性回归。有人问了,多元线性回归与一元线性回归有什么区别吗?答案是:形式上基本没有区别。多元线性回归方程通常也是表示为y=ax+b的形式,只不过这里a是一个与x维数相同的参数向量,y=ax+b表示为n维空间中的一条直线。因此,不管是一元线性回归还是多元线性回归,都可以看作是一种直线拟合问题。

有人说了,这就完事儿啦?不就是拟合直线吗。NONO,线性回归方程y=ax+b中等式右边确实是个线性形式,但是我们从另一个角度想象,如果让y是一个变量的函数呢?比如,y=lnz,也就是说z=exp(y),是y的指数函数。会发生什么呢?

如果z=exp(y),那么y=lnz。此时,我们拟合出来的直线是lnz(也就是y)和x的关系,进而我们可以得到z和x的关系:z=exp(ax+b). 是不是很神奇?我们竟然用线性拟合的方法得到了两个变量之间的非线性关系。照着这个思路发散开去,只要z和x之间的函数关系g(ax+b)是可逆(有反函数g')的,那么我们就可以使用y=g'(z)=ax+b的方式,将未知参数a和b辨识出来。

<strong>基于线性回归的分类方法

机器学习中经常涉及到分类问题。假设我们已经有数据x和对应的输出y,并且y和x之间实现性关系:y=ax+b. 假设x所属的分类是由y取值的大小来确定的,即z=g(y):如果 y<0, 则 z=0; 如果y=0, 则z=0.5; 如果y>0, 则z=1. 其中,z表示x所属的分类。就像前面提到的,如果g(y)有反函数,我们就可以用线性回归的方法得到y=g'(z)=ax+b的方法得到未知参数a和b。但是这里,z=g(y)是分段函数,不可导没有反函数。那怎么办呢?

后面的内容就是机器学习中可以自由发挥的部分了。比如,为了应对分段函数,你可以找一个在分段位置处与g(y)相等,但是其他部分连续的函数来近似代替分段函数。在这个例子中,我们可以用z=1/(1+exp(-y)),这就是我们在神经网络中提到的sigmoid函数,这个函数在y=0, y=正无穷,y=负无穷处,与前面的分段函数g(y)是相等的,但是在y的其他取值处时平滑连续的。

人工智能系列(八)机器学习方法之线性回归

就这样,我们把一个分段函数分类问题,转变成了一个线性回归问题。有人问了,为什么一定要转变成线性回归问题呢?分类问题不是有更高级的算法么,比如神经网络也可以解决分类问题的。答案是:线性回归模型是线性的,是可以明确解释清楚的模型;而神经网络是复杂的非线性的,而且训练完之后我们没法解释输入输出之间的关系。

除了利用简单的函数近似来解决分类问题,线性回归还可以用于样例投影的方法来解决分类判别问题、利用拆解法来解决多分类问题等等;而神经网络也可以说是线性回归思想扩展到复杂形式之后得到的一种方法。

<strong>一句话总结:线性回归是机器学习方法的一种基础理论;线性回归可以解决直线拟合问题,也可以解决曲线拟合问题、分类问题等。


分享到:


相關文章: