这次引入的是一个更为有效的线性回归形式,这种形式适用于多个变量或者多特征量的情况。
用n来表示特征量的数量。如下所示,引入新的规范:
方便起见,如果将x下标0的值定义为1,特征向量x和θ即均为n+1维的向量。
所以h也可以表示为θ转置乘以X。(注意,这里的这个概念别和Note 4中的数据搞混了,求得数据的总量仍然是需要再次利用,X*theta矩阵)
这取决于你对向量内积有多熟悉,如果你展开θ转置乘以X,那么就得到 θ0,θ1直到θn。这个就是θ转置,实际上,这就是一个 n+1乘以1维的矩阵,也被称为行向量 。用行向量 与X向量相乘,X向量是 x0,x1等等,直到xn 。
因此内积就是θ转置乘以X就等于这个等式
这就为我们提供了一个表示假设的更加便利的形式,即用参数向量θ以及特征向量X的内积,这就是改写以后的表示方法,这样的表示习惯就让我们,可以以这种紧凑的形式写出假设,这就是多特征量情况下的假设形式,起另一个名字,这就是所谓的,**多元线性回归 **
总结:一般设计到有规律的并行计算(或者for循环计算),均可以使用矩阵相乘来替代。
多元线性回归中的梯度下降算法
观察左边的式子,很容易推倒出右边多元状况下的情形。或者再次对代价函数J进行微积分,也能得到这样的式子。
梯度下降算法中的实用技巧
一种让梯度下降的速度变得更快的技巧:
1. 特征缩放(feature scaling)
2. 均值归一化(mean normalization)
从而让梯度下降收敛所需的循环次数越来越少,本质都是为了避免下图左边这种情况的发生:
其中:分母是特征量的取值范围(Max-Min)
其中:分子的减数是特征量的平均值
3 . Debuging的技巧:应该如何确认梯度下降是正常工作的
4 . 如何选择学习率α。
绘制代价函数J(θ)随着迭代次数变化的图像,可以让你弄清楚每一步以后到底发生了什么:
如果梯度下降算法正常工作,那么每一步迭代之后J(θ)的值都应该下降
只要学习率足够小,那么代价函数J(θ)在每次迭代之后都应该下降。
但是如果学习率太小,梯度下降算法又可能会收敛的很慢。
总结:
具体来说,当运行梯度下降算法时,通常会尝试一系列α值,所以在运行梯度下降算法时,请尝试不同的 α 值。
比如0.001, 0.01 这里每隔10倍取一个值然后对于这些不同的 α 值,绘制 J(θ) 随迭代步数变化的曲线,然后选择看上去使得 J(θ) 快速下降的一个 α 值,事实上通常并不是隔10倍取一个值。我通常取的,是这些 α 值:
先取0.001 ,然后将学习率增加3倍,得到0.003。然后这一步从0.003到0.01又大约增加了3倍,所以在为梯度下降算法选择合适的学习率时,大致是按3的倍数来取值的 。所以我会尝试一系列α值 ,直到我找到一个值它不能再小了,同时找到另一个值它不能再大了,然后我尽量挑选,其中最大的那个 α 值,或者一个比最大值略小一些的合理的值。而当我做了以上工作时,我通常就可以得到一个不错的学习率。如果也你这样做那么你也能够为你的梯度下降算法找到一个合适的学习率值
5 . 选择特征的方法以及如何得到不同的学习算法
多项式回归( polynomial regression)
熟悉常见的函数图像的形式,用多种形式的回归方程来拟合。
参考链接: https://blog.csdn.net/kwame211/article/details/81530820