吴恩达机器学习--中文笔记--第二周


本文是在学习吴恩达老师机器学习课程的基础上结合老师的ppt文献然后加上自身理解编写出来的,有些地方可能有遗漏或错误,欢迎大家批评指正。希望我们一起学习,一起进步!

第二个星期

1.多变量线性回归

第一周大部分在单变量(单特征)的基础上来初步介绍什么是机器学习,但随着研究的深入,我们发现,在现实生活中,多因素一直是这个世界的基调,所以我们必须去学习多变量的线性回归。

1.1多特征

先来看几个符号
x j ( i ) = value of feature  j  in the  i t h  training example x ( i ) = the input (features) of the  i t h  training example m = the number of training examples n = the number of features x_j^{(i)} = \text{value of feature } j\text{ in the }i^{th}\text{ training example}\newline x^{(i)} = \text{the input (features) of the }i^{th}\text{ training example}\newline m = \text{the number of training examples}\newline n = \text{the number of features} xj(i)=value of feature j in the ith training examplex(i)=the input (features) of the ith training examplem=the number of training examplesn=the number of features
那么,基于多特征的线性回归表达式我们这样定义:
h θ ( x ) = θ 0 + θ 1 x 1 + θ 2 x 2 + . . . + θ n x n h_{\theta}(x)=\theta_{0}+\theta_{1}x_{1}+\theta_{2}x_{2}+...+\theta_{n}x_{n} hθ(x)=θ0+θ1x1+θ2x2+...+θnxn
在上一个星期的房价预测中,我们只考虑到了房子的面积和价格之间的关系。殊不知,房价还和很多因素有关系,比如这里我们可以考虑将 θ 0 \theta_{0} θ0看做房子的基础价格, θ 1 \theta_{1} θ1看做每平方的价格, θ 2 \theta_{2} θ2看成是每层的价格。 x 1 x_{1} x1是房子的面积, x 2 x_{2} x2是房子的层数等等。
h θ ( x ) = [ θ 0 θ 1 . . . θ n ] [ x 0 x 1 ⋮ x n ] = θ T x h_{\theta}(x) =\begin{bmatrix}\theta_{0} \hspace{2em} \theta_{1} \hspace{2em} ... \hspace{2em} \theta_{n}\end{bmatrix}\begin{bmatrix}x_{0} \newline x_{1} \newline \vdots \newline x_{n}\end{bmatrix}= \theta^T x hθ(x)=[θ0θ1...θn][x0x1xn]=θTx
note:公式排版有问题
这里,我们将 x 0 x_0 x0设置为1来与 θ 0 \theta_0 θ0相对应,目的就是可以用简易的矩阵相乘操作来代替繁琐的公式。

1.2多变量梯度下降

前面,我们写了单变量梯度下降公式,这里,我们将其扩展为多变量,梯度下降更新过程为:
重复至最优{
θ j : = θ j − α 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) , j = 0 , . . . , n \theta_j:=\theta_j-\alpha\frac{1}{m}\sum\limits_{i=1}^{m}(h_\theta(x^{(i)})-y^{(i)})x_{j}^{(i)},j=0,...,n θj:=θjαm1i=1m(hθ(x(i))y(i))xj(i),j=0,...,n
}
或者这样表示:
重复至最优{
θ 0 : = θ 0 − α 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x 0 ( i ) \theta_0:=\theta_0-\alpha\frac{1}{m}\sum\limits_{i=1}^{m}(h_\theta(x^{(i)})-y^{(i)})x_{0}^{(i)} θ0:=θ0αm1i=1m(hθ(x(i))y(i))x0(i)
θ 1 : = θ 1 − α 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x 1 ( i ) \theta_1:=\theta_1-\alpha\frac{1}{m}\sum\limits_{i=1}^{m}(h_\theta(x^{(i)})-y^{(i)})x_{1}^{(i)} θ1:=θ1αm1i=1m(hθ(x(i))y(i))x1(i)
θ 2 : = θ 2 − α 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x 2 ( i ) \theta_2:=\theta_2-\alpha\frac{1}{m}\sum\limits_{i=1}^{m}(h_\theta(x^{(i)})-y^{(i)})x_{2}^{(i)} θ2:=θ2αm1i=1m(hθ(x(i))y(i))x2(i)
. . . ... ...
}
还是那句话(韩信带净化【狗头】), θ \theta θ值要同时更新。

1.3梯度下降之特征缩放

