李宏毅机器学习(1)

Regression

1.什么是Regression

Regression,有道词典翻译为拟合,就是构建一个函数,通过输入特征值,得到预测的结果。
举例说明:
①股市预测
②自动驾驶
③商品推荐
由此可见,Regression可以做很多东西,其主要功能还是预测。

Regression 的步骤

一个有趣的例子就是预测宝可梦进化后的CP(战斗力)值。问题可以描述为:

输入:宝可梦进化前的CP值,种类,属性,血量,重量,高度。
输出:宝可梦进化后的CP值。

Step 1 确定模型

模型的种类有很多,但最经典的还是多项式模型,其中最简单的就是线性模型。
这一题中用的就是多项式函数模型,不妨先认为进化前的cp值(x值)和进化后的cp值(y值)满足线性关系。

y=w·x+b

显然我们要求的就是w和b值。

Step 2 Goodness of Function

1、获取training data

为了让我们的函数走向正确的道路,我们还需要采集数据,形成training data set,引导函数参数的变化。

2、设计Loss Function

为了评价我们设计的function的好坏(goodness of function),还需要设计一个Loss Function,它将构建好的函数作为参数,输出一个数值。
Loss Function的值越小,则代表这个函数越好。
本题中,使用了最小二乘法的Loss function。
在这里插入图片描述

Step 3 找到最好的函数Best Function

1、什么是最好的函数

很显然,最好的函数就是预测最准的函数,即:令L(f)最小的函数。记为arg minL(f)。
在这里插入图片描述
尽管用线性代数就能解决这个问题,但为了后续更复杂问题的解决,要使用下面的方法。

2、Gradient Descent 梯度下降法

在本题中,函数比较简单,是普通多项式函数,且为liner function,直接给出Gradient Descent的步骤:

f ( x 1 , x 2 . . . x n ) f(x_1,x_2...x_n) f(x1,x2...xn) x 1 , x 2 . . x n x_1,x_2..x_n x1,x2..xn都可求微分
设计一个值 η > 0 η>0 η>0,称这个 η \eta ηlearning rate
随机的选择一个点 P 0 ( x 1 , x 2 . . . x n ) P_0(x_1,x_2...x_n) P0(x1,x2...xn)
每次通过迭代从 P m P_m Pm得到 P m + 1 P_{m+1} Pm+1 x 1 ′ = x 1 − η α L α x 1 ∣ P m x_{1}^{'}=x_1-η\frac{αL}{αx_1}|_{P_m} x1=x1ηαx1αLPm, x 2 ′ = x 2 − η α L α x 2 ∣ P m x_{2}^{'}=x_2-η\frac{αL}{αx_2}|_{P_m} x2=x2ηαx2αLPm x n ′ = x n − η α L α x n ∣ P m x_{n}^{'}=x_n-η\frac{αL}{αx_n}|_{P_m} xn=xnηαxnαLPm
经过多次迭代,得到global optimal(全局最优解)‘’

原理:因为这里的Loss Function L 是凸的,liner regression没有local optimal。
在这里插入图片描述
例子:

L ( f ) = L ( w , b ) = ∑ n = 1 10 ( y ^ n − ( b + w ⋅ x n , c p ) ) 2 L(f)=L(w,b)=\sum_{n=1}^{10} {(\widehat{y}_n-(b+w·x_{n,cp}))^2} L(f)=L(w,b)=n=110(y n(b+wxn,cp))2
α L α w = ∑ n = 1 10 2 ⋅ ( y ^ − ( b + w ⋅ x n , c p ) ) ( − x n , c p ) \frac{αL}{αw} = \sum_{n=1}^{10}2·(\widehat{y}-(b+w·x_{n,cp}))(-x_{n,cp}) αwαL=n=1102(y (b+wxn,cp))(xn,cp)
α L α b = ∑ n = 1 10 2 ⋅ ( y ^ − ( b + w ⋅ x n , c p ) ) ( − 1 ) \frac{αL}{αb} = \sum_{n=1}^{10}2·(\widehat{y}-(b+w·x_{n,cp}))(-1) αbαL=n=1102(y (b+wxn,cp))(1)
用10组数据作为Training Data,再用10组数据作为Testing Data

3.过拟合

上例中,函数 f ( ) f() f()为线性函数,称为一次型。则二次型为:

y = b + w 1 ⋅ x c p + w 2 ⋅ x c p 2 y=b+w_1·x_{cp}+w_2·x_{cp}^2 y=b+w1xcp+w2xcp2

效果更好了:
在这里插入图片描述
同样可以有三次型、四次型、n次型。
但次数太高了Average Error反而会更高,离正确答案更远了。
在这里插入图片描述
这就是过拟合Overfitting,这是因为:Training Data会有“噪音”,并不能完全反映真实情况。而模型越复杂,其能涵盖的范围就越广(如上图),而正确答案就是一个点。因此模型太复杂,反而容易偏离正确答案。
但有时怎么都拟合不好时候,要考虑是否有其他因素。
接着上例:

x s = s p e c i e s x_s=species xs=species o f of of x x x
重构模型为:
y = b 1 ⋅ δ ( x s = A ) + w 1 ⋅ δ ( x s = A ) + b 2 ⋅ δ ( x s = B ) + w 2 ⋅ δ ( x s = B ) y=b_1·δ(x_s=A)+w_1·δ(x_s=A)+b_2·δ(x_s=B)+w_2·δ(x_s=B) y=b1δ(xs=A)+w1δ(xs=A)+b2δ(xs=B)+w2δ(xs=B)
PS: δ ( x s = A ) = 1 ( i f x s = A ) = 0 ( o t h e r w i s e ) δ(x_s=A)=1(if x_s=A)=0(otherwise) δ(xs=A)=1(ifxs=A)=0(otherwise)

因为有“噪声”的存在,有时依旧不能考虑太多因素。

4.正则化

y = b + ∑ i w i ⋅ x i y=b+\sum_{i}{w_i·x_i} y=b+iwixi
L = ∑ n ( y ^ n − ( b + ∑ i w i ⋅ x i ) ) 2 + λ ∑ i ( w i ) 2 L=\sum_{n}{(\widehat{y}_n-(b+\sum_{i}{w_i·x_i}))}^2+λ\sum_{i}{(w_i)^2} L=n(y n(b+iwixi))2+λi(wi)2
λ ∑ i ( w i ) 2 λ\sum_{i}{(w_i)^2} λi(wi)2惩罚项,w越小越好,因为函数应该要平滑(smooth)

为什么平滑的函数更好?

要减少噪声对模型的影响,反之过拟合
因此λ要适中,不要不平滑,也不要太平滑

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值