机器学习(2)--多元线性回归算法

吴恩达ML课程课后总结,以供复习、总结、温故知新,也欢迎诸位评论讨论分享,一起探讨一起进步:


上一篇:机器学习(1)--单变量线性回归算法https://blog.csdn.net/qq_36187544/article/details/87866232

下一篇:机器学习(2)--单元、多元线性回归Python实现(附练习数据资源百度云)https://blog.csdn.net/qq_36187544/article/details/87888615


问题描述,较单元线性回归问题而言,多元线性回归增加变量个数即单变量推广到多元:

运用梯度下降法时,方法同单变量线性回归,代价函数如下:

仍旧是分别求偏导,不断迭代,直至收敛:

以上是多元线性回归的梯度下降的算法


出现了一个问题,多变量的时候,变量的取值范围将有差异,如果差异过大,产生的代价函数极不规整,像特别狭长的椭圆,这时候进行梯度下降时,路径会十分曲折。下图是例子,左边x1与x2相差3个数量级,右边差不多,右边的收敛性好。

采用特征缩放:特征取值应当比较接近,不要相差过大。可做归一化处理,为了让梯度下降更快收敛更快

归一化:(x-μ)/s,减去平均值再比上标准差(标准差可替换为最大值减最小值),这样范围就相近,收敛性较好

此外,如何选择学习率也是一个问题,过大易不收敛,过小收敛过慢,可绘制以J(θ)为纵坐标,迭代次数为横坐标的图:

收敛形式如上图,如果曲线奇怪,则考虑减小学习率α,收敛过慢,考虑增大α

扩展到非线性空间:

回归方程的选择因实际情况而定,不要拘泥死板


除了通过梯度下降的方法求代价函数最小值时对应的参数θ,也可通过正规方程来求的,以数学思维来求的:

实际问题可抽象成矩阵方程Xθ = Y(θ是向量,为[θ0,θ1,θ2...]):

现在的问题即求解此方程,稍微推了下正规方程怎么来的,由于X可能并不是方阵,应该说大多数情况下都不是,所以两边先同时左乘一个XT,再求解。

仍可能存在问题:XTX不可逆,可通过正则化去掉线性相关变量等操作继续实现。

正规方程于梯度下降函数对比:

梯度需要选择学习率,需要迭代
正规当变量过多,计算很慢(逆矩阵的代价等同于O(n^3)),可以10000作为分割点

猜你喜欢

转载自blog.csdn.net/qq_36187544/article/details/87879423