zoukankan      html  css  js  c++  java
  • 维度灾难&&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,如果错误标准差很高,说明该模型的泛化能力需要提高。

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

  • 相关阅读:
    Ubuntu16.04下安装virtualbox,配置及卸载
    机器学习1-线性回归
    python中的数据结构-链表
    Numpy 对于矩阵的操作持续更新
    ubuntu16.04 下同时打开多个终端窗口
    matlab mashgrid 函数
    站立会议04
    站立会议03
    第一次冲刺--站立会议02
    第一次冲刺--站立会议01
  • 原文地址:https://www.cnblogs.com/Hyacinth-Yuan/p/8392610.html
Copyright © 2011-2022 走看看