前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >第五章 多变量线性回归

第五章 多变量线性回归

作者头像
tomas家的小拨浪鼓
发布2019-03-08 09:59:08
8220
发布2019-03-08 09:59:08
举报
文章被收录于专栏:木木玲木木玲木木玲

5.1多维特征

n :特征量的数目 x^(i) :第 i 个训练样本的输入特性值 x^(i)_j :第 i 个训练样本中第 j 个特征量的值

  • 新的假设函数公式:

为了方便标记,我们定义 x_0 为 1,也就是说在已有的 n 个特征外,我们额外增加了一个 x_0 特性,但这个 x_0 总是为 1 。 所以我们的特征向量是一个从0开始标记的 n+1 维的向量。

1 x m 矩阵,也称为 行矩阵 参数向量 与 特征向量 的内积 『 一个行向量乘以一个列向量称作向量的内积,又叫作点积,结果是一个数 』

因此,假设函数 h_θ(x) = θ_0*x_0 + θ_1*x_1 + θ_2*x_2 + … + θ_n*x_n 可以简化为 h_θ(x) = θ^T * X ? 多元线性回归

5.2 多元梯度下降法

我们不将θ_0 … θ_1 看做一个个独立的参数(虽然也是可以的),而是考虑将这些参数看做一个 n+1 维的Θ向量 不把 J 看做一个 n+1 个数的函数,我们会使用更通用的方式把 J 写成参数Θ这个向量的函数

  • 当 n = 1 时
  • 当 n > 1 时

举例,n = 2 时,(为了说明,n =1 和 n > 1 时,梯度下降法的思路是类似的)

5.3 多元梯度下降法演练!—— 特征缩放

不同的特征向量值,在相近的范围内。这样梯度下降法就能更快的收敛

  • eg: 特征1 —— x1 为房屋的大小(0 ~ 2000) 特征2 —— x2 为房间数 (1~5) 如果 x1 和 x2 的值差的很多,那么 代价函数J(Θ) 的等高线图就会是非常歪斜且椭圆的形状。其实 2000 比 5 的比例会让这个椭圆更加瘦长。 如果你再这种代价函数(非常歪斜且椭圆的代价函数J(Θ))上运行梯度下降的话,你的梯度最终可能需要花很长一段时间,并且可能会来回波动。然后会经过很长时间最终才收敛到全局最小值

个人理解:【如果 x1 和 x2 的值差的很多,那么 代价函数J(Θ) 的等高线图就会是非常歪斜且椭圆的形状】这句话可以这么理解: 如下图所示。你看最外层的等高线,也就是代价函数误差最大的时候,当 x1 的值范围 远大于 x2 值的时候。当 θ2 取同一个值时,θ1只需要改变很小的值,就能得到一样误差很大的等高线。因为,x1 太大了,J(Θ) = θ_0 + θ_1 * x1 + θ_2 * x2 - y 的值一下就大了(即使 θ1改变的很小)。而当 x1 与 x2 在近视范围中的时候。等高线图看起来更加的“圆”。

如果,这个等值线图更细更长,结果就是梯度下降的过程可能更加缓慢,反复来回震荡,需要更长的时间才找到一条通往全局最小值的路。

个人理解:因为,如?等值线越细长,J(Θ1)的导数会比较大(可以理解为,每次 Θ1 的改变较大,Θ2 的改变较小),因此会导致梯度下降的过程是一个左右斜率很低的振荡路线)。所以就可能导致来回波动,导致要经过更长的时间才可以收敛到全局最小值

特征缩放

有两种常见的特征缩放

  • 将特征除以最大值
  • 均值归一化
将特征除以最大值

在这样的情况下,一种有效的方法是进行特征缩放。 把特征 x1 定位为,房子的面积大小除以2000。并且把 x2 定义为,卧室的数量除以5.

那么代价函数的等值线就会变得偏移没那么严重。(看起来更圆了)

