机器学习-线性回归问题

机器学习-线性回归问题

 

 

西瓜书中的一个例子,若在西瓜问题中学得:

                                        

则意味着可通过综合考虑色泽、根蒂和敲声来判断瓜好不好,其中根蒂最要紧,而敲声比色泽更重要,这里的0.2、0.5、0.3直观的表达了各属性在判断西瓜好坏的重要性。

所谓的线性回归,就是利用数理统计中的回归分析,来确定两种或两种以上变量间,相互依赖的定量关系的一种统计分析方法。

 

这里根据特征和输入变量的数目,将线性回归问题分为两种:单变量线性回归和多变量线性回归,即.

1、单变量线性回归

首先,来看下单变量线性回归

即由样本(x,y),推断y=wx+b的过程。其中w,b为需要推断的常量。这里有两个问题。

(1)为什么是"y=wx+b"型的一元一次结构?而非其它一元N次结构?

(2)如何推算出w,b?

1.1 假设函数

先来回答上一小节的问题(1)。可以使用其它一元N次结构。选择一元一次结构只是为了方便。之后的学习,可以换为更复杂的拟合结构。由于我们假设x,y之间存在"y=wx+b"型的映射关系,所以函数f(x)=wx+b被称为假设函数,hypothesis function。

对于假设函数中的参数w,b,我们没有办法直接算出正确的值。也无法让所有样本,都映射到假设函数上。因此,只能推算出对于样本集合整体来说,最佳的w,b取值。

1.2 代价函数

如何评断参数w,b最佳?最佳w,b应使得假设函数求得的数据,与实际数据之间误差的平方和为最小。这种基于误差平方和最小化来进行线性模型的求解方法称为最小二乘法。在线性回归中,最小二乘法就是试图找到一条直线,使所有样本到直线上的欧式距离之和最小。求解wb使均方误差最小化的过程,称为线性回归模型的最小二乘参数估计

                                                                  

注:关于为何使用1/2m,而非1/m,因为在后面的求导运算中,“1/2”可以直接被约掉。因此,代价函数之所以取“1/2m”作为参数,是为来运算方便。

由于样本集中的每个样本(x,y)已知,算式中w和b成为了变量,算式可以看作是w,b作为变量的函数。即

                                                               

该函数,被称为代价函数,cost function,或者平方误差代价函数,squared error cost function。有了代价函数,推算w,b的问题就演化为,求代价函数何时取到最小值的问题。

当然,除了平方误差代价函数外,还存在其它代价函数。只是平方误差代价函数,是解决线性回归问题最常用的手段罢了。但不管使用何种代价函数,我们的目的终归是要推算最佳的w,b。那么,如何推算呢?

推算出w和b的解如下:

                         

                           

2、多变量线性回归

对于多变量线性回归,我们试图学得:

为了便于讨论,把w和b吸收入向量形式=(w;b),相应的,把数据集D表示为一个m×(n+1)大小的矩阵X,其中每一行对应一个示例,该行前n个元素对应示例的n个属性值,最后一个元素恒置为1,即公式由变成 可以简化成

 

同样的用最小二乘法来对进行估计,

令上式等于零可得最优解的闭式解

                                                 

3、正规方程

这种求解参数w的方法也被称为正规方程

当存在矩阵不可逆的情况时(多发生在 n>= m 时),可采用:

删除冗余的特征,如其中两个变量间存在线性关系

对于太多的特征 (m<= n),删除部分特征,或采用正则化(regularization)

注:矩阵逆运算的时间复杂度通常为 O(n^{3}),所以当 n 较大时,建议使用梯度下降。

 

4、梯度下降法

接下来我们使用梯度下降法来求解上文中关于w最优解的函数 J(θ)(这里的θ即为w) ​,步骤如下

 

1、随机初始化 ​θ

2、沿着负梯度方向迭代,使更新后的 θ​ 令 J(θ) ​ 更小,公式如下

https://upload-images.jianshu.io/upload_images/2264593-a4a471e995dd3731.jpg?imageMogr2/auto-orient/

α 为学习率、步长

3、当下降到无法下降或某个定义的极小值时,则停止下降。

 

注:梯度下降的最终点并非是全局最小点,可能是一个局部最小点

https://upload-images.jianshu.io/upload_images/2264593-ef766d1c4d86bcae.jpg?imageMogr2/auto-orient/

梯度方向,偏导数计算:

https://upload-images.jianshu.io/upload_images/2264593-362573a30ece5b91.jpg?imageMogr2/auto-orient/

4.1 批量梯度下降法(Batch Gradient Descent)

批量梯度下降法,是梯度下降法最常用的形式,具体做法也就是在更新参数时使用所有的样本来进行更新,也就是上文中的计算方法

https://upload-images.jianshu.io/upload_images/2264593-5d34133ff2a10284.jpg?imageMogr2/auto-orient/

4.2 随机梯度下降法(Stochastic Gradient Descent)

随机梯度下降法,其实和批量梯度下降法原理类似,区别在与求梯度时没有用所有的m个样本的数据,而是仅仅选取一个样本来求梯度。

https://upload-images.jianshu.io/upload_images/2264593-d3018f16ab24c953.jpg?imageMogr2/auto-orient/

对于训练速度来说,随机梯度下降法由于每次仅仅采用一个样本来迭代,训练速度很快,而批量梯度下降法在样本量很大的时候,训练速度不能让人满意。对于准确度来说,随机梯度下降法用于仅仅用一个样本决定梯度方向,导致解很有可能不是最优。对于收敛速度来说,由于随机梯度下降法一次迭代一个样本,导致迭代方向变化很大,不能很快的收敛到局部最优解。

5、梯度下降和正规方程的比较

总结一下,只要特征变量的数目并不大,正规方程是一个很好的计算参数的替代方法。具体地说,只要特征变量数量小于一万,我通常使用正规方程法,而不使用梯度下降法。

代码实现参见下篇机器学习-线性回归实战

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值