线性回归
前言
老实说,西瓜书作为新入门的同学来说,并不是很好的一个选择,因为西瓜书以总结的方式介绍了各种机器学习的模型和算法,公式推导以及讲解过程很多地方都是一笔带过,直接给出结论,不利于新手入门,刚入门的还是去看网易公开课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,使得损失值最小,但是用代码实现起来比较困难,一般可以用梯度下降的方式来求,我在后面讲梯度下降怎么做的。
相关阅读
一:损失函数,代价函数,目标函数定义首先给出结论:损失函数(Loss Function )是定义在单个样本上的,算的是一个样本的误差。代价函数(Cost F
首先信息、香农熵、条件熵、信息增益都是信息论里面的概念。本文章的讲解和代码实现(除了条件熵和信息增益)都基于两个随机变量的样
最小二乘法是求线性回归问题最基础的方法之一,最近花了一点时间深入研究了一下,然后简单的整理一下思路。 先从一个简单的例子开始,
前言博主第一次接触过机器学习,内容可能有许多原文复现,但是我尽量用自己的话来讲,第一次写博客,就当作自娱自乐也好。读书笔记第一目
前言:当影响因变量的因素是多个时候,这种一个变量同时与多个变量的回归问题就是多元回归,分为:多元线性回归和多元非线性回归。线性回