下一篇:机器学习(2)--单元、多元线性回归Python实现(附练习数据资源百度云)
问题描述,较单元线性回归问题而言,多元线性回归增加变量个数即单变量推广到多元:
运用梯度下降法时,方法同单变量线性回归,代价函数如下:
仍旧是分别求偏导,不断迭代,直至收敛:
以上是多元线性回归的梯度下降的算法
出现了一个问题,多变量的时候,变量的取值范围将有差异,如果差异过大,产生的代价函数极不规整,像特别狭长的椭圆,这时候进行梯度下降时,路径会十分曲折。下图是例子,左边x1与x2相差3个数量级,右边差不多,右边的收敛性好。
采用特征缩放:特征取值应当比较接近,不要相差过大。可做归一化处理,为了让梯度下降更快收敛更快
归一化:(x-μ)/s,减去平均值再比上标准差(标准差可替换为最大值减最小值),这样范围就相近,收敛性较好
此外,如何选择学习率也是一个问题,过大易不收敛,过小收敛过慢,可绘制以J(θ)为纵坐标,迭代次数为横坐标的图:
收敛形式如上图,如果曲线奇怪,则考虑减小学习率α,收敛过慢,考虑增大α
扩展到非线性空间:
回归方程的选择因实际情况而定,不要拘泥死板
除了通过梯度下降的方法求代价函数最小值时对应的参数θ,也可通过正规方程来求的,以数学思维来求的:
实际问题可抽象成矩阵方程Xθ = Y(θ是向量,为[θ0,θ1,θ2...]):
现在的问题即求解此方程,稍微推了下正规方程怎么来的,由于X可能并不是方阵,应该说大多数情况下都不是,所以两边先同时左乘一个XT,再求解。
仍可能存在问题:XTX不可逆,可通过正则化去掉线性相关变量等操作继续实现。
正规方程于梯度下降函数对比:
梯度需要选择学习率,需要迭代
正规当变量过多,计算很慢(逆矩阵的代价等同于O(n^3)),可以10000作为分割点