你可以通过数学来证明,就会找到一条更直接的路径,通往全局最小值。(即,梯度下降法能够更快的收敛)

所以,通过这种特征缩放,它们的值的范围变得更相近。

更一般的,我们执行特征缩放时,我们通常的目的是将特征的取值约束到 -1 到 +1 的范围内。 特性 x0 总是等于 1.

x1 和 x2 虽然不在 -1 ~ +1 之间,但是它们很靠近这个范围,所以是ok 的。(这里说的约等于 -1 <= xi <= 1 访问,指的是,最小值靠近与 -1,最大值靠近与 +1) 而 x3 显然不符合;x4 也是如此。 经验:如果一个特征是在 -3 到 +3 的范围内,这个范围是可以接受的。 -1/3 ~ 1/3 、0 ~ 1/3 、-1/3 ~ 0 也是可以接受的。 ?这些是典型的范围

均值归一化

除了,将特征除以最大值以外,在特征缩放中,有时候我们也会进行一个称为“均值归一化”的工作

如果你有一个特征 x_i ,你就用 x_i - u_i 来替换,让你的特征具有为近似 0 的平均值。我们不需要将这引用于 x_0 ,因为它总是为 1,所以它不可能有为0的平均值。 u_i 为特征值 x_i 的平均值。 均值归一化后的结果,会使得 x_i 的范围靠近 -0.5 ~ +0.5

u_i :训练集中特征 x_i 的平均值 s_i :就是特征值的范围(即,最大值 - 最小值 ,也称作’标准差’)

均值归一化的运算并不需要太精确,它只是为了让梯度下降能够运行的更快一点而已。

5.4 多元梯度下降法 —— 学习率

横轴为 梯度下降法迭代的次数

如果梯度下降正常工作,那么每一步迭代后 J(Θ) 都应该下降 通过这条曲线可以帮助你判断,梯度下降法是否已经收敛。 对于每个特定的问题,梯度下降算法所需的迭代次数可能相差会很大。实际上,我们很难预算梯度下降算法需要多少步迭代才能收敛。我们通常画出?这样的曲线,来判断梯度下降算法是否已经收敛。

另外,也可以进行一些自动的收敛测试。也就是说,用一种算法来告诉你梯度下降法是否已经收敛。这里?是自动收敛测试的一个典型例子

但是,我发现,通常要选择一个适合的阈值 ε 是相当困难的。所以,实际上,更倾向于通过看第一种的曲线图。

通过看这个曲线图还可以提前警告你算法没有正常工作(如下?)

?通常这样的曲线图通常意味着你应该使用较小的学习率 α

?通常这样的曲线图通常也意味着你应该使用较小的学习率 α

  • For sufficiently small α,J(Θ) should decrease on every iteration.
  • But if α is too small,gradient descent can be slow to converge. ?两个结论适用于“线性函数”,因为线性函数只有一个局部最优解,即全局最优解
  • 总结

每隔 10 倍取一个值。 根据每隔 α 值,我们都绘制一个 J(Θ) 同 迭代次数的曲线图,然后根据曲线图选择一个最合适的 α 值。

经验:α 值之间间隔为3倍(而非10倍)

5.5 特征和多项式回归

与选择特征的想法密切相关的一个概念,被称为多项式回归。

那么我们如何将模型与数据进行拟合了?

使用多元线性回归的方法,我们可以对算法做一个简单的修改来实现它

为了将 h_θ(x) = θ_0 + θ_1 * x_1 + θ_2 * x_2 + θ_3 * x_3 与 “θ_0 + θ_1 * x + θ_2 * x^2 + θ_3 * x^3” 对应起来。 特征向量 x_1 为 房屋面积 特征向量 x_2 为 房屋面积的平方 特征向量 x_3 为 房屋面积的立方

然后再应用线性回归的方法,我们就可以拟合这个模型。 注意,如果你像?这样选择特征,那么特征缩放就变得更重要了

  • 特征选择:

