线性回归

假设函数

hypothesis是指拟合的函数,表示为 hθ(x)=θTx h θ ( x ) = θ T x , 其中 θ=[θ0,θ1,,θn,] θ = [ θ 0 , θ 1 , ⋯ , θ n , ] , x=[x0,x1,,xn],x0=1 x = [ x 0 , x 1 , ⋯ , x n ] , x 0 = 1

hθ(x)=[θ0θ1...θn]x0x1xn=θTx h θ ( x ) = [ θ 0 θ 1 . . . θ n ] [ x 0 x 1 ⋮ x n ] = θ T x

这里需要注意的是,为了形式简洁,将 x0 x 0 放入向量中,并且赋值为1.

损失函数

定义线性回归的损失函数为:(均方误差)

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

对于线性回归,均方误差损失是一个凸函数,具有全局最小值。

优化方法

梯度下降法

这个比较常规

对于损失函数 J(θ) J ( θ ) , 对于每个 θj θ j ,进行更新:

repeat until converge:

θj=θjαθjJ(θ) θ j = θ j − α ∂ ∂ θ j J ( θ )

这里需要注意的是,所有的 θj θ j 同时更新的,也就是上式中的 θ θ 向量都采用同一个向量,直到下次更新。

对于线性回归的损失函数而言,上面的式子可以进一步写为:

θj=θjα[1mmi=1(hθ(x(i))y(i))x(i)j],(j=0,1,2,,,n) θ j = θ j − α [ 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) ] , ( j = 0 , 1 , 2 , , ⋯ , n )

由于上式中,对所有样本进行了求和,即涉及 了所有样本,因此这种梯度下降法又称为“Batch gradient decent”

Normal Equation

这个方法就是梯度等于零,直接求解。但是使用了向量形式。对于线性迭代推导如下:

假定有m个样本,样本feature个数为n,那么可以定义:

x(i)=x(i)0x(i)1x(i)n x ( i ) = [ x 0 ( i ) x 1 ( i ) ⋮ x n ( i ) ] , θ=θ0θ1θn θ = [ θ 0 θ 1 ⋮ θ n ] , y=y0y1ym y = [ y 0 y 1 ⋮ y m ]

可以看到 x(i)Rn+1,θRn+1,yRm x ( i ) ∈ R n + 1 , θ ∈ R n + 1 , y ∈ R m ,定义:

X=(x(1))T(x(2))T(x(m))T X = [ ( x ( 1 ) ) T ( x ( 2 ) ) T ⋮ ( x ( m ) ) T ] , XRm×(n+1) X ∈ R m × ( n + 1 )

由损失函数定义可以得到其向量形式为:

J(θ)=12m(Xθy)T(Xθy)=12m(θTXTXθ2yTXθ+yTy) J ( θ ) = 1 2 m ( X θ − y ) T ( X θ − y ) = 1 2 m ( θ T X T X θ − 2 y T X θ + y T y )

因此求导得:
θJ(θ)=12m(2XTXθ2XTy) ∂ ∂ θ J ( θ ) = 1 2 m ( 2 X T X θ − 2 X T y )

如果 XTX X T X 可逆,得到 θ=(XTX)1XTy θ = ( X T X ) − 1 X T y 。这个方法称为Normal Equation。

在使用Octave计算时,上式可以写为:pinv(X'*X)*X'*y

使用Normal Equation时,不需要考虑feature scaling.

与梯度下降法相比如下:

Gradient DescentNormal Equation
Need to choose alphaNo need to choose alpha
Needs many iterationsNo need to iterate
O(kn2) O ( k n 2 ) O(n3) O ( n 3 ) , need to calculate inverse of XTX X T X
Works well when n is largeSlow if n is very large

从他们的时间复杂度可以看出,当n比较大时,用梯度下降法时间上更有优势。这里的大,吴恩达给出的建议是,当n < 10000时,可以考虑Normal Equation,当n >10000时,使用梯度下降更好。

不可逆

XTX X T X 不可逆时,称为singular 或 degenerate, 可能是由于两个原因:

  • 有线性相关的feature
  • feature 太多,使得 mn m ≤ n

解决办法是删除一些feature或者使用正则化方法。

在Octave中,有两个求逆函数qinv inv ,使用qinv 会在 XTX X T X 不可逆返回其逆矩阵,其中涉及一些数学操作。

过拟合和正则化

欠拟合(under-fitting, high bias):模型没有很好地捕捉数据特征,不能很好地拟合数据

过拟合(over-fitting, high varience) :

过拟合的表现:对于训练集,预测非常准确,对于新数据预测很差,也就是泛化能力差(generalize)。

如何避免过拟合,有两种方式:

  • 减少特征维度,有两种方法:

    • 手动选择特征
    • 通过模型选择

    缺点:损失了部分信息

  • 正则化(regularization):保留所有特征,但是减小参数 θ θ 的值,对于具有很多特征,每个特征都对预测值有贡献的问题,有很好的效果。

正则化是一种避免过拟合的手段,其思想是通过在损失函数中添加参数“惩罚”,控制参数幅度,限制参数搜索空间。从而达到以下目的:

  • 简化预测函数(hypothesis) hθ(x) h θ ( x )
  • 减小过拟合倾向

正则化后,损失函数可以写为下式:可以看到这里的正则化项从1开始,没有对 θ0 θ 0 进行约束。在实际操作时,加上 θ0 θ 0 对结果的影响也很小。

J(θ)=12m[i=1m(hθ(x(i))y(i))2+λj=1nθ2j] J ( θ ) = 1 2 m [ ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 + λ ∑ j = 1 n θ j 2 ]

这将损失函数分成了两个部分:拟合训练集、减小参数值。这两部分的权重通过 λ λ 来调节,因此如何挑选合适的 λ λ 也是十分重要的,有相关算法后续会介绍。

梯度下降法

正则化后,如果使用梯度下降法进行迭代有以下迭代公式:

θ0=θ0αmmi=1(hθ(x(i))y(i))x(i)0 θ 0 = θ 0 − α m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x 0 ( i )

θj=θjα[1mmi=1(hθ(x(i))y(i))x(i)j+λmθj],(j=1,2,,,n) θ j = θ j − α [ 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) + λ m θ j ] , ( j = 1 , 2 , , ⋯ , n )

