再谈Bias-Variance Tradeoff

我们知道,监督式学习算法通常是从数据中学习出来一个模型。假如输入数据是X,输出数据是Y,学习的过程就是找出尽量接近转换函数f的的过程,使得f(X)=Y。

影响机器学习准确度的3种误差包括:

  • Bias Error(偏差)
  • Variance Error(方差)
  • Irreducible Error(不可消除的误差或随机误差)

我们在这里不讨论第三种误差,因为它可能是由于我们所不知道的因素引入的,所以我们无法消除它(但这并不影响我们尽量去接近真实的转换函数)。

偏差(bias

偏差是机器学习中一个很重要的概念,不同的人对它有着不同的解释。尽管在本质上这些不同的解释有着相同的意思,但是它们也会给初学者造成理解上的困难。我本人认为下面的解释比较容易理解:

Wikipedia的解释:偏差是学习算法中错误的假设所带来的误差。另外一个比较权威的机器学习网站EliteDataScience说偏差是由于学习算法无法从数据中学习发现真正的特征信号。业内一位知名的学者把偏差解释成“算法习惯性地从数据中学习错误的信息,而忽略了数据中更加全面有用的信息而造成的误差”。

这就好比人类社会中普遍存在的偏见一样(在英文中偏见和偏差的单词都是bias)。如果社会对某个群组存在偏见,那么他们就不能真正地了解这个群组,而是错误的给他们打上一个错误的标签。

线性回归算法就是一个这样的例子,它比较容易理解,但是在学习数据中的真正有效特征时没有足够的灵活性,所以在复杂的数据集面前准确率较低。

方差(variance)

方差是算法由于对训练数据过于敏感而造成的误差。过高的方差容易使算法学习过多噪音中的特征,而不是真正的数据特征。例如,一个数据集中名字叫“Alex”的人大多数是囚犯,而另外一个数据集中叫“Alex”的人大多数是大学生,我们凭生活经验知道名字和一个人的职业或者社会角色没有直接关系,所以如果算法把名字用来进行学习和预测,就会出现很大的方差误差。

偏差和方差之间的权衡(Bias-Variance Tradeoff)

沿用上面的例子,如果你的模型一看到Alex这个名字就得出结论这个人一定很出色,那么你的模型就是过于简单,也是一个“高偏差低方差”的问题;你发现问题后想修复这个问题,于是这个Alex对应的人群在你的新模型中被分为几个不同的小组:罪犯、大学生、运动员和艺术家。这样又把模型变得过于复杂。所以,你需要一个折中的模型,这就是偏差和方差之间权衡的的意思。下面是一些通用的方法 -

如果你的模型有很高的方差误差:

  1. 尽量扩大训练数据集
  2. 适度减少特征个数
  3. 适度提高lambda值(lambda值越高,你的模型越简单;lambda值越低,你的模型越复杂)

如果你的模型有很高的偏差误差:

  1. 适度增加特征个数
  2. 尝试增加多项式特征(polynomial features)
  3. 适度降低lambda值

猜你喜欢

转载自www.cnblogs.com/jointech/p/12977979.html