机器学习(1)-西瓜书-线性回归

前言

     老实说,西瓜书作为新入门的同学来说,并不是很好的一个选择,因为西瓜书以总结的方式介绍了各种机器学习的模型和算法,公式推导以及讲解过程很多地方都是一笔带过,直接给出结论,不利于新手入门,刚入门的还是去看网易公开课Ng的机器学习视频。对于一些有一定机器学习基础的同学来说,这本书看起来效果更好。同时,在看西瓜书的时候并不是一定要按照顺序看, 可以根据自己的需求,找合适的内容看。

  这篇blog主要介绍西瓜书里线性模型的线性回归(linear regression)。线性回归是机器学习里面最基本的模型之一,它主要的优点是解释性强,模型简单,效果不错。

1.基本形式

现在给定一个数据集,包含n个样本,x为属性表述的一个向量,维数为d,y为在向量x下的实际结果:

                                                                             

上式表示的是第i个样本的属性描述向量,x1到xd表示d个不同的属性,以西瓜为例,就是一个西瓜的属性描述,包括“色泽”,“根蒂”,“敲声”等等。我们要利用这些属性综合来判断一个西瓜是好还是坏,根据不同属性的“权重”以及最后所有属性乘以权重的和给出西瓜的一个评分,然后比较评分和预先设定的阈值来判定西瓜好坏,我们可以得到以下公式:

 


其中,wi表示每个属性对应的权重,值在0~1之间,表示的是第i个属性xi占最后结果的百分比,也可以理解为属性xi的重要性,这也是之前说线性回归的解释性很强的原因。b表示的截距,现在可以不管。f(x)也可以写成向量的形式。这样,我们就得到了线性回归的基本模型,我们接下来要做的就是怎么通过样本来计算得到权重w和截距b。

2.线性回归

  现在我们有一个数据集,x和y的描述入上述所示。现在,我们需要利用这写样本来学习得到参数w和b。学习的最终目的是使得预测f(x)和实际值y尽量接近,那么怎么描述这种接近程度?这里我们使用残差平方和:


  我们计算每个样本的预测值和实际值的差,然后求平方,在再所有样本上求和,刚说了,我们要使f(x)和y的值尽量接近,所以,这相当于要使残差平方和E最小:


  当E最小时,我们就得到一组(w,b),这就是我们最后学习得到的参数。接下来就是怎么求这个最值,常见的方法有“最小二乘”和“梯度下降”,这里我们讲讲最小二乘法。

3.最小二乘法

    为了方便理解,我们现在讨论x为一维的情况,原公式就退化了普通的二元一次方程了(y=wx+b)。最小二乘其实就是在凸函数上通过求导来计算极值,该极值为最值。

    这里分别对w和b求E的偏导:


使这两个式子等于0,就得到一组二元一次方程组,然后解方程就能求出w和b:



最后,我们将样本的x和y都带入式子就可以求得w和b具体值了。

3.1多维属性

在实际情况中,x更多的是一个多维向量,向量的不同维度表示特征描述事物的不同角度。下面讨论x为向量的情况(d>1),这里我们要学习下面这个公式中的参数:

                                                                          

上诉公式中x是一个样本的特征向量,我们还可以把所有样本的x写成矩阵的形式,其中,xi表示第i个样本的特征(它是一个d维的向量):


同时还可以把权重w写成矩阵的形式:


所以原公式也可以表示为


最后损失E可以表示为:

   

这里y也是一个n维的向量,表示每一个样本对应的实际结果或者标签。同样为了学习权重,我们可以对E求W的偏导数,对矩阵求导同样遵守链式法则:


然后令偏导为0,可以求的参数W:


值得注意的是,在现实环境中,特征向量xi的维数可能会比较大,甚至比样本数目还要大,这时候样本特征矩阵X的列数要大于行数,不是满秩矩阵,那我们就不能用求逆矩阵的方式来求W,可以通过解方程组的方式求得多个W,使得损失值最小,但是用代码实现起来比较困难,一般可以用梯度下降的方式来求,我在后面讲梯度下降怎么做的。



猜你喜欢

转载自blog.csdn.net/yeshen4328/article/details/79867683