可以写成:

θj=(1αλm)θjα[1mmi=1(hθ(x(i))y(i))x(i)j],(j=1,2,,,n) θ j = ( 1 − α λ m ) θ j − α [ 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) ] , ( j = 1 , 2 , , ⋯ , n )

其中, (1αλm)<1 ( 1 − α λ m ) < 1 ,因此可以将上式理解成:首先将 θj θ j 缩小一点,然后按照正常的梯度下降法进行处理。这样就可以保证 θj θ j 不会太大,从而减小了overfitting 的可能。

Normal Equation

当含有L2正则化项后,损失函数的向量形式可以写为:

J(θ)=12m(Xθy)T(Xθy)+λ2mθTLθ=12m(θTXTXθ2yTXθ+yTy+λLθ) J ( θ ) = 1 2 m ( X θ − y ) T ( X θ − y ) + λ 2 m θ T L θ = 1 2 m ( θ T X T X θ − 2 y T X θ + y T y + λ L θ )

因此求导得:
θJ(θ)=12m(2XTXθ2XTy+2λLθ) ∂ ∂ θ J ( θ ) = 1 2 m ( 2 X T X θ − 2 X T y + 2 λ L θ )

如果 XTX+λL X T X + λ L 可逆,得到 θ=(XTX+λL)1XTy θ = ( X T X + λ L ) − 1 X T y

注意,由于不需要对 θ0 θ 0 进行正则化,因此,

L=000...0010...0001...0000...1 L = [ 0 0 0 . . . 0 0 1 0 . . . 0 0 0 1 . . . 0 ⋮ ⋮ ⋮ ⋮ ⋮ 0 0 0 . . . 1 ]

正则化后还有一个好处:当 XTX X T X 不可逆时,通过加上 λL λ L XTX+λL X T X + λ L 一般是可逆的。

技巧

技巧1:feature scaling

确保所有的属性值都在同一个量级上,梯度下降法会更快收敛。

一般使得每个属性大概满足 xi[1.1] x i ∈ [ − 1.1 ] ,距离此范围不大的可以不用处理。

处理方法有:

  • 除以最大值

  • mean normalization:

    xi x i 替换为 xiμi x i − μ i 或者 xiμisi x i − μ i s i ,使得属性值的均值大约为0.(不对 x0 x 0 进行处理),其中, μi μ i 为均值, si=maxmin s i = m a x − m i n 或标准差。

注意:如果使用了scaling技巧,那么在预测时,同样需要对样本值进行相同的处理

技巧2:判断收敛和选择步长

通过画 J(θ) J ( θ ) 随迭代次数的图来判断,正常应该是逐渐下降的。如果逐渐上升,应该减小步长。但是步长太小就会导致收敛太慢。

吴恩达给出的选择步长的方法是:从小到大试,首先确定太小的和太大的,然后从这之间按照3倍关系试,例如可以选择0.001,0.003,0.01,0.03,0.1,0.3,1,这个序列。

属性选择和多项式回归

可以有很多方式来改进假设函数,例如

  • 属性选择(feature choice)

    有时会面对很多属性,不一定按照原属性进行拟合,而是应该根据实际情况对属性进行一些处理或计算。

    比如可以将两个属性相乘得到新属性

  • 多项式回归(polynomial regression)

    假设函数可能不是线性的,这时只需要构造新属性,然后在这个属性上进行拟合即可。例如拟合 hθ(x)=θ0+θ1x1+θ2x21+θ3x31 h θ ( x ) = θ 0 + θ 1 x 1 + θ 2 x 1 2 + θ 3 x 1 3 , 构造 x1=x1,x2=(x1)2,x3=(x1)3 x 1 = x 1 , x 2 = ( x 1 ) 2 , x 3 = ( x 1 ) 3 即可。这时,就需要注意feature scaling的问题了

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值