二次函数不合理的地方在于,存在一个最高点之后y值会慢慢下降(因为,如图所见,这里的 θ_2 是一个负数,所以 θ_2*(size)^2 存在一个最高点),我们不认为随着房屋面积的增大,房屋价格会降下。 除了选择用三次函数外,我们还可以选择用平方根函数,基于我我们对平方根函数的了解(到一定值之后会缓慢提升)

5.6 正规方程(区别于迭代方法的直接解法)

对于某些线性回归问题,它会给我们更好的方法,来求得参数Θ的最优值。

目前为止,我们一直使用的线性回归算法是“梯度下降法”。

正规方程法
直观理解
  1. J 是 Θ 的一个函数,Θ 为实数:

最小化一个函数的方式,是对它求导,并将导数置0。

因为,导数就是函数曲线的斜率,当导数为 0 的时候,说明是斜率水平与 x 轴,也就是曲线在最低点的时候。

  1. 当 Θ 不是实数时,而是一个 n+1 维的参数向量:

我们如何最小化代价函数了?微积分的知识告诉我们,逐个对对象参数 Θ_j 求 J 的偏导数,然后把它们全部置零,求出 Θ_0、Θ_1、…、Θ_n 的值,这样就能得到能够最小化代价函数 J 的 Θ 值。

而这样的微积分最终可能很复杂。实际上接下来要讲的算法,可以不用计算所有的Θ的导数,也可以求得 J 的最优解。。。

举例

X 是 m * (n+1) 维矩阵,y 是一个 m 维向量 m :样本数 n :特征变量数

这个求得的 Θ 即为 使得代价函数最小化的 Θ。

如果你使用“正规方程法”,那么就不需要特征缩放。(梯度下降算法,需要特征缩放,让特征值靠近一个区间范围)

梯度下降算法 VS 正规方程法

实现逆矩阵计算( (X^T * X)^-1 )的代价,以矩阵维度的三次方增长。即 O(n^3)。 所以,如果 n 很大,我们可能还是会使用梯度下降法。

那么什么是大,什么是小了? 若 n 是百位数级别,或千位数级别,现代计算机对其计算逆矩阵算法还是很快的。 若 n 是万级别的,可能有用“正规方程法”就会比较慢了,此时可能会倾向于使用梯度下降法。万级别是一个中间级别,可以都试试看。。。 若 n 远大于万级别,我们可能就会使用梯度下降法了。如,一个百万级别个数的特征量 经验:当 n 在一万左右,会考虑换成“梯度下降法”或其他算法。

关于复杂的学习算法,如,分类算法,logistic回归算法,正规方程法不适用于这些复杂的学习算法,我们将不得不仍然使用梯度下降法。

5.7 正规方程在矩阵不可逆情况下的解决方法

我们称那些不可逆矩阵为 奇异或退化矩阵。

如果 X^T*X 不可逆,通常有两种最常见的原因:

  1. 如果由于某些原因,你的学习问题中包含了多余的特征。 如,两个特征,x1 是为单位为英尺的面积;x2是单位为米的面积 这样 x1 = (3.28)^2 * x2 。?这样 x1 与 x2 就互为线性函数了!!

?这种情况,X 的‘行列式’为0 (|X|=0)。X 不可逆

  1. 在 m < n 的时候,即,具有了很多的特征 解决:减少特征参数或者使用一个叫“正则化”的方法

“正则化”可以让你使用很多的特征来配置很多参数,即使你有一个相对较小的训练集。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019.02.24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 5.1多维特征
  • 5.2 多元梯度下降法
  • 5.3 多元梯度下降法演练!—— 特征缩放
    • 特征缩放
      • 将特征除以最大值
      • 均值归一化
  • 5.4 多元梯度下降法 —— 学习率
  • 5.5 特征和多项式回归
  • 5.6 正规方程(区别于迭代方法的直接解法)
    • 正规方程法
    • 5.7 正规方程在矩阵不可逆情况下的解决方法
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档