分析朴素贝叶斯模型
朴素贝叶斯模型它简单的假设了各个数据之间是无关的,是一个被严重简化了的模型。所以,对于这样一个简单模型,大部分场合都会Bias部分大于Variance部分,也就是说高偏差而低方差。
方差与偏差
上一节中我们已经介绍过以下公式:
这里的Err大概可以理解为模型的预测错误率,由两部分组成的,一部分是由于模型太简单而带来的估计不准确的部分(Bias);另一部分是由于模型太复杂而带来的更大的变化空间和不确定性(Variance)。
Error反映的是整个模型的准确度,Bias反映的是模型在样本上的输出与真实值之间的误差,即模型本身的精准度,Variance反映的是模型每一次输出结果与模型输出期望之间的误差,即模型的稳定性。
举例说明:
举一个例子,一次打靶实验,目标是为了打到10环,但是实际上只打到了7环,那么这里面的Error就是3。具体分析打到7环的原因,可能有两方面:一是瞄准出了问题,比如实际上射击瞄准的是9环而不是10环(那么偏差为1);二是枪本身的稳定性有问题,虽然瞄准的是9环,但是只打到了7环(那么方差为2)。那么在上面一次射击实验中,Bias就是1,反应的是模型期望与真实目标的差距,而在这次试验中,由于Variance所带来的误差就是2,即虽然瞄准的是9环,但由于本身模型缺乏稳定性,造成了实际结果与模型期望之间的差距。
具体到K-fold Cross Validation的场景,其实是很好的理解的。首先看Variance的变化,还是举打靶的例子。假设我把抢瞄准在10环,虽然每一次射击都有偏差,但是这个偏差的方向是随机的,也就是有可能向上,也有可能向下。那么试验次数越多,应该上下的次数越接近,那么我们把所有射击的目标取一个平均值,也应该离中心更加接近。更加微观的分析,模型的预测值与期望产生较大偏差,在模型固定的情况下,原因还是出在数据上,比如说产生了某一些异常点。在最极端情况下,我们假设只有一个点是异常的,如果只训练一个模型,那么这个点会对整个模型带来影响,使得学习出的模型具有很大的variance。但是如果采用k-fold Cross Validation进行训练,只有1个模型会受到这个异常数据的影响,而其余k-1个模型都是正常的。在平均之后,这个异常数据的影响就大大减少了。相比之下,模型的bias是可以直接建模的,只需要保证模型在训练样本上训练误差最小就可以保证bias比较小,而要达到这个目的,就必须是用所有数据一起训练,才能达到模型的最优解。因此,k-fold Cross Validation的目标函数破坏了前面的情形,所以模型的Bias必然要会增大。
1.数据欠拟合会出现高偏差问题,由于模型过于简单,比如数据的趋势是二次函数,用一次函数取拟合会出现高的偏差。
2.数据过度的拟合会出现高方差问题,由于模型过于复杂,比如用10个数据特征去拟合3个数据会出现高的方差。
如何处理高偏差和高方差问题
高偏差:训练误差很大。训练误差与测试误差差距小,随着样本数据增多,训练误差增大。解决方法:
1.寻找更好的特征(具有代表性的)
2.用更多的特征(增大输入向量的维度)
高方差:过拟合,模型过于复杂,训练误差小,训练误差与测试误差差距大,可以通过增大样本集合来减小差距。随着样本数据增多,测试误差会减小。解决方案:
1.增大数据集合(使用更多的数据)
2.减少数据特征(减小数据维度)