根据经验,当输入变量的范围比较大时,梯度下降的速度就比较慢,解决这一问题的方法分为feature scaling和mean normalization。

  1. feature scaling:用输入值除以数据的最大值和最小值的差,这样就把输入值得波动范围控制在了1之内。
  2. mean normalization:我们定义新的输入 x i x_i xi,使得 x i = x i − μ i s i x_i=\frac{x_i-μ_i}{s_i} xi=sixiμi,值得注意的是,式子右面的 x i x_i xi是原输入,左面的 x i x_i xi是新的输入, μ i μ_i μi是原输入集的均值, s i s_i si是原输入集的极差。

1.4梯度下降之学习率

  1. 对梯度下降进行debug
    通过绘画 J ( θ ) J(\theta) J(θ)随着迭代次数的变化情况,判断 J ( θ ) J(\theta) J(θ)的走势,从而判定学习率的合理性。若 J ( θ ) J(\theta) J(θ)出现稳步上升或者大幅震荡,说明学习率 α \alpha α的取值过大,需要做减小调整。
  2. 自动收敛测试
    通常,要检验一个代价函数是否收敛,我们一般会选择一个阈值 ε ε ε,当 J ( θ ) < ε J(\theta)< ε J(θ)<ε,我们就认为已经收敛。这个阈值是根据不同场景下的不同情况来定的,但选择一个合适的阈值比较困难。
  3. 总结
    如果 α \alpha α太小,收敛汇集就比较慢。
    如果 α \alpha α太大,代价函数会出现不减小的情况,最终不会收敛。

1.5特征与多项式回归

当有多特征时,我们有时可以选择合并特征,比如房子的长和宽可以合并为面积,可以在一定程度上简化模型。
当然这里主要还是说,对应不同的实际情况,我们要会选择合适的模型基础。
比如,当数据散点类似于 y = x y=\sqrt{x} y=x 函数时,我们可以这样设定假设模型: h θ ( x ) = θ 0 + θ 1 x 1 + θ 2 x 2 h_{\theta}(x)=\theta_0+\theta_1x_1+\theta_2\sqrt{x_2} hθ(x)=θ0+θ1x1+θ2x2
总之要会灵活变通,值得注意的一点是,当你选择用相应的假设时,一定要合理的进行归一缩放,不然输入值可能会过大,导致梯度下降速度过慢。

2.解析计算参数

2.1正规方程

之前,我们通过梯度下降法寻找代价函数的最优解,这个方法可谓是万金油型方法,在这里,我们针对线性问题,提出一种新的方法,他就是正规方程求解法。
当我们算出代价函数 J ( θ ) J(\theta) J(θ)时,按照之前的方法,我们就要进行偏微分,进行梯度下降操作。然而我们知道,线性函数对应的代价函数存在可计算最优解。接下来,我们进行进一步的展开。
还是这个房价的例子:
在这里插入图片描述
那么我们的假设函数为: h θ ( x ) = θ 0 + θ 1 x 1 + . . . + θ n x n h_{\theta}(x)=\theta_0+\theta_1x_1+...+\theta_nx_n hθ(x)=θ0+θ1x1+...+θnxn,共有有 n + 1 n+1 n+1个输入,但实际上只有 n n n个特征。
给出这些条件,我们就可以用正规方程直接计算最优解时 θ \theta θ矩阵的取值: θ = ( X T X ) − 1 X T y \theta=(X^TX)^{-1}X^Ty θ=(XTX)1XTy
说道这里,让我们来比一比到底梯度下降和正规方程它们之间有哪些特点

梯度下降正规方程
需要选择学习率 α \alpha α不需要选择 α \alpha α
需要多次迭代不需要迭代
复杂度 O ( k n 2 ) O(kn^2) O(kn2)复杂度 O ( n 3 ) O(n^3) O(n3),需要计算 ( X T X ) − 1 (X^TX)^{-1} (XTX)1
当特征较多,也就是n比较大时,表现良好当特征较少,也就是n比较小时,表现良好

2.2正规方程的不可逆解决方法

有时候,在计算正规方程 X T X X^TX XTX的逆矩阵时,会出现不可逆的情况,此时,我们可以通过以下几种方法,进行可逆化。

  1. 一般来说,当矩阵不可逆时,可能是矩阵当中的列(行)向量组线性相关导致的(比如你的特征 x 1 x_1 x1是平方米,特征 x 2 x_2 x2是平方英尺, x 1 x_1 x1 x 2 x_2 x2可转换,导致矩阵不可逆),所以我们可以通过消除相关性比较强的特征来使矩阵可逆。
  2. 另一种情况可能就是,特征过多导致的不可逆,我们可以删除一些次要的特征或者是使用正则化方法(后面会讲)来解决。

编程入门内容不再记录

参考文献

链接: Coursera Machine Learning.

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

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值