5. 多元线性回归

本人在学习斯坦福大学的机器学习课程,特记录课程概要内容。课程地址: Andrew Ng机器学习课程

多个特征值

多个特征值的线性回归也被称为“多元线性回归”。
下面介绍的公式符号,可以有任意数量的输入变量。

  • x(i)j = 第ith个训练集实例中的第j个特征值
  • x(i) = 第ith个训练集实例的输入集合(特征值)
  • m = 训练集实例个数
  • n = 实例的特征值个数

对应多元特征值的假设函数的变形式如下:
hθ(x) = θ0 + θ1x1 + θ2x2 + θ3x3 + ... + θnxn

为了直观的表示这个方程,我们可以将 θ0 作为房子的基本价格,将 θ1 作为每平方的价格, θ2 作为每层楼的价格等等。x1 将是房子的平方数,x2 是房子的楼层数等。
使用矩阵乘法的定义,我们的多元假设函数可以简洁地表示为:


这是我们对一个训练集示例的假设函数的向量化。
备注:请注意,为了方便起见,我们假设 x (i) 0 = 1 (i∈1,...,m)。这使得我们可以用 θ 和 x 进行矩阵运算。因此我们让两个向量 'θ' 和 x (i) 的维度保持一致(即具有相同数量的元素: n + 1 个)。

多元梯度下降

梯度下降方程本身通常是相同的形式; 我们只需重复一下我们的 'n' 功能:
重复直到收敛: {

...
}
就是说:
重复直到收敛: {
for j := 0...n
}
以下图将一个变量与多个变量的梯度下降进行了比较:
5. 多元线性回归_第1张图片

梯度下降实例 I - 特征缩放

我们可以通过使每个输入值在大致相同的范围内来加快梯度下降。这是因为在较小的范围内,θ 会快速下降,而在较大的范围内会缓慢下降,因此当变量非常不均匀时,它会低效地摆动到最佳状态。
防止这种情况的方法是修改输入值的范围,使其大致相同。理想的情况是:
−1 ≤ x(i) ≤ 1
或者
−0.5 ≤ x(i) ≤ 0.5
这些不需要很精确; 我们只是想加快速度。目标是将所有输入值大致分到这些范围。
做到这点的两种技术是特征缩放均值归一化。特征缩放包括将输入值除以输入值的范围(即最大值减去最小值),使得新值的范围为 1。均值归一化指把输入值减去输入值的平均值,使新输入值的平均值为零。要实现这两种技术,需如以下公式所示调整输入值:


其中 μ i 是所有特征值(i)的 平均值,s i 是值(最大值-最小值)的范围,或是标准偏差。
需要注意的是除以的范围或除以标准偏差,会得到不同的结果。
例如,如果 x i 代表100到2000范围内的房价,平均值为1000,那么:

梯度下降实例 II - 学习速率

调试梯度下降: 可以以 x 轴为迭代次数绘制一个图。然后梯度下降次数上绘制代价函数J(θ)。如果J(θ)增加,那么您可能需要减小 α 值。
自动收敛测试: 如果在一次迭代中 J(θ) 减小值小于 E ,则代表其已经收敛,其中 E 是一些较小的值,例如 10-3 。但实际上这个阈值很难选择。

5. 多元线性回归_第2张图片

已经证明,如果学习率 α 足够小,则 J(θ) 将在每次迭代时减小。
5. 多元线性回归_第3张图片

总结:

  • 如果 α 值太小: 收敛缓慢。
  • 如果 α 值太大: 每次迭代可能不会减小,从而可能不会收敛。

特征值和多项式回归

我们可以通过几种不同的方式改进特征值和假设函数的形式。
我们可以将多个特征值合成一个。例如,我们可以以 x1x2 合并 x1 和 x2 组成新的特征值 x3

多项式回归

如果直线不能很好的拟合数据,我们的假设函数也不需要是一条直线。
我们可以通过使其成为二次,立方或平方根函数(或任何其他形式)来改变假设函数的行为或曲线。
例如,如果我们的假设函数是 hθ = θ0 + θ1x1 ,然后我们可以在 x1 基础上增加特征值,获得二次函数 hθ = θ0 + θ1x1 + θ2x12 或者立方函数 hθ = θ0 + θ1x1 + θ2x12 + θ3x13
在立方函数里,我们可以创建新的特征值 x2 和 x3 , 分别为 x2 = x12 和 x3 = x13
使它成为平方根函数则可以是:


一个重要事情是,如果以这种方式选择特征值,则特征缩放将变得非常重要。
例如,如果 x 1 的范围为 1 - 1000 ,那么 x 1 2 的范围将变为 1 - 1000,000 ,x 1 3 的范围将变为 1 - 1000,000,000

你可能感兴趣的:(5. 多元线性回归)