机器学习简单流程:
1/使用大量和任务相关的数据集来训练模型;
2/通过模型在数据集上的误差不断迭代训练模型,得到对数据集拟合合理的模型;
3/将训练好调整好的模型应用到真实的场景中;
数据:
如果我们自己已经有了一个大的标注数据集,想要完成一个有监督模型的测试,那么通常使用均匀随机抽样的方式,将数据集划分为训练集、验证集、测试集,这三个集合不能有交集,三个集合符合同分布。
训练集,用来调试参数;
验证集,是模型训练过程中单独留出的样本集,它可以用于调整模型的超参数和用于对模型的能力进行初步评估。
测试集,用来评估模最终模型的泛化能力。但不能作为调参、选择特征等算法相关的选择的依据。
过程:
一、经验误差(训练误差)与泛化误差
经验误差(训练误差):模型在训练集上的误差称为“经验误差”(empirical error)或者“训练误差”“training error”。
泛化误差:模型在新样本集(测试集)上的误差称为“泛化误差”(generalization error)。
二、偏差与方差
泛化误差可分解为偏差、方差与噪声之和,即generalization error=bias2+variance+noise。
噪声:描述了在当前任务上任何学习算法所能达到的期望泛化误差的下界,即刻画了学习问题本身的难度。明显的无意义错误数据。假定期望噪声为零,则泛化误差可分解为偏差、方差之和,即generalization error=bias2+variance。
偏差:描述了模型的期望预测(模型的预测结果的期望)与真实结果的偏离程度。偏离程度越大,说明模型的拟合能力越差,此时造成欠拟合。
方差:描述了数据的扰动造成的模型性能的变化,即模型在不同数据集上的稳定程度。方差越大,说明模型的稳定程度越差。如果模型在训练集上拟合效果比较优秀,但是在测试集上拟合效果比较差劣,则方差较大,说明模型的稳定程度较差,出现这种现象可能是由于模型对训练集过拟合造成的。从数学角度看,可以理解为每个预测值与预测均值差的平方和的再求平均数。
简单的总结一下:偏差大,说明模型欠拟合;方差大,说明模型过拟合。如何平衡模型的偏差和方差,一直是我们追求的效果。感兴趣的童鞋,可以阅读《Understanding the Bias-Variance Tradeoff》。
下图可以帮助读者,更加直观的理解“偏差”与“方差”。
测试结果
过拟合:训练集表现的很优秀,测试集差别大。比如训练集是二哈,训练结果完全符合二哈特征;但是测试集是秋田,完全识别不出秋田是条狗。
欠拟合:训练集就不符合。例:训练集是二哈,二哈都不太符合。
恰好:既能跟训练数据拟合,又离完美拟合保持一定距离,模型更具通用性,用测试数据验证会发现准确度也不错。