3.1矩阵和向量
矩阵:由数字组成的矩形阵列,并写在方括号里面,即二维数组
在数学中元组索引一般是y[1],即从1开始的索引
在编程语言中,则通常是y[0],即从0开始的索引
矩阵乘法没有交换率,但符合结合律
(AB)C=A(BC)
4.1多特征
x^(2)向量代表第二行记录,
多元线性回归模型:
4.3多元梯度下降法
为什么要归一化?
尽量保证各参数在一个相似的范围内,可以让梯度下降法更快速的收敛
左图:Q2范围远大于Q1范围 右图:Q2范围相似Q1范围 —等值线
左: 一直在反复振荡 右:特征放缩后,范围变得相近,收敛的更快速
为什么要进行特征放缩:等高线更加规范,让梯度下降的更快一些,收敛的更快速一些
梯度下降法要求:尽量保证每个特征在一个相似的范围内,一个相似的范围内即可
用归一化来调整取值范围,使得满足范围相似的要求,从而使得梯度下降法更快收敛
归一化两种方法:分母使用标准差,或者(最大值-最小值)
特征放缩–让梯度下降的速度变得更快,收敛所需的迭代次数减小
4.4多元梯度下降法—学习率
绘制代价函数与迭代次数的曲线:
x轴:迭代次数 y轴:代价函数
每个点表示,迭代次x值次后,得到的Q值,然后计算出的代价函数值
该曲线告诉我们:当你迭代300次后,再继续迭代100次,也没有让代价函数下降的太多,从而选定迭代次数。帮助判断是否已经收敛
另一个判断是否收敛的方法:设定一个阈值,
曲线作用2:判断梯度下降法是否正常工作
出现下面两图。通常是学习率选的过大了
已证明:学习率足够小的情况下,代价函数一定是随着迭代次数越来越小
学习率过小 ----- 收敛的速度会很慢,需要迭代很多次
学习率过大 ----- 代价函数在每次迭代中可能不是减小的,甚至不收敛
做法:尝试一系列的学习率,然后对不同的学习率绘制上面的曲线,然后选择使得代价函数快速下降的学习率值
取每次隔了三倍的这些数
4.5特征和多项式回归
二次甚至三次函数,能通过设定其他参数,可变成多元线性回归
不会为二次函数,二次函数尾部会落下来
三次函数可能,尾部会上升
与此同时,这种情况下,特征压缩很重要,因为不同参数的范围差异很大
另一种情况:有一个开根号的项,不会下降,缓慢上升,直至平缓
之后可以让算法帮助我们选择,是三次函数,还是带有开根号项
4.6正规方程法
如果是一个一元二次方程,求最小值,求导令为0 即可求解
而当Q有多个时,看成一个向量,然后求偏导
使得代价函数最小的最优的Q值:
优缺点
梯度下降法:1)需要确定学习率,要尝试多次才能确定 2)需要多次迭代 3)在大量特征变量的情况下(n很大),依旧能正常允许
正规方程法:1)不需要学习率,2)不需要迭代 3)需要计算(x转置*X)的逆 ,求逆的计算量大概是n的三次方 4)如果特征变量很多,计算会很慢
一般来说,n<一万时用正规方程法,n>一万时,选梯度下降法或其他算法
4.8正规方程
如果(x转置*X)不可逆怎么办?即为奇异矩阵或退化矩阵怎么办?
代码中可以计算出伪逆 (pinv函数),所以即使不可逆,代码也能正常运行
不可逆的原因通常是:
1,特征之间线性相关,含有多余的特征
2) 特征量n太大,n>m(特征量 > 样本数)
处理:1 看是否有多余特征(线性相关的),有的话进行删除
2,检查特征量是否过多,过多的话删除一些影响小的特征量