西瓜书+实战+吴恩达机器学习(二)机器学习基础(偏差、方差、调试模型技巧)
如果这篇文章对你有一点小小的帮助,请给个关注,点个赞喔,我会非常开心的~
0. 前言
泛化误差可分解为偏差、方差、噪声之和。
- 偏差:度量了学习算法的期望预测与真实结果的偏离程度
- 方差:度量了同样大小的数据集的变动所导致的学习性能的变化
- 噪声:表达了在当前任务上任何学习算法所能达到的期望泛化误差下界
- 泛化性能:由学习算法的能力、数据的充分性、学习任务本身难度所共同决定的
与偏差方差所对应的是欠拟合和过拟合。
- 欠拟合:偏差主导了泛化错误率,学习器的拟合能力不够强,不能学习到数据的普遍特性
- 过拟合:方差主导了泛化错误率,学习器的拟合能力过于强,甚至学习了一些数据的个性
泛化误差与偏差、方差的关系如下图所示(图源:机器学习):
1. 偏差方差的解决方法
偏差,是指模型不能很好的学习到数据的普遍特性,所谓欠拟合:
- 使用更好的优化算法
- 增加特征数量
- 搜索更好的超参数
- 使用不同的算法架构
方差,是指模型过于好的学习了数据,甚至学习了一些数据的个性,所谓过拟合:
- 更多的训练数据
- 使用正则化
- 减少特征数量
- 搜索更好的超参数
- 使用不同的算法架构
贝叶斯最佳误差和训练集误差的差距,等效为偏差。
训练集误差和开发集误差的差距,等效为方差。
2. 高偏差高方差的学习曲线
横坐标为训练集大小,纵坐标为错误分类率或者代价函数。
在高偏差的情况下如下图所示(图源:吴恩达机器学习):
在高偏差的情况下如下图所示(图源:吴恩达机器学习):
3. 调试模型技巧
- 降低训练集上的代价函数,如果不能有效的降低,考虑是偏差原因
- 降低开发集上的代价函数,如果不能有效的降低,考虑是方差原因
- 降低测试集上的代价函数,如果不能有效的降低,考虑可能是开发集太小和测试集不匹配,使用更大的开发集
- 使其在真实世界中表现良好,如果不能有效的表现,考虑可能是开发集或测试集设置选择的不正确,或者代价函数不能有效的评估误差
对于特征不同的维度取值相差很远,可以采用特征缩放,即归一化,有助于训练。
如果这篇文章对你有一点小小的帮助,请给个关注,点个赞喔,我会非常开心的~