维度灾难&&bias和variance

维度灾难

维度增多主要会带来高维空间数据稀疏化问题,

也就是说,数据会更加的分散,因而就需要更大的数据量才能获得较好的bias和variance,达到较好的预测效果。

此处,最典型的是对于KNN的预测。

更详细的见:怎样理解"curse of dimensionality"

另一方面看,当维度增加时,也可能导致过拟合现象:训练集上表现好,但是对新数据缺乏泛化能力。高维空间训练形成的分类器,相当于在低维空间的一个复杂的非线性分类器,这种分类器过多的强调了训练集的准确率甚至于对一些错误/异常的数据也进行了学习,而正确的数据却无法覆盖整个特征空间。因此,这样得到的分类器在对新数据进行预测时将会出现错误。

下图是随着维度(特征数量)的增加,分类器性能的描述:

但是如何避免维度灾难呢?

并没有固定的规则规定在分类问题中应该使用多少个特征,因为维度灾难问题和训练样本的数据有关。

事实上,避免维度灾难主要有两种方法:

  • 降维。可以是从原本维度中挑选一些维度,或是从原特征的基础上构造新特征
  • 交叉验证。

参见:机器学习中的维数灾难

bias与variance的权衡

上面既然提到了bias和variance,趁机就详细说一下

bias与variance到底是个什么鬼

解释1:

bias 偏差 :模型的期望(或平均)预测和正确值之间的差别

variance 方差 :模型之间的多个拟合预测之间的偏离程度

更多关于bias和variance的定义(包括概念定义,图形化定义,数学定义等)见:权衡偏差和方差

解释2:

也就是说,bias和variance分别从两个方面来描述了我们学习到的模型与真实模型之间的差距。

Bias是 “用所有可能的训练数据集训练出的所有模型的输出的平均值” 与 “真实模型”的输出值之间的差异;

Variance则是“不同的训练数据集训练出的模型”的输出值之间的差异。

 解释3:

首先 Error = Bias + Variance
Error反映的是整个模型的准确度,Bias反映的是模型在样本上的输出与真实值之间的误差,即模型本身的精准度,Variance反映的是模型每一次输出结果与模型输出期望之间的误差,即模型的稳定性。
更准确地讲ERROR分成3个部分:Error = Bias + Variance + Noise

而这两个与过拟合和欠拟合又有什么关系呢?

处理过拟合和欠拟合的过程就是关于处理bias和variance。模型复杂度越高,过拟合的风险就越大,bias就减小,但是variance就越高。如下图所示:

K折交叉验证中K的选择:当k偏小的时候,会导致bias偏高。当k偏大的时候,会导致variance偏高,通常把k控制在5~10的范围里。

bias-variance判断

  • 根据错误均值判断bias,如果错误均值很低,说明在这个数据集上,该模型准确度是可以的。 
  • 根据错误标准差来判断variance,如果错误标准差很高,说明该模型的泛化能力需要提高。

也就是说,一个好的模型,偏差越小越好,方差越小越好。

原文地址:https://www.cnblogs.com/Hyacinth-Yuan/p/8392610.html