机器学习经验整理

1、开发集与测试集服从同一分布
开发集效果好,测试集效果不好,证明算法在开发集上过拟合。

2、开发集与测试集分布不同
开发集上过拟合;测试集上的数据分布不同,测试集表现的性质更难预测

3、确定数据集,建议开发集与测试集数据分布一致

4、开发集的数据样本数量能大到区分不同算法性能的提高,一般数据样本数量大于10000;互联网公司开发集数量比较大,因为涉及到指标微小提高影响利润和绩效;开发集不是越大越好,所占总数据集比例随着数据量的增大而降低,在比如我们拥有1000000,这么多的数据,训练集:验证集:测试集=98:1:1;在1000-10000的总数据样本的情况下,选择70%开发集和30%测试集。

5、用单值指标评估算法性能,如分类准确率;或用非单值指标如查准率(precision)和查全率(recall召回率)的F1_score或加权平均数对算法性能进行排序;
机器学习经验整理

6、设定N个满意度指标,需要在N-1个指标满足满意度阈值的情况下,优化第N个指标

7、开发集和测试集分布一致;不要在开发集上过拟合;间断去测试集上测试,但是不能从测试集上得到反馈并采取策略调整,避免测试集上过拟合;指标不能满足分类器的实际评比,及时修改指标。

8、误差分析:分析开发集的总体误差来源,包括开发集和测试集中的误分类标注、数据信息模糊导致的误标注等,先处理主要误差来源。
机器学习经验整理机器学习经验整理

9、将误差分析样本分为两个部分,一部分用手工观察修改,另一部分作为验证

10、
小结:基础误差分析
  • 当你开始一个新项目,尤其是在一个你不擅长领域时,很难正确猜测出最有前景的方向。
  • 所以,不要在一开始就试图设计和构建一个完美的系统。相反,应尽可能快(可能在短短几天内)地构建和训练一个基本系统。然后使用误差分析去帮助你识别出最有前景的方向,并据此不断迭代改进你的算法。
  • 通过手动检查约 100 个算法错误分类的开发集样本来执行误差分析,并计算主要的错误类别。用这些信息来确定优先修正哪种类型的错误。
  • 考虑将开发集分为人为检查的 Eyeball 开发集和非人为检查的 Blackbox 开发集。如果在 Eyeball 开发集上的性能比在 Blackbox 开发集上好很多,那么你已经过拟合 Eyeball 开发集,并且应该考虑为其获得更多的数据。
  • Eyeball 开发集应该足够大,以便于算法有足够多的错误分类样本供你分析。对很多应用来说,含有1000-10000个样本的 Blackbox 开发集已足够。
  • 如果你的开发集不够大到可以按照这种方式进行拆分,那么就使用 Eyeball 开发集来用于人工误差分析、模型选择和调超参。