【ShareAi】机器学习 —— Where Error does come from?

Where Error does come from?

Error主要是由bias偏置和variance方差形成,可以理解为Error=bias+variance

  • Error:反映模型的准确度
  • Bias:反映模型在样本上的输出与真实值之间的误差,即模型本身的精准度
  • Variance:反映模型每一次输出结果与模型输出期望之间的误差,即模型的稳定性

根据上图可以看出,以打靶为例,bias描述精准度,当bias较小时,说明该射击手基本打在靶心附近,精确度很高,当bias较大时则说明靶点可能偏离靶心,即射击手所获得环数较小;Variance描述稳定性,当Variance值较小时,说明打出的所有点聚集在一起,反之则分散开来,呈零散状态

评估bias和Variance

  • Estimate the mean of a variable x

    • 定义x的均值为\(\mu\),x的方差为\(\sigma^2\)
  • 接下来如何评估均值\(\mu\)

    • 首先我们进行采样N个点:{\(x^1, x^2, x^3, ..., x^N\)}

    • 然后计算平均值m:m=\(\frac{1}{N}\sum_nx_n\),需要注意的是m \(\neq\) \(\mu\),因为只采样N个点而不是无穷多个

    • 接下来计算期望值:E[m] = \(\frac{1}{N}\sum_nE[x_n] = \mu\)

    • m分布对于\(\mu\)的离散程度(方差):Var[m] = \(\frac{\sigma^2}{N}\)

      由此可见,\(\mu\)的离散程度(方差)取决于N,N越小越离散

  • 如何评估方差\(\sigma^2\)

    • 同样地,我们进行采样N个点:{\(x^1, x^2, x^3, ..., x^N\)}

    • 平均值:m=\(\frac{1}{N}\sum_nx_n\)

    • \(\sigma^2\)的估测值:\(s^2 = \frac{1}{N}\sum_n(x^n-m)^2\)

    • \(s^2\)的期望值:E[\(s^2\)] = \(\frac{N-1}{N}\sigma^2 \neq \sigma^2\)

Variance

每次不同实验数据集在同一个Model获得的Function可能不一样

假设在Parallel Universes中,抓到不同的神奇宝贝

我们可以看到,在Universe123和Universe345的function是不一样的,即不同training data上\(f^*\)是不同的

假如我们有100个Parallel Universes(使用100个不同训练集做实验),那会是怎么样呢?

使用比较简单的Model时,Variance值是比较小;但随着模型变得越来越复杂,比如function为一元五次方程时,其Variance值变大。即简单Model受到不同的数据集的影响比较小

Bias

简单Model的bias比较大,而复杂Model的bias则比较小。一个Model包含很多function,而简单model的space小,可能其并没有包含target,若从数据集中sample,平均起来不可能接近target;复杂model的space大,可能包含target,则其平均值在target附近

Bias VS Variance

由图可以看出,比较简单model的bias比较大而variance值比较小,复杂model的bias比较小而variance值比较大且其值变化比bias要大

Error = Bias + Variance

Underfitting(欠拟合):bias比较大

  • 可以用更多特征作为输入
  • 构建更复杂的模型

Overfitting(过拟合):variance比较大

  • 增加数据集
  • 引入正则化处理

模型选择

在bias和variance之间平衡值大小,以选择最好的model,使得error可以达到最小值

交叉验证

将训练集以一定比例划分为训练集和验证集,使用训练集训练模型,然后用验证集比较模型的性能指标,选出较好的一个模型,再用原所有训练集训练该模型,最后使用测试集对模型进行测试

N折交叉验证

  • 假设三折交叉验证,将训练集分成3份,其中两份作为训练集,一份作验证集,用来训练所有model,得到每个model的误差(性能指标)
  • 然后交换训练集和验证集,继续训练和验证model,待训练完后求解每个model的平均error,选择误差最小的作为较好的model,然后再使用所有训练集训练该model
  • 最后再将model用于测试集的测试中
posted @ 2022-01-14 21:11  .ivan  阅读(27)  评论(0编辑  收藏  举报