之前看过很多次的方差与偏差的定义但是总是忘记,还是写下来更好一点
- 如何判断模型对数据的拟合程度
- 出现欠拟合,过拟合等情况,我们应该如何进行修改。
第一个问题:
偏差与方差的直观理解
偏差:就是偏离的意思,与“标准”之间的差距。
方差:是离散程度,波动程度的意识。
图1,2的偏差都比较小(都能在靶心的范围内),但是图1的方差更小(数据集中),而图2则方差更大(数据发散)。
图3,4的偏差都比较大(已经脱离了靶心位置)
从机器学习方面来说
偏差:反映的是模型的拟合能力,度量了预测与真实结果的偏离程度,偏差大有可能是欠拟合,也可能是过拟合。如果是欠拟合则训练集与测试集的loss都大(偏差都大),假如是过拟合,则训练集loss小(偏差小),测试集的loss大(偏差大)
**
**
方差:反映的是模型的泛化能力,也可以理解成模型的抗数据扰动的影响,度量的是从训练集训练得到模型在测试集上的性能变化,方差大就意味则过拟合。
在机器学习中评价模型通常用代价函数J JJ,Jtrain J_{train}J train 表示训练的误差,Jval J_{val}J val表示验证时误差,通过Jtrain J_{train}J train、Jval J_{val}J val可以得出模型的偏差与方差情况。高偏差对应着Jtrain J_{train}J
train、Jval J_{val}Jval都大,并且Jtrain J_{train}Jtrain约等于Jval J_{val}J val ,这意味着欠拟合。高方差对应着Jtrain J_{train}J
train 较小,而Jval J_{val}J val 远大于Jtrain J_{train}J
train ,这意味着过拟合。
当模型属于高偏差(欠拟合)时,不断增大训练的数据规模,模型性能不会有什么改善,因为欠拟合一般是模型比较简单,不能准确描述数据的特征,因此盲目增大数据量是没什么用。
当模型数据高方差(过拟合),不断增大训练数据模型,过拟合误差会逐渐减少,因为过拟合是因为模型复杂,描述数据的特征过于精准,所以增大数据量能减少过拟合。
总结
改进策略:
- 高方差:采集更多样本数据
- 高方差:减少特征数量,去除非主要特征
- 高方差:增加正则化参数
- 高偏差:引入更多的相关特征
- 高偏差:采用更高阶多项式
- 高偏差:减少正则化参数