week2
多元线性回归
多元概念
输入的变量说明
多元变量的假设函数如下
如果用矩阵来表示,就是如下的结果(注意:此处默认x0这个变量是1,为了和假设函数的第一个参数对应,这样可以用两个n+1维的向量相乘)
多元变量的梯度下降方法
多元和一元的本质是一样的,我们只需要对每一个参数都进行求导迭代,最后达到收敛
如下两张图是一元和多元的区别(主要区别在于对每个参数进行求导之后乘对应的第i个变量xi即可)
梯度下降的实用方法1:特征缩放(Feature Scaling)
我们可以通过让我们的特征值都大致在一个范围内来加快梯度下降的速度,因为θ在小范围的时候会下降的快,大范围时下降的慢
-
方法一:特征缩放
用输入的特征除以该特征的范围,将得到一个范围在1以内的值 -
方法二:均值归一化
用输入的特征值减去该特征值的平均值,然后再除以标准差
μi就是特征i的均值,si是特征i的范围或者是标准差(max-min);
**ps:**The quizzes in this course use range - the programming exercises use standard deviation.
梯度下降实用方法2:学习率
检测梯度下降是否有效的两种方法
- debug方式:以迭代次数为x轴,纵轴为损失函数,如果损失函数在增加,那么应该增加α的值
- 自动收敛测试:声明如果损失函数减少的值在一轮迭代中少于E(比如10-3),那么就认为收敛,但是在实际中很难选到合适的α
总结: 如果α过于小,那么会收敛很慢(下坡慢);如果α太大,那么会造成在每一轮的迭代中损失函数并不下降,导致最终无法收敛
多项式回归
如果我们的数据不能够很好的贴合线性回归,那么我们可以将假设函数修改为高次多项式
比如:我们的假设函数是如下的线性函数
那么我们可以将它变为高次的例如
当然,我们还可以对特征进行改动
这样的情况下一定要注意特征放缩
分析计算参数
正态方程求解θ
公式:
将所有特征按照图示方法转化为 (m*n+1) 的矩阵即可,x0默认用1;结果是一个m维的列向量
对于正态方程的方法来说不需要对特征值进行一个标准化
正态方程和梯度下降的优缺点对比如下:
梯度下降 | 正态方程 |
---|---|
需要选择学习率α | 不需要选择学习率α |
需要多次迭代 | 不需要迭代 |
O (kn^2) | O(n^3)需要计算x的转置乘x |
当特征数N很大时效果好 | N越大越慢 |
一般当N超过万的数量级时选用梯度下降会更加快
正态方程的不可逆问题
在实际应用的过程中可能会出现求矩阵的逆时不可逆的情况。这种情况大致有两种原因:
- 有冗余特征,两个特征值的关联太大或者是说两者是有线性关系的
- 有太多的特征值(出现样本数目小于特征值数目)的情况,这种情况可以删掉一些特征或者使用正则化regularization的方法(稍后的课程介绍)