【机器学习】笔记1:回归与误差分析


regression

ML(机器学习)三个步骤:

  1. 寻找model,model就是function set(函数簇)
  2. 评估function set中每个function好坏(即函数簇选择不同的参数构成不同的函数)
  3. 找一个最好的function(即最好的一组参数)

回归任务的输出是一个数值(scalar)

step 1:model

model(function set):
y = b + ∑ w i x i y=b+\sum w_{i} x_{i} y=b+wixi

  • w(weights) 和 b(bias) 是参数,取不同值则构成不同function

  • xi(ferture): an attribute of input x

step 2:Goodness of Function

  1. 定义model(function set)
  2. 收集training data:(x,y^)
  3. 定义Loss Function L : function 的 function,衡量model中的每一个function的好坏,越低越好。

​ 输入:一个function,输出:how bad it is
L ( f ) = L ( w , b ) = ∑ n = 1 10 ( y ^ n − ( b + w ∗ x c p n ) ) 2 \mathrm{L}(f)=\mathrm{L}(w, b) =\sum_{n=1}^{10}(\hat{y}^{n}-(b+w*x_{c p}^{n}))^{2} L(f)=L(w,b)=n=110(y^n(b+wxcpn))2
表示10个训练样本使用某个function(即某组w和b)的预测误差之和。

step 3:Best Function(Gradient Descent)

训练过程解决怎样从model(function set)中找到最佳的function,即如何找到最佳w,b

Pick the best function:
w ∗ , b ∗ = arg ⁡ min ⁡ w , b L ( w , b )   = arg ⁡ min ⁡ w , b ∑ n = 1 10 ( y ^ n − ( b + w ⋅ x c p n ) ) 2 w^{*}, b^{*} = \arg \min _{w, b} L(w, b) \ = \arg \min _{w, b} \sum_{n = 1}^{10}\left(\hat{y}^{n}-\left(b+w \cdot x_{c p}^{n}\right)\right)^{2} w,b=argw,bminL(w,b) =argw,bminn=110(y^n(b+wxcpn))2

gradient descent

  1. 选取最初的w0

  2. 计算当前位置梯度

  3. 更新参数

    参数更新速度取决于

    1.当前位置微分值大小,微分数值越大表示当前位置越陡峭,更新步幅更大;

    2.常数项(learning rate)

微分为负数,表示需要向右更新参数,需要增大w,又因微分为负,所以前面要有 “-” 号。

selecting another model

我们更关心的是model在testing data中的error。引入高次项,尝试选取更复杂的modle。

​ 低次式可以看做式高次式的子集,复杂的modle包含更多的function,所以对于同样的training data,复杂model error更低,拟合程度更高。但是复杂的model往往在testing data效果很差,即泛化能力很差,这种现象称为过拟合(overfitting)

back to step 1

考虑输入x的其他component,重新优化model

back to step 2 : Regularization

y = b + ∑ w i x i L = ∑ n ( y ^ n − ( b + ∑ w i x i ) ) 2 + λ ∑ ( w i ) 2 y=b+\sum w_{i} x_{i} \\ \\ L=\sum_{n}\left(\hat{y}^{n}-\left(b+\sum w_{i} x_{i}\right)\right)^{2}+\lambda \sum\left(w_{i}\right)^{2} y=b+wixiL=n(y^n(b+wixi))2+λ(wi)2

采用新的Loss Function,训练过程中我们追求更低的Loss。

  • ​ 前面一项为error,error越小代表function y越好;

  • 后面一项表示function的smooth程度,参数值w越小代表function越平滑也越好

为什么选择平滑的function?

y = b + ∑ w i x i y=b+\sum w_{i} x_{i} y=b+wixi

​ 当function y中参数值w越接近0,输出y随输入x的变化越不敏感,即该function越平滑。

​ 平滑的function输出对输入不敏感,test过程中不易受到输入x噪声影响,从而可以输出更好的结果。

测试结果

​ λ越大,代表Loss函数中考虑function smooth的那一项影响力越大,我们更多考虑的是w本身的值,而减少考虑error,所以对于training data将得到比较大的error,但在testing data上面适当平滑的function对噪声不敏感,反而得到更佳的结果。

​ 如何调节smooth程度,怎样选择λ?

误差来源

不同的model会得到不同的error,复杂model不一定error低

