零基础入门机器学习

吴恩达机器学习知识点回归和课后习题练习(week 2)

2019-02-21  本文已影响24人  带刺的小花_ea97

编程环境设置

https://www.coursera.org/learn/machine-learning/supplement/Mlf3e/more-octave-matlab-resources

具有多个变量的线性回归也称为“多元线性回归”。
我们现在为方程式引入符号,其中我们可以有任意数量的输入变量。

适应这些多个特征的假设函数的多变量形式如下:

θ0表示房子的基本价格,θ1表示每平方米的价格,θ2表示每层楼的价格
x1表示房子里的平方米数,x2表示楼层数

根据矩阵乘法的定义,我们的多变量假设函数可以简洁地表示为:

这是一个训练例子的假设函数的矢量化。

备注:为了方便起见,在本课程中我们假设:

这样就可以保证θ和x(i)都是n + 1维,方便两者相乘。

梯度下降方程本身通常是相同的形式; 我们只需要为'n'功能重复它:

即:

下图将梯度下降与一个变量与具有多个变量的梯度下降进行比较:

我们可以通过使每个输入值在大致相同的范围内来加速梯度下降。这是因为θ将在小范围内快速下降并且在大范围内缓慢下降,因此当变量非常不均匀时,将无效地振荡到最佳值。(下面有图解)

防止这种情况的方法是修改输入变量的范围,使它们大致相同。理想的情况是:

这些并不是确切的要求; 我们只是想加快速度。目标是将所有输入变量大致分为这些范围中的一个,给出或取一些。

有两种帮助的技术是特征缩放均值归一化。
特征缩放涉及将输入值除以输入变量的范围(即最大值减去最小值),从而产生仅1的新范围。
均值归一化涉及从该值中减去输入变量的平均值。输入变量导致输入变量的新平均值仅为零。要实现这两种技术,请调整输入值,如下面的公式所示:

其中ui是所有特征(i)的平均值,si是最大值减去最小值/标准偏差。
请注意,除以范围或除以标准偏差,会得到不同的结果。本课程中使用标准偏差。

例子:

调试梯度下降。在x轴上绘制具有迭代次数的图。 现在绘制成本函数,J(θ)超过梯度下降的迭代次数。 如果J(θ)增加,那么你可能需要减少α。

自动收敛测试。如果J(θ)在一次迭代中减小小于E,则声明收敛,其中E是一些小值,例如10-3。但是在实践中很难选择这个阈值。

已经证明,如果学习率α足够小,则J(θ)将在每次迭代时减小。

总结一下:
如果α太小:收敛慢。
如果α太大:可能不会在每次迭代时减少,因此可能无法收敛。

我们可以通过几种不同的方式改进我们的特征和假设函数的形式。

将多个功能合二为一:

多项式回归:

如果不能很好地拟合数据,我们的假设函数不必是线性的(直线)。

我们可以通过使其成为二次,三次或平方根函数(或任何其他形式)来改变我们的假设函数的行为或曲线。

要记住的一件重要事情是,如果您以这种方式选择功能,那么特征缩放就变得非常重要。(范围变大了,特征值之间的相互影响就大了,可以看做是一个非常扁长的椭圆,迭代会变得非常震荡)

梯度下降给出了一种最小化J的方法。让我们讨论第二种方法,这次是明确地执行最小化而不是求助于迭代算法。在“正规方程”方法中,我们将通过明确地将其导数相对于θj进行最小化,并将它们设置为。 这允许我们在没有迭代的情况下找到最佳θ。 正规方程式如下:

不需要使用正规方程进行特征缩放。

以下是梯度下降与正规方程的比较:

使用正规方程,计算反演具有复杂度O(n3)。因此,如果我们有非常多的特征,那么正规方程将会很慢。实际上,当n超过10,000时,可能是从正规方程转向迭代过程的好时机。

当用Octave实现正规方程时,我们想要使用'pinv'函数而不是'inv'。 即使XTX不可逆,'pinv'函数也会给你一个θ的值。(伪逆)

XTX不可逆的常见的原因可能是:
特征冗余:其中两个功能密切相关(即它们与线性相关)
特征太多(例如m≤n)。 在这种情况下,删除一些功能或使用“正规化”(将在后面的课程中解释)。

上述问题的解决方案包括删除与另一个线性相关的特征或在特征太多时删除一个或多个特征。

解析:
该课程使用列向量(在大多数情况下),因此h(一个训练示例的标量)是theta'* x。小写x通常表示单个训练示例。更有效的矢量化技术总是使用X作为所有训练示例的矩阵,每个示例作为一行,特征作为列。这使得X的尺寸为(m×n)。其中m是训练样例的数量。这使我们得到h(整个训练集的所有假设值的向量)为X * theta,维度为(m×1)。X(作为所有训练示例的矩阵)表示为大写X。

上一篇 下一篇

猜你喜欢

热点阅读