Machine Learning Yearning1~14

1.测试数据尽量和要应用的数据分布吻合,这可能和训练数据分布不吻合;尽可能的使得dev 和 test sets的分布相同。
2.如果我们的算法要应用到特定的领域,dev和test sets的分布最好是相同的。
3. dev和test sets的大小要基于模型来定。通过dev和test sets评估不同模型的差异,如果模型差异越小,所需数据量越大。
4.确定一个单值的评价标准(比如accuracy)。如果一个评价标准有几个评价值,有时会很难确定一个明确的好的模型。比如,Precision和Recall。如果一定要通过Precision和Recall来评价,那么可以结合为一个值来评价,比如F1 score,或者进行平均,加权平均。
5.还有一种方法,先确定一个(或者剩余一个)评价标准的范围,在这个范围选取最好的另一个(剩余的那个)评价标准。
6.建立一个机器学习系统的过程为:

在这个过程中,需要dev set和评价标准来确定每个想法的优劣(使得实验向着正确的方向进行,哪个想法的提升明显),从而加快这个循环。
7.有时后,初始化的dev set和评价标准不适用了,这时候我们需要改变dev set和评价标准。主要有三个原因造成dev set和评价标准的不适用:a,实际应用的数据分布和dev set的分布不同;b,不断的使用同样的dev set评估模型,会导致模型在dev set上‘过拟合’。我们得根据情况更改dev set。不要使用测试集做任何决定(比如测试集效果不好,决定回滚模型)。否则测试集和dev set一样,可能导致‘过拟合’;c,根据需要更改评价标准。
8.训练集和测试集比例不一定是7:3,如果数据量多的化,测试集比列可以少于3成。
9. dev set数量要足够,一定要能够检测出模型的有意义的变化;测试数据也要足够的大,能够给我们的系统一个准确的评估。
10.如果是开发应用,不要一开始试图设计最完美的系统,相反的是,要快速的设计和训练一个基本的系统,因为检验系统的基本功能是有价值的,这样会找到值得投入时间的方向。这个和像发表学术论文是不同的。
11.如果有一个想法,需要个把月时间,可能会提高结果,那么我们是否需要投入时间?我们可以这么做:a,收集一些系统分错的样本;b,计算想要减少错分类别的错分比例。这个观察错分样本的过程叫做error analysis。如果这个类别错分的比例本身就很小,那么即使再提高,也不性价比也不高。但是如果这个类别错分比例较高的话,我们有理由相信提高这个类别的准确率能够对系统有较大的提升。所以说,一定要分析一下,目标是不是值得花费大的精力。

猜你喜欢

转载自blog.csdn.net/sunyao_123/article/details/80247357