error来源:

  • bias:估测function偏离真实function的程度
  • variance(方差):同一个model不同training date得到多个预测function的松散程度

f ^ : 最 佳 ( 真 实 ) f u n c t i o n , 未 知 f ∗ : 一 次 实 验 根 据 t r a i n i n g   d a t e 所 得 到 的 f u n c t i o n f ∗ 是 f ^ 的 估 测 值 \hat{f}:最佳(真实)function,未知 \\f^{*}:一次实验根据training\ date所得到的function \\f^{*}是\hat{f}的估测值 f^:functionf:training datefunctionff^

Variance

不同training date 进行100次试验,发现简单model预测function接近,即variance小。复杂model预测function分散,variance大。

解释:越简单model对data的敏感程度越低。

Bias

同一model,不同training date 进行多次试验,得到很多预测function,再得到预测function的期望值。
E [ f ∗ ] = f ˉ E[f^{*}]=\bar{f} E[f]=fˉ
Bias定义:
B i a s : f ˉ 与 f ^ 的 接 近 程 度 Bias: \bar{f}与\hat{f}的接近程度 Bias:fˉf^

在这里插入图片描述

  • 黑色线为真实function
  • 红色为每次training的预测function
  • 蓝色为预测function的期望值

结果:

简单model虽然variance小,每次预测function都差不多,但是预测function的平均与真实function相差较大,即Bias很大。

复杂model虽然variance大,每次预测function差别很大,但是所有预测function的平均反而与真实function很接近,即Bias很小。

分析:

model即function set,简单model所包含function范围小,有可能不包含真实function,导致预测function的期望无法接近真实function,Bias很大;而越复杂的model所包含function范围越大,更容易sample出接近真实function的预测function,Bias小。

Bias VS variance

简单模型:Bias大,欠拟合(underfitting),甚至无法拟合training data

复杂模型:Varience大,过拟合(overfitting),training data error小,testing data error大

其实也很好理解

​ 简单模型非线性效果差,拟合效果差,很有可能根本就无法满足对task的拟合,从根本上就“瞄不准”真实function,导致选取不同training data训练得到的预测function都距离真实function很远,导致Bias很大。尽管模型简单,对training data敏感度差,针对不同的training data都能预测出类似的预测function,使得variance小。

​ 复杂模型的非线性能力就很强了,对于复杂的task,完全有能力“瞄准”task的真实function,多次对不同training data进行训练,得到不同的预测function都汇聚在真实function的周围。尽管复杂模型对training data敏感度强,针对不同的training data训练得到的每个预测function差别很大,即variance很大,但平均下来就很接近真实function了。

处理方法

1.bias大,欠拟合:

  • ​ 重新设计模型,输入x添加更多的feature
  • ​ 选择更复杂(高次)的model

2.variance大,过拟合:

  • ​ more data:training data更多,可以使得每次训练得到的预测function更加接近。假如进行100次训练,training data只有10个样本,每次选取10个不同的样本进行训练,得到100个预测function,它们每个差别都很大;但增加training data到100个样本,每次选取100个样本进行100次训练,这100个预测function就能够很接近。
  • ​ regularization:

使得模型能找到更平滑的function,LOSS function增加平滑模块,使得每个找到的预测function都更加平滑,所有曲线都集中在比较平滑的区域,更加汇聚,即variance变小。但人为改变了预测function,仅留下了平滑的部分,可能导致不包含真实function,Bias受损,这时候,调整平滑部分前面的weight就很重要了。

Modle Selection

我们想要bias和variance都很小的model

一个model训练后可能在自己的testing data效果还不错,但在真实应用场景可能很差,所以在training之后添加一个validation来验证不同模型的error,事先选择出error最小的model,之后再将这个模型应用于自己的testing data和真实应用场景,使得自己的testing data和真实应用场景的error差不多,及自己的testing performance 更能反映真实场景的performance。

将最初的training data分为training set和validation set:

  • training set: 训练model,使用不同的model分别train出最优的预测function
  • validation set:选model, 测试train出的不同的且最优的model在validation set中的performance

有时候我们使用训练完成的model对testing set进行测试,预测完成后,为了提升效果,再对model进行一些调整,使得model在testing set上拥有更好的效果。这实际上是人为地将testing set的 Bias考虑了进去,这样导致我们在testing set看到的performance没办法反映真实场景的performance。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值