先放在这,实验中应该参考一下~~
在 AI科技大本营 公众号中看到 《戴文渊:机器学习教科书的 7 大经典问题》文章中写道:
1、神经网络层数问题 不宜超过三层
2、决策树层数问题 不能超过五层
3、特征值数量问题 不能超过一千
前三个问题随着数据量的增加而逐渐改变以往的观念
“Valiant引理,它可以理解为“模型复杂度(例如专家系统的规则数量)要和数据量成正比”。数据量越大,模型就越复杂”
4、集成学习问题——这个问题暂时还无法跟现实联系理解
“在工业界比较少会应用集成学习,主要是因为工业界绝大多数的场景都是资源受限,资源受限时最好的方式是想办法放进去更多的数据。集成学习因为跑更多的模型导致只能放更少的数据,通常这种效果都会变差。”
5、正负样本均采样到 1:1 问题 这个问题在实验时候会经常受到困扰!!!
“第五个叫做均衡采样,绝大多数的教科书都会讲到。它是指如果我们训练一个模型,正样本和负样本很不平均,比如在正样本和负样本1:100的情况下,就需要对正、负样本做均衡采样,把它变成1:1的比例,这样才是最好的。但其实这个结论不一定对,因为统计学习里最根本的一条原理就是训练场景和测试场景的分布要一样,所以这个结论只在一个场景下成立,那就是使用模型的场景中正、负样本是1:1,那这个结论就是对的。
正确的做法是,应用场景是1:100,那训练集合最好也是1:100。均衡采样不一定都是对的,多数情况下不采样反而才是正确的。因为大多时候,我们直接把训练集合和测试集合做随机拆分,或者按照时间拆分,二者的分布就是一致的,那个时候不采样是最好的。当然有时候,我们也会发现做负样本采样会有更好的效果,比如范式在为某股份制银行卡中心做交易反欺诈时,就做了负样本采样,那是因为当我们把所有样本都放进去后,发现计算资源不够,所以只能做采样。正样本与负样本大概是1:1000或者1:10000,如果对正样本做采样,损失信息量会比较大,所以我们选择对负样本采样,比如做1:1000的采样,再把负样本以1000的加权加回去。在资源受限时这么做,会尽可能降低信息量的损失。但如果仅仅是为了把它做均衡而做负样本采样,通常是不对的。和前面几个问题不同,负样本采样并不是因环境改变而结论变化,事实上就不应该做负样本采样。”
6、交叉验证是最好的验证方法
“交叉验证确实是一个还不错的验证的方法,但在现实应用场景下,它往往不是最合适的一种方式。因为通常来说,我们用机器学习做的事情是预测,绝大多数情况下我们是用现在或者过去的数据做一个模型来预测未来。而拿过去的训练预测未来的最好测试方法不是交叉验证,因为交叉验证是按照交易或者按人拆分的。最合适的是方法其实是按照时间拆分,比如评估的时候选取一个时间点,用在这个时间点之前的数据做训练,预测在这个时间点之后的,这是最接近真实应用场景的评估结果。
交叉验证可能只适用于和时间属性不相关的场景,比如人脸识别,但我们面临更多的应用场景,无论是风险、营销或者反欺诈,都是在用过去的数据训练后预测未来,最合适这样场景的评估方法不是交叉验证,而是按照时间去拆分。”
7、过拟合一定不好
“过拟合不一定是不好的,还是要看具体场景。如果这个场景是过去见过的情况比较多,新的情况比较少的时候,过拟合反倒是好的。实际上在我们的设计里面,很多时候我们会倾向于往过拟合靠一点,可能做新题会差一点,但是对于死记硬背的送分题会做的非常好。在拿过去预测未来的应用场景下,有的时候过拟合不一定不好,要根据实际情况来看。”
“今天与大家分享了教科书中的几个经典问题。其实在实际工业应用中,我们不会完全按照教科书中的方式去实践。我们也会设计很深的模型、很深的决策树、很多的特征、会过拟合一点,我们更强调按时间拆分,不强调均衡采样。面对教科书中的结论,我们需要学会的是根据实际场景做出相应灵活判断”