一、多维特征
1.1、什么是多维特征?
1)在我们的原始估计房价的版本中,我们只有一个变量: x x x 来预估 y y y
2)但是现在假设你也知道其他的参数变量,那么我们就可以引入多个参数来提高预测 y y y的准确性。(这就是多维特征)
- x x xi表示第
i
个特征变量 - 向量x(2)表示第
2
组训练样例
3)此时,我们的预测方程模型就变成了:
4)但是,我们觉得这样表示会变得非常繁琐,因此我们可以引入向量来表示(因为我们可以直接使用numpy
的函数库来直接计算)
二、矢量化
2.1、如何做矢量化?/做矢量化的优势有哪些?
1)在1.1
中,我们发现可以通过矢量化来简化操作,但是,我们应该如何来进行矢量化呢?
- 下面是样例
w1,w2,w3
的矢量化结果 - 简单来说,就是将其装入一个
array
中
2)将其装入np.array()
后我们就可以十分简单的对其操作
- 相比与没有矢量化的数据,我们只需要使用
np.dot(w,x)
即可 np.dot
是numpy
中用来计算向量点积的函数
2.2)计算机底层是如何实现矢量化的?
- 用一句话来说:就是多线程同步计算
- 让我们来举一个例子更好说明
np.dot()
的并行操作
三、用于多元线性回归的梯度下降
3.1:使用矢量化后,线性回归方程的变化
1)把成本函数展开呢?会有什么不同呢?
- 我们发现,函数模型几乎没有变化,只是单独分别计算的每个训练样例的成本误差函数
四、特征放缩
4.1:什么是特征放缩?
1)仍然对于上述的多维特征方程,我们来观察他们的成本函数图像
- 我们可以发现由于
x1
和x2
的取值大小数量级差别过大,这导致了我们的等高线图像变得很窄 - 也就意味着,我们的梯度下降的效率非常低下,需要非常多次的梯度下降才能找到全局最小值
2)在这种情况下,我们就需要采用特征放缩,来提高梯度下降的效率
4.2:如何实现特征放缩?
1)法1:类似于权值归一化
,我们可以计算其每个数据占最大值的占比
2)法二:均值归一化
- 计算每个数据与均值的差,再计算占比
3)法三:标准差归一化(了解即可)
五、判断梯度下降是否收敛
5.1:我们如何判断梯度下降的优越性呢?如何计算梯度下降的次数呢?
- 我们可以通过画一个函数图像来实现:计算次数 --> j ( w ) j(w) j(w)
六、如何设置学习率
6.1:在前面的学习中,我们一直没有说明如何选择学习率,现在,让我们来用 i t e r a t i o n s − > J ( w , b ) iterations->J(w,b) iterations−>J(w,b) 函数图像来解决这个问题
1)我们函数图像我们可以发现,假设Alpha
过大,我们可以轻易通过函数图像的收敛性看出
- 因此,我们可以不运行梯度下降,根据函数图像即可看出
2)因此,我们可以枚举Alpha
的值从0.001
,每次令其Alpha=*3
来观察函数图像,计算其最适合的Alpha
七、特征方程与多项式回归
7.1:我们发现通过Alpha
的选择,可以提高拟合效率/准确性,同样的,我们也可以通过输入样例来提高准确率
7.2:多项式回归提高准确性
1)在前面的数据中,我们都是用线性函数来拟合数据,那么如何将曲线、非线性函数拟合到数据中呢?
- 现在,我们有这样一个数据集,我们发现用线性比较难来拟合数据
- 因此我们考虑引入曲线函数来增加拟合程度
- 注意,此时我们的数据的数量集差别过大,所以应该使用特征放缩来优化 J ( W ) J(W) J(W)误差函数
至于怎么选择曲线函数,我们会在下一周学到😄,下周见!!