Coursera机器学习 Week2 笔记

编程作业放到了github上:coursera_machine_learning

1. Linear Regression with Multiple Variables

紧接上一篇的例子 – 房价预测。现在我们有更多的特征来预测房价了,“房间的数量”、“楼层”、“房龄”……

说明一下接下来要用到的符号:

n特征的数量
m训练数据的数量
x(i) 训练集中的第 i 个数据
x(i)j i 个数据的第j个特征
y(i) i 个数据的标签(真实输出结果)
y(i)^ i 个数据的预测结果
h(x)预测模型

训练集(部分)如下图所示:

则模型可以假设成:

h(x(i))=θ0+θ1x(i)1+θ2x(i)2+θ3x(i)3+θ4x(i)4

写成矩阵的形式,令 x(i)=(1;x(i)1;x(i)2;x(i)3;x(i)4) 是一个column vector, x(i)n×1 ;令 θ=(θ0;θ1;θ2;θ3;θ4) 也是一个column vector, θn×1 ,则:

h(x(i))=θTx(i)

和之前一样,这个模型中的未知数是 θ ,只要知道了 θ 就知道了模型。模型是通过error来学习了,这个问题中的error定义和之前的一模一样,就是求预测结果与实际结果的平方差,然后对整个数据集中的error求和再平均来作为模型对数据的error:

J(θ)=12mi=1m(h(x(i))y(i))2=12mi=1m(y(i)^y(i))2

然后再用上一篇中说的gradient descent方法更新 θ 即可,过程如下:

2. Gradient descent in practice

2.1 Feature Scaling

让特征们的取值处于同一个范围里面,可以加快梯度下降法的收敛速度。原因在下图中形象说明了。

x1 = size (0-2000 feet2 ), x1 = number of bedrooms (1-5)

由于 x1 的取值范围比 x2 的大,所以在 J(θ) 关于 θ1 θ2 的图中, θ2 的取值范围应该比 θ1 的大:

可以看到,这样的话,从边缘开始向着中心走的路程将特别“曲折”,所以大大降低了收敛的速度。 如果将这两个特征scale到同一个范围里面,那么这个椭圆将变成正圆,从边缘向着中心的路程就是半径的距离,变得相当“平坦顺利”,如下图所示:
一般情况下,在做feature scaling的时候,一般都会将特征的取值范围映射到 (1,1) 的范围上。但是这个范围也不是说一定就必须是 (1,1) 了,只要相同数量级就行,不要相差太多。举例如下: 0x13 2x20.5 100x3100 × 0.0001x40.0001 × 3x43 13x413 那么,究竟如何将特征进行feature scaling?其中一种方法就是mean normalization。 ** Mean Normalization** 将训练数据中的第 j 个特征的平均值变为0。 公式如下:

x(i)j:=x(i)javerage{xj}range{xj}

举例:

x(1)1=10x(2)1=5

x(1)1:=x(1)1average{x1}range{x1}=107.5105=0.5

x(2)1:=x(2)1average{x1}range{x1}=57.5105=0.5

现在 x(1)1 x(2)1 的平均值是0了。

2.2 Choose Learning Rate α

在不断更新 θ 即迭代次数不断增加之后, J(θ) 的值应该不断下降,直至不怎么改变了,模型训练完毕,如下图中最后平坦的部分:

如果, J(θ) 的值不下降,反而上升了,或者,不断震荡,如下图:
那么需要减小学习率 α ,因为在学习率比较大的时候,容易出现下面的情况:
因为 α 大的原因,每次都一步跳过了最优解点,导致距离最优解越来越远, J(θ) 不断上升。 如果 J(θ) 在下降,但是下降的速度很慢的话,就需要增大学习率 α ,因为每一步走的都太短了,导致到达最优解的速度下降,即收敛速度下降。 α 是根据经验选择的,通过实验选择在当前task下最优的学习率。一般情况下,选择 0.001,0.01,0.1,1 等:

3. Features and Polynomial Regression

除了训练集中已经给出的特征,还可以根据这些特征来生成新的特征。比如说最简单的,已有特征“长”和“宽”,可以使用生成的特征“面积”来进行模型的学习。

另外 h(x) 也可以使用polynomial regression来代替linear regression,则:

h(x)=θ0+θ1x1+θ2x22+θ3x33+θ4x44

然后可以通过对特征的处理,将polynomial regression转换成linear regression:

只要令:

x1:=x1

x2:=x22

x3:=x33

x4:=x44

然后继续使用: h(x)=θ0+θ1x1+θ2x2+θ3x3+θ4x4 即可。

所以其实还是在对特征进行处理,至于选取哪一种regession的方式,可以根据数据的走向来决定:

4. Matrix Representation

在实际计算过程中,用矩阵来计算会提升计算速度。下面就来看看怎么转换成矩阵形式。

如下例子:

X 矩阵中的每一行代表一条数据,每一列代表一种特征,第一列除外,第一列相当于“截距”,在machine learning中,成为“偏置bias”,而θ被称为“权值weights”。

5. Normal Equation

在Linear Regression中,Normal equation可以用来取代Gradient descent来计算 θ

由于最完美的拟合就是让 θJ(θ)=0 ,于是在理想条件下可以通过转置和求逆就把 θ 求出来了, θ=(XTX)1XTy

在Octave中有函数可以直接求解:

pinv(X'*X)*X'*y

但并不是所有的数据都可以这样的,毕竟“逆”不是所有矩阵都有的……

XTX 不可逆时,主要有以下两种情况造成:

  1. 有冗余的特征
    比如说 x1 = size of feet2 x2 = size of m2
    因为 1m=3.28feet ,所以实际上 x1 x2 是同一个特征在不同范围上而已。即:
    x1=(3.28)2x2
  2. 特征太多(e.g. mn
    策略:删除部分特征,或者使用规范项regularization(下一节讲到)

下面是Gradient descent和Normal Equation的比较:


  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值