交叉验证是最好的测试方法
一个问题叫做交叉验证,是指假设要将一份数据拆分成训练集和测试集,这个时候怎么评估出它的误差?交叉验证是把集合拆成五份,取四份做训练集、一份做测试集,并且每次选择不同的那一份做测试级,最后测出五个结果再做平均,这被认为是最好的测试方法。
交叉验证确实是一个还不错的验证的方法,但在现实应用场景下,它往往不是最合适的一种方式。因为通常来说,我们用机器学习做的事情是预测,绝大多数情况下我们是用现在或者过去的数据做一个模型来预测未来。而拿过去的训练预测未来的最好测试方法不是交叉验证,因为交叉验证是按照交易或者按人拆分的。最合适的是方法其实是按照时间拆分,比如评估的时候选取一个时间点,用在这个时间点之前的数据做训练,预测在这个时间点之后的,这是最接近真实应用场景的评估结果。
交叉验证可能只适用于和时间属性不相关的场景,比如人脸识别,但我们面临更多的应用场景,无论是风险、营销或者反欺诈,都是在用过去的数据训练后预测未来,最合适这样场景的评估方法不是交叉验证,而是按照时间